Techfirm Cloud Architect Blog

テックファーム株式会社クラウドインフラグループのブログ

Amazon SESでメール送信ログをS3へ保存する方法(Kinesis Data Firehoseを経由してS3に保存)

はじめに

以前、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
※他項目についてはデフォルトのまま Firehoseストリームの作成

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のメール保存に関する内容を記載しました。実案件でもメールログの保管が要件上、必要となるケースも多いと思いますのでご参考になればと思います。