0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS備忘】Amazon SESのメール送信ログをS3に保存《いれ》る

Posted at

1.目的

Amazon SESのメール送信ログをS3に保存《いれ》る

2.利用するAWSサービス

Amazon SES
Amazon Data Firehose
IAM
S3

3.構築

※SESは設定完了している前提

3.1.S3の作成

ログ格納先のS3バケットを作成する
特別なアクセス許可などの設定は必要なし

3.2.Amazon Data Firehose ストリームの作成

Amazon Data Firehose>Firehoseストリーム>Firehoseストリームを作成へ遷移する
画像赤枠について入力する
ソース:Direct PUT
送信先:Amazon S3
Firehoseストリーム名:任意のストリーム名
送信先の設定:作成したログを格納したいS3バケット
S3 バケットと S3 エラー出力プレフィックスタイムゾーン:Asia/Tokyo
image.png
image.png

3.3.SES設定セットで利用するIAMロールの作成

IAMロール、IAMポリシーを作成する

IAMポリシー:json

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "firehose:PutRecord",
                "firehose:PutRecordBatch"
            ],
            "Resource": "【上記で作成したFirehoseストリームのarn】"
        }
    ]
}

IAMロール:信頼されたエンティティ(デフォルトで存在しなかったのでカスタム)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

image.png
image.png

3.4.SES設定セットの作成

Amazon SES>設定セット>セットの作成から設定セットを作成する
image.png

Amazon SES>設定セット>作成した設定セット>イベント送信先からイベント送信先を追加する
image.png

イベントタイプは開封数とクリック数以外チェックをつける
image.png

送信先の指定は以下のように設定する
送信先タイプ:Amazon Kinesis Data Firehose
名前:任意
配信ストリーム:作成したFirehoseストリーム
IAMロール:作成したIAMロール
image.png
image.png

3.5.デフォルト設定セットの設定

Amazon SES>設定:ID>ログを取りたいID>設定セット>デフォルト設定セットの編集からデフォルト設定セットを設定する
デフォルト設定セットの割り当て:チェック
デフォルト設定セット:作成した設定セット

image.png

4.動作確認

テストメールを送信してみる

テストメールが届き

S3を確認すると、送信ログが格納されている
image.png

ログ内容

{"eventType":"Delivery","mail":{"timestamp":"2025","source":"【送信元メールアドレス】","sourceArn":"【SESarn】","sendingAccountId":"【AWSアカウントID】","messageId":"【メッセージID】","destination":["【送信先メールアドレス】"],"headersTruncated":false,"headers":[{"name":"From","value":"【送信元メールアドレス】"},{"name":"To","value":"【送信先メールアドレス】"},{"name":"Subject","value":"【件名】"},{"name":"MIME-Version","value":"1.0"},{"name":"Content-Type","value":"multipart/alternative;  boundary=\"----=_Part_41179\""}],"commonHeaders":{"from":["【送信元メールアドレス】"],"to":["【送信先メールアドレス】"],"messageId":"【メッセージID】","subject":"【件名】"},"tags":{"ses:source-tls-version":["TLSv1.3"],"ses:operation":["SendEmail"],"ses:configuration-set":["【設定セット名】"],"ses:outgoing-tls-version":["TLSv1.3"],"ses:source-ip":["【送信元IP】"],"ses:from-domain":["【送信元ドメイン】"],"ses:caller-identity":["【呼び出し元ID】"],"ses:outgoing-ip":["【送信IPアドレス】"]}},"delivery":{"timestamp":"2025Z","processingTimeMillis":870,"recipients":["【送信先メールアドレス】"],"smtpResponse":"250 2.6.0 <【メッセージID】@ap-northeast-1.amazonses.com> [InternalId=785, Hostname=OSOM] 14475 bytes in 0.048, 293.052 KB/sec Queued mail for delivery","remoteMtaIp":"【受信サーバーIP】","reportingMTA":"【送信サーバー名】"}}

{"eventType":"Send","mail":{"timestamp":"202Z","source":"【送信元メールアドレス】","sourceArn":"【SESarn】","sendingAccountId":"【AWSアカウントID】","messageId":"【メッセージID】","destination":["【送信先メールアドレス】"],"headersTruncated":false,"headers":[{"name":"From","value":"【送信元メールアドレス】"},{"name":"To","value":"【送信先メールアドレス】"},{"name":"Subject","value":"【件名】"},{"name":"MIME-Version","value":"1.0"},{"name":"Content-Type","value":"multipart/alternative;  boundary=\"----=_Part""}],"commonHeaders":{"from":["【送信元メールアドレス】"],"to":["【送信先メールアドレス】"],"messageId":"【メッセージID】","subject":"【件名】"},"tags":{"ses:source-tls-version":["TLSv1.3"],"ses:operation":["SendEmail"],"ses:configuration-set":["【設定セット名】"],"ses:source-ip":["【送信元IP】"],"ses:from-domain":["【送信元ドメイン】"],"ses:caller-identity":["【呼び出し元ID】"]}},"send":{}}



ログのイベントについて

sendイベント
メールが送信されたことを示す
送信時刻、送信元、宛先、メッセージIDなどを含む

Deliveryイベント
メールが正常に配信されたことを示す
配信時刻、処理時間、SMTPレスポンス、受信サーバーのIPアドレスなどの詳細を含む

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?