こんにちは。 SRE2課の島村です。
最近、気温が下がってきて寒くなってきましたね。
乾燥もしてきたので、外出する際はのど飴を欠かさず出かけています。
さて、今回はAmazon SESを使ってメール送信した際に送信ログ方法を紹介します。
実はAmazon SESでメールを送信した際に、Amazon SESだけではメールの送信履歴を
記録することができません。
Amazon Kinesis Data FirehoseとAmazon Elasticsearch Serviceと組み合わせて使用することでメールの送信履歴を記録することができます。
今回のブログではAmazon SESでメール送信履歴を記録するまでのセットアップ手順を紹介していきます。
前提
・Amazon SESでドメインをセットアップし、メールを送信できるようにしておく。
以下のドキュメントが参考になると思います。
・S3バケットを適当に1つ作成しておく。
Kinesis Data Firehoseで配送に失敗した場合のログをS3に格納するため、専用のものを作成しておきます。
名前は任意で構いません。
Amazon Elasticsearch Serviceのセットアップ
ドメインの作成
Amazon Elasticsearch Serviceのコンソールへ移動します。
[新しいドメインの作成]を選択してください。
デプロイタイプとバージョンの選択画面が表示されます。
今回はテストなので、[開発環境およびテスト]を選択し、バージョンは最新のものにしましょう。
ドメインの設定を行います。
[Elasticsearch ドメイン名]、[インスタンスタイプ ]、[ストレージサイズ]は任意で設定しましょう。
その他の設定項目はデフォルトの設定で問題ありません。
入力が終わったら[次へ]を押します。
アクセスとセキュリティの設定画面です。
今回設定するのは[ネットワーク構成]と[アクセスポリシー]の2つです。
その他はデフォルトで問題ありません。
ネットワーク構成は[パブリックアクセス]を選択してください。
今回はVPC内からのアクセスではないためです。
アクセスポリシーは[カスタムアクセスポリシー]を選択してください。
使用するIAM Role、もしくはアクセスするグローバルIPアドレスを指定します。
今回はどちらも選択しています。
入力が完了したら[次へ]を選択し、最後に設定内容を確認したら作成を押してください
Elasticsearch Serviceのインスタンスが作成されます。
10分程度かかるのでその間に必要な設定をしていきましょう。
Amazon Kinesis Data Firehoseのセットアップ
配信ストリームの作成
Kinesis DataFirehoseの配信ストリームを作成していきます。 Kinesisコンソールへ移動し、Kinesis DataFirehoseを選択してください。
設定画面に進んでいきます。
[Delivery stream name]は任意で設定してください。
データソースは[Direct PUT or other sources]を選択します。
他はデフォルトのまま[次へ]を押します。
Step2では特に設定するものはないので、そのまま[次へ]を押します。
ストリームの配信先を選択します。
今回は[Amazon Elasticsearch]を選択してください。
Elasticsearchのドメイン作成が完了している場合は作成されたものを選択してください。
作成が完了できていない場合は少し待ちましょう。
[Index]は[logs-ses]としています。
Elasticsearchへ配送するレコードのバックアップ設定を指定します。
今回は配送に失敗した場合のみを記録するようにします。
ここで指定するS3バケットは事前に作成したものを指定してください。
専用の[IAM Role]を作成しましょう。
既存のIAM Roleも選択することが可能なので状況に応じて選択してください。
あとは設定を確認して、設定を完了しましょう。
Amazon SES
Configuration Sets設定
Configuration Setsを設定していきます。
Configuration SetsはEメールにルールを適用できる設定です。
イベントの発行だったり、送信に使うIPアドレスのプールを設定することが可能です。
イベント発行の場合、E メールの送信、配信、開封、クリック、バウンス、苦情イベントを
追跡し、 Amazon Kinesis Data Analyticsで分析することが可能です。
詳細については以下のドキュメントを参照ください。
まずは、Amazon SESコンソールへ移動します。
右ペインから、[Configuration Sets]を選択します。
ポップアップウィンドウが表示されます。
[Configuration Sets]の名を任意で入力し、作成してください。
イベント送信先をKinesis Firehoseに設定します。
イベント送信先を決定するとイベント内容に関するポップアップが表示されます。任意で名前を入力し、取得したいイベントにチェックをつけましょう。配信先は先ほど作成したKinesis DataFirehoseのストリームで、IAM Roleは新規で作成します。
Configuration Sets設定はこれで完了です。
テストメールの送信
ログを確認する前にテストメールを送信します。Amazon SESコンソールへ移動し、[Domains]から送信に使用するドメインを選択します。選択後、[Send a Test Email]を押しましょう。
今回はメールヘッダーにConfiguration Sets固有のヘッダーを付与する必要があるため、[Raw形式]を選択します。
例文を記載しておきます。
X-SES-CONFIGURATION-SET: [Configuration Sets名] subject: test これはテスト送信です。
入力が完了したら送信しましょう。
バウンスのイベントも対象にしている方は、以下にメールを送信することでバウンスのシュミレーションを行うことが可能です。宛先を指定して同様のメールを送信してみてください。
bounce@simulator.amazonses.com
送信ログの確認
メールの送信が完了したので、ログを確認したいと思います。
Elasticserch ServiceコンソールからkibanaへログインするためのURLが表示されています。ここからログインが可能です。
ログインできたら、[Explorer my own]を選択しましょう。
[Discover]を選択しましょう。
インデックスパターンを作成します。
今回はlogs-ses*と入力します。
タイムスタンプとして使用する項目を選択します。[mail.timestamp]を選択し、インデックスパターンを作成してください。
左上のアイコンから、コンソールトップへ戻り、再度Discoverを押すとログが表示されます。
最後に
Amazon SESの送信ログを取得することができました。
Amazon SESの送信に関してのトラブルシューティングに活用できればと思います。
島村 輝 (Shimamura Hikaru) 記事一覧はコチラ
最近ECS周りをキャッチアップ中。趣味は車・バイク全般。
一応、AWS12冠です。