はじめに
以前、Amazon EC2上のPostfixからAmazon SESを経由してメールを送信するにてメール送信する記事を書きましたが、今回はこれに加えてSESのメール送信ログをFirehoseを経由してS3へ保存する方法について記載したいと思います。
前提
本記事は以下の前提で記載します。
- 前回記事に記載されているSES設定は設定済み
- メールログを保管するS3バケットは作成・設定済み
Firehose ストリームを作成
AWSマネジメントコンソール上でAmazon Data Firehose > Firehose ストリーム
へ遷移しFirehose ストリームを作成
をクリックします。
作成画面で以下を入力してFirehose ストリームを作成
をクリックします。
ソース:Direct PUT
送信先:Amazon S3
Firehoseストリーム名:ストリーム名を入力
S3バケット:保存先のS3バケットを指定
S3バケットとS3エラー出力プレフィックスタイムゾーン:Asia/Tokyo
※他項目についてはデフォルトのまま
IAMロールの作成
次のSES設定セット作成で必要となる、SESからFirehoseへレコードをPutするためのIAMロールを作成しておきます。
許可ポリシーには以下を登録します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:ap-northeast-1:<AWSアカウント番号>:deliverystream/<Firehose ストリーム名>" } ] }
信頼関係(信頼されたエンティティ)は以下になります。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
SES 設定セットの作成
AWSマネジメントコンソール上でAmazon SES > 設定:設定セット
へ遷移しセットの作成
をクリックします。
作成画面で以下を入力してセットの作成
をクリックします。
設定セット名:ここでは例としてconfiguration-set-name
※他項目についてはデフォルトのまま
次に作成した設定セットの画面(Amazon SES > 設定:設定セット > 作成した設定セット名)からイベント送信先
タブにある送信先の追加
をクリックします。
下図のように開封数とクリック数以外のイベントタイプにチェックを入れます。
送信先タイプ:Amazon Kinesis Data Firehose
名前:ここでは例としてdestination-firehose
配信ストリーム: 前手順で作成したFirehoseストリーム
IAMロール: 前手順で作成したIAMロール
次のレビュー
の画面で問題なければ送信先の追加
をクリックします。
デフォルト設定セットの設定
最後にAWSマネジメントコンソール上でAmazon SES > 設定:ID > <ID名>
へ遷移し設定セット
のタブを開き編集
ボタンから前手順で作成した設定セットを割り当てます。
後は実際にSESからメールを送信してみて、S3バケットにメール送信ログが格納されることを確認してください。
おわりに
今回はSESのメール保存に関する内容を記載しました。実案件でもメールログの保管が要件上、必要となるケースも多いと思いますのでご参考になればと思います。