Amazon Athena で Amazon SES のメール送信ログを表示してみる
この記事はFIXER Advent Calendar 2023( FIXER Advent Calendar 2023 - Adventar ) 12月15日の記事です。
Amazon SESから送信したメールのログを Amazon Athena から検索して表示してみたので、やったことを自分の備忘録として書いていきます。(細かい手順や設定は省きます)
構成イメージ
![image](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/%5Bdate%3Acustom%3AY%5D/%5Bdate%3Acustom%3Am%5D/%5Bdate%3Acustom%3Ad%5D/articleimages/2023-12-15-aws-ses-athena-mail-log-query-001.png)
構築
Amazon S3
SESのログ保管用とAthenaのクエリ結果保存用に2つ用意します。
- SESログ保管用
- Athenaクエリ結果保存用
Amazon Kinesis Data Firehose
先ほど作成したS3を指定し、動的パーティションを有効にします。
!{partitionKeyFromQuery:eventType}/d=!{partitionKeyFromQuery:timestamp}
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/%5Bdate%3Acustom%3AY%5D/%5Bdate%3Acustom%3Am%5D/%5Bdate%3Acustom%3Ad%5D/articleimages/2023-12-15-aws-ses-athena-mail-log-query-005_2.png)
Amazon Athena
クエリ結果を保存するS3を設定します。
![athena-s3](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/%5Bdate%3Acustom%3AY%5D/%5Bdate%3Acustom%3Am%5D/%5Bdate%3Acustom%3Ad%5D/articleimages/2023-12-15-aws-ses-athena-mail-log-query-006_4.png)
データベースを作成します。
CREATE DATABASE sesdbtest
![athena-db-create](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/%5Bdate%3Acustom%3AY%5D/%5Bdate%3Acustom%3Am%5D/%5Bdate%3Acustom%3Ad%5D/articleimages/2023-12-15-aws-ses-athena-mail-log-query-007_6.png)
テーブルを作成します。
CREATE EXTERNAL TABLE sesdbtest.delivery (
~以下略~
![athena-table-creat](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/%5Bdate%3Acustom%3AY%5D/%5Bdate%3Acustom%3Am%5D/%5Bdate%3Acustom%3Ad%5D/articleimages/2023-12-15-aws-ses-athena-mail-log-query-008_0.png)
Amazon SES
適当に用意します。設定セットにてFirehoseへログを流す設定を組み立てます。その後、検証済みのIDに設定セットを割り当てるか、メール送信テストから一時的に設定セットを割り当ててメール送信した際のログがFirehoseからS3に保管されることを確認します。
動作確認(ログ検索)
Athenaからクエリを叩いてログを検索します。ログが正常に表示されてることが分かります。
![](https://prtechblogfd-crhzb5g6hkhqafdm.z01.azurefd.net/drupalimages/%5Bdate%3Acustom%3AY%5D/%5Bdate%3Acustom%3Am%5D/%5Bdate%3Acustom%3Ad%5D/articleimages/2023-12-15-aws-ses-athena-mail-log-query-010.png)
最後に
勉強がてら作ってみました。
本当はMicrosoft Fabricから可視化までやるつもりでしたが、それはまた今度に書くことにします。