見出し画像

【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 を利用します。

  1. SNS トピックを作成

  2. SES コンソールで「バウンス」「苦情」の通知先としてそのトピックを設定

  3. 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 構築ガイド シリーズ一覧



では
また!


いいなと思ったら応援しよう!