【IT】Amazon SES 構築ガイド(3)|運用監視(CloudWatch / SNS / IAM)
皆さま
こんにちは
今回で Amazon SES 構築ガイドシリーズ(全3回) の最終回です。
ここでは、本番運用に欠かせない 運用監視の仕組み について解説します。
※前回は、第2回は、AmazonSESのサンドボックス解除と本番申請を行いました。
1. なぜ監視が必要か?
Amazon SES は高い到達率を誇りますが、使い方を誤ると以下のようなリスクがあります:
バウンス(配信失敗)が増えると、送信制限やアカウント凍結の可能性
苦情(コンプレイン)が多発すると、信頼スコアが低下し到達率が悪化
IAM 設定が不十分だと、誤操作や権限濫用によるセキュリティリスク
👉 本番運用では メール送信の健全性を継続的に監視する仕組み が不可欠です。
2. CloudWatch でメトリクス監視
SES は自動的に CloudWatch にメトリクスを送信 します。
代表的な監視項目:
Send(送信数)
Delivery(配信成功数)
Bounce(バウンス数)
Complaint(苦情数)
💡 CloudWatch ダッシュボードを作成しておくと、異常が一目で分かります。
例:バウンス率(Bounce ÷ Send)が 5% を超えたら要注意。
3. SNS 通知の設定
バウンスや苦情イベントをリアルタイムで受け取るには、Amazon SNS を利用します。
SNS トピックを作成
SES コンソールで「バウンス」「苦情」の通知先としてそのトピックを設定
SNS トピックに Eメール購読を追加(小規模運用なら管理者への通知メールで十分)
👉 少人数向け通知であれば、管理者メールに直接飛ばすだけでも有効です。
大規模なら Lambda 経由でDBや監視ツールに記録するとよいでしょう。
4. IAM での権限管理
SES 利用に必要な権限は、IAM ユーザー/ロールに付与します。
`AmazonSESFullAccess` は便利だが広すぎる
実運用では 送信専用ポリシー を作成し、最小権限を付与する
django-sesの場合は、"ses:GetSendQuota"と"ses:GetSendStatistics"と追加
例:送信専用ポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail",
"ses:GetSendQuota",
"ses:GetSendStatistics"
],
"Resource": "*"
}
]
}
👉 管理者とアプリケーションの権限を分離することがベストプラクティスです。5. テスト送信で確認
本番前には SES コンソールからの簡単テスト送信 で挙動を確認しましょう。
Gmail に送信して、ヘッダーで spf=pass / dkim=pass / dmarc=pass を確認
Bounce/Complaint をシナリオ送信で発生させ、SNS通知が届くかチェック
6. 運用チェックリスト
CloudWatch ダッシュボードで送信状況を可視化
SNS 通知でバウンス/苦情をリアルタイム監視
IAM 権限を最小限に設定(送信専用ポリシーを作成)
Gmail ヘッダーで SPF/DKIM/DMARC = pass を確認
バウンス/苦情が届いた場合に再送を抑止する仕組みを実装
7. まとめ
Amazon SES を安全に本番運用するには:
CloudWatch で定量的に把握
SNS でリアルタイムに通知
IAM で権限を最小限に制御
この3つを揃えることで、安定したメール配信基盤を長期運用できます。
📖 Amazon SES 構築ガイド シリーズ一覧
(3)Amazon SES 構築ガイド(3)|運用監視(CloudWatch / SNS / IAM)(この記事)
では
また!
