SESの送信履歴を確認したい
このページについて
Amazon SESは、デフォルトではメールの送信履歴を確認することができません。
今回、Amazon SESの送信履歴を確認できるように Amazon Kinesis Data Firehose + Amazon S3
構成を設定してみました。
設定の流れをメモしておきます。
OpenSearch ServiceではなくS3を採用
AWSドキュメントには以下のサポートページがあり、 Amazon Kinesis Data Firehose + Amazon OpenSearch Service
で構成することが記載されています。
しかし、OpenSearch Serviceの料金が高く、今回は不採用としています。
解決方法
Amazon OpenSearch Service と Amazon Kinesis を使用して、Amazon SES 送信履歴を保存および表示できます。
OpenSearch Serviceの構成にすると、利便性(可読性)は良いですが、一方でコストがかかるので、とりあえずログを出しておきたい用途だけであれば、S3に出力しておくだけでも十分かと思います。
構成
設定概要
- 送信履歴保管用S3バケット作成
- 送信履歴転送用Firehose配信ストリーム作成
- SES Configuration Sets用IAMロール作成
- SES Configuration Sets設定
- S3で確認
送信履歴保管用S3バケット作成
特にポイントはありません。
必要な設定でS3バケットを作成してください。
送信履歴転送用Firehose配信ストリーム作成
DestinationをS3にするだけで、基本的にはデフォルト設定でOKです。
設定項目 | 内容 |
---|---|
Source | Direct PUT |
Destination | Amazon S3 |
S3 bucket | 作成したS3バケットを指定 |
S3 bucket prefix | - |
S3 bucket error output prefix | error/{firehose:error-output-type}/ |
error-output-type
は、失敗の理由に応じて、次の文字列のいずれかとして評価されるため、これだけ設定しておきます。
- processing-failed
- AmazonOpenSearchService-failed
- splunk-failed
- format-conversion-failed
- http-endpoint-failed
SES Configuration Sets用IAMロール作成
IAMポリシー
ポリシードキュメント
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "0",
"Effect": "Allow",
"Action": "firehose:ListDeliveryStreams",
"Resource": "*"
},
{
"Sid": "1",
"Effect": "Allow",
"Action": "firehose:*",
"Resource": "arn:aws:firehose:*:{accountid}:deliverystream/{deliverystream_name}"
}
]
}
IAMロール
アタッチするポリシー: 上記作成するIAMポリシー
信頼されたエンティティ
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"ses.amazonaws.com"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"AWS:SourceAccount": "{accountid}",
"AWS:SourceArn": "arn:aws:ses:ap-northeast-1:{accountid}:configuration-set/{configurationset_name}"
}
}
}
]
}
SES Configuration Sets設定
SES Configuration Setを作成し、Destinationとして以下を設定する。
[SESコンソール]→[作成したSES Configration Set]→[Event destinations]の Add destination
から設定していく。
Event typesについては、今回は全て選択しています。
- Sends
- Rendering failures
- Rejects
- Deliveries
- Hard bounces
- Complaints
- Delivery delays
- Subscriptions
- Opens
- Clicks
Destination Type
は、上記作成したFirehose配信ストリームを選択し、IAMロールに上記作成したSES Configuration Sets用IAMロールを設定します。
設定完了したら、そのSES Configuration Setを、該当SES identityのDefault configuration setに設定します。
S3で確認
SESからテストメールしてみて、S3にSESの送信履歴が入ってくることを確認できればOKです。
以下のようなJSONが入ります。
{
"eventType": "Delivery",
"mail": {
"timestamp": "2022-07-26T04:20:30.136Z",
"source": "aaa@bbb.com",
"sourceArn": "arn:aws:ses:ap-northeast-1:{accountid}:identity/bbb.com",
"sendingAccountId": "{accountid}",
"messageId": "0106018238bc2338-965619e3-c059-4dae-a52d-2e6cd435c974-000000",
"destination": [
"xxx@xxx"
],
"headersTruncated": false,
"headers": [
{
"name": "Date",
"value": "Tue, 26 Jul 2022 04:20:30 +0000 (UTC)"
},
{
"name": "From",
"value": "aaa@bbb.com"
},
{
"name": "To",
"value": "xxx@zzz"
},
{
"name": "Message-ID",
"value": "<268354222.10805.1658809230082@68756d9cfa11>"
},
{
"name": "Subject",
"value": "XXXXXXX"
},
{
"name": "MIME-Version",
"value": "1.0"
},
{
"name": "Content-Type",
"value": "multipart/mixed; boundary=\"----=_Part_10803_1198066364.1658809230080\""
}
],
"commonHeaders": {
"from": [
"aaa@bbb.com"
],
"date": "Tue, 26 Jul 2022 04:20:30 +0000 (UTC)",
"to": [
"xxx@zzz"
],
"messageId": "XXXXXX-965619e3-c059-4dae-a52d-2e6cd435c974-000000",
"subject": "XXXXXXXXXXX"
},
"tags": {
"ses:operation": [
"SendRawEmail"
],
"ses:configuration-set": [
"{configurationset_name}"
],
"ses:source-ip": [
"xx.xx.xx.xx"
],
"ses:from-domain": [
"bbb.com"
],
"ses:caller-identity": [
"xxx"
],
"ses:outgoing-ip": [
"xx.xx.xx.xx"
]
}
},
"delivery": {
"timestamp": "2022-07-26T04:20:33.705Z",
"processingTimeMillis": 3569,
"recipients": [
"xxx@zzz"
],
"smtpResponse": "250 2.6.0 <0106018238bc2338-965619e3-c059-4dae-a52d-2e6cd435c974-000000@ap-northeast-1.amazonses.com> [InternalId=7473243098079, Hostname=xxx] 17068 bytes in 0.146, 113.697 KB/sec Queued mail for delivery",
"reportingMTA": "e234-51.smtp-out.ap-northeast-1.amazonses.com"
}
}
Discussion