将Amazon SES送信历史日志输出到S3
工作上收到了需要将Amazon SES送信历史日志输出到S3,在使用Amazon SES发送电子邮件时,经常会遇到发送失败的情况。为了调查这些问题,我们希望能够将发送失败的SES日志集中存储到S3中,方便调查查看日志也是最好的方法。
流程图
实现步骤
1. 创建S3存储桶
首先,我们需要创建一个用于保存SES日志的S3存储桶。
从AWS控制台进入S3,点击“创建存储桶”。
输入存储桶名称(例如: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}/)。
服务访问权限如果你不懂如何自己创建角色,默认官方的即可。
设置完成后,点击“创建 Firehose 流”。
3. 创建SES配置集
现在,我们需要创建一个SES配置集,用于将SES发送日志发送到Kinesis。
进入Amazon SES > 配置集,点击“创建配置集”。
输入一个合适的配置集名称,并保存。
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角色
6. 测试日志是否保存到S3
在Amazon SES中选择“已验证身份的标识”并选择您要测试的域名,然后点击“发送测试邮件”。
配置测试邮件的相关信息,包括发件人地址、主题、正文和之前创建的配置集。
最后,点击“发送测试邮件”。
如果在S3存储桶(例如:seslogs-test)中看到日志文件,则说明配置成功!
7. 将配置集与要收集日志的域名关联
最后,在Amazon SES中选择“已验证身份的标识” > 您的域名 > 配置集,“编辑”并选择之前创建的配置集,保存设置。
至此,SES日志将会成功保存到S3中。
这些是一些繁琐的配置步骤,但一旦设置完成,就能够方便地收集SES日志了!