将Amazon SES送信历史日志输出到S3
将Amazon SES送信历史日志输出到S3

将Amazon SES送信历史日志输出到S3

内容纲要

将Amazon SES送信历史日志输出到S3

工作上收到了需要将Amazon SES送信历史日志输出到S3,在使用Amazon SES发送电子邮件时,经常会遇到发送失败的情况。为了调查这些问题,我们希望能够将发送失败的SES日志集中存储到S3中,方便调查查看日志也是最好的方法。

流程图

2024-02-21-14.25.05.png

实现步骤

1. 创建S3存储桶

首先,我们需要创建一个用于保存SES日志的S3存储桶。

从AWS控制台进入S3,点击“创建存储桶”。
s3.console.png

输入存储桶名称(例如:seslogs-test),其他选项根据需要选择,然后点击“创建存储桶”即可。

2. 创建Kinesis流

接下来,我们需要创建一个Kinesis流,用于将SES日志数据从SES发送到S3。

进入Amazon Data Firehose> Firehose 流,输入下面的内容并点击“创建 Firehose 流”。

根据需要选择相应的选项:

  • 源:Direct PUT
  • 目标:Amazon S3
  • Firehose 流名称:PUT-S3-GtfhI

选择之前创建的S3存储桶作为目的地,并设置S3存储桶前缀以便根据日期分隔日志文件(例如:seslogs/!{timestamp:yyyy}-!{timestamp:MM}-!{timestamp:dd}/)。

kfs-1.png

服务访问权限如果你不懂如何自己创建角色,默认官方的即可。
设置完成后,点击“创建 Firehose 流”。

3. 创建SES配置集

现在,我们需要创建一个SES配置集,用于将SES发送日志发送到Kinesis。

进入Amazon SES > 配置集,点击“创建配置集”。
2024-02-21-23.16.03.png
iShot_2024-02-21_23.25.08.png

输入一个合适的配置集名称,并保存。

4. 创建SES配置集的角色

在IAM中创建一个角色,用于允许SES将日志发送到Kinesis。

进入IAM > 角色,点击“创建角色”。

设置信任关系,指定SES服务为信任的实体,并设置自定义信任策略。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceAccount": "xxxxxxxxxxx",
                    "AWS:SourceArn": "arn:aws:ses:ap-northeast-1:xxxxxxxxxxx:configuration-set/seslohs-test"
                }
            }
        }
    ]
}

请将上述JSON中的ap-northeast-1替换为您的SES区域,xxxxxxxxxxx替换为您的AWS账户ID,seslohs-test替换为您之前创建的SES配置集的名称。

创建角色后,为角色添加以下内联策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "firehose:PutRecordBatch"
            ],
            "Resource": [
                "arn:aws:firehose:ap-northeast-1:xxxxxxxxxxxx:deliverystream/PUT-S3-GtfhI"
            ]
        }
    ]
}

请将上述JSON中的ap-northeast-1替换为您的Kinesis区域,xxxxxxxxxxxx替换为您的AWS账户ID,PUT-S3-GtfhI替换为您之前创建的Kinesis配送流的名称。

5. 配置SES配置集的事件和目标

回到Amazon SES > 配置集 > 您之前创建的配置集,选择“事件目的地”并点击“添加目的地”。

设置触发事件和发送日志的目标。例如,我们设置为仅在邮件发送失败时发送日志。

  • 目标类型:Amazon Kinesis Data Firehose
  • 名称:BounceEvent_ToKinesis
  • 送达流:选择之前创建的UT-S3-GtfhI送达流
  • 身份验证和访问管理(IAM)角色:选择之前创建的IAM角色

完成配置后,点击“下一步”并预览设置,然后保存配置。
2024-02-23-22.32.44.png
2024-02-23-22.34.44.png

6. 测试日志是否保存到S3

在Amazon SES中选择“已验证身份的标识”并选择您要测试的域名,然后点击“发送测试邮件”。

配置测试邮件的相关信息,包括发件人地址、主题、正文和之前创建的配置集。

最后,点击“发送测试邮件”。

如果在S3存储桶(例如:seslogs-test)中看到日志文件,则说明配置成功!

7. 将配置集与要收集日志的域名关联

最后,在Amazon SES中选择“已验证身份的标识” > 您的域名 > 配置集,“编辑”并选择之前创建的配置集,保存设置。

至此,SES日志将会成功保存到S3中。

这些是一些繁琐的配置步骤,但一旦设置完成,就能够方便地收集SES日志了!

参考

SESの送信履歴を確認したい

AmazonSESのログをS3へ出力する

Amazon SESの送信ログをS3バケットに保存する設定をCloudFormationでサクッと作る

SESのメール送信履歴をOpenSearch Serviceで表示してみた

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注