Open4
SESのメール送信に関するログを見たい!

概要
背景
- AWSで運用をする中で、SESで送信されたメールがユーザーに届いていないという問い合わせが時々発生していた。特にCognitoと連携して送信するようなメール。
- CloudTrailでは送信結果やエラー内容などを見ることができないため、原因不明で迷宮入りしてしまうケースがあった。
- SESのメール送信に関するログを見るためには「SESイベント発行」というオプションがあるらしい。
SES イベント発行
SES イベント発行とは?
- 定義した特性に基づいてE メール送信イベントを CloudWatch、Data Firehose、Pinpoint、または SNSに発行するようにSES を設定できる機能。
- 送信、配信、オープン、クリック、バウンス、苦情、拒否、レンダリングの失敗、配信遅延など、さまざまな種類の E メール送信イベントを追跡できる。
ユースケース
- CloudWatchE メールキャンペーンのパフォーマンスを追跡するダッシュボードを作成
- SNS を使用して特定のイベントが発生したときにメールやSlackに通知を送信する
- Data Firehoseを使ってS3にログを保存する
- 今回は運用時の調査が目的なので、Data Firehoseを使ってS3にログを保存するケースが合致しそう。

料金
形式の変換の料金: JSON から Parquet または ORC への変換 (オプション)
0.5 KB のレコードサイズ (500 バイト) = 0.5 KB (5 KB の増分はなし)最初の 500 TB/月の料金 = 0.13 USD/GB
取り込みで請求される GB = (100 レコード/秒 × 0.5 KB/レコード) / 1,048,576 KB/GB × 30 日/月 × 86,400 秒/日 = 123.59 GB
月間の取り込み料金 = 123.59 GB × 0.13 USD/GB = 16.06 USD
データ形式の変換は、データインジェストにオプションのアドオンで、コストの計算には取り込みで請求された GB を使用します。取り込み GB あたりの料金変換= 0.018 USD
月間の形式変換料金 = 1,235.96 GB * 0.018 USD/GB 変換 = 22.25 USD

設計
要件
- SESの送信ログを保存し、詳細情報を後から確認することができる。
- ログの保存形式
- Raw Data (JSON, TXT, CSV, バイナリなど), Apache Parquet, Apache ORC (Optimized Row Columnar)から選択可
- 調査フロー
- 全てのメールから対象メールを特定する
- 一日のメール送信件数:
- メールの種類:
- 対象メールの内容を確認する
- 見やすい形式が良い
- JSONよりはAthenaでORCもしくはParquetデータを検索する?
- 見やすい形式が良い
- 全てのメールから対象メールを特定する
- ファイルの保存形式
- JSON(SESのデフォルト形式)もしくは
- 料金
- データをORCかParquetに変換すると追加料金が発生する
- S3動的パーティショニング
構成
- SES (設定セット) + Data Firehose + S3
参考

動的パーティショニング
参考