SES のバウンス・苦情通知を Slack へ転送する「ses-feedback-to-slack」を公開しました
メール配信で見落としたくないのは、バウンス(送信失敗)と苦情(Complaint)です。放置すると送信レピュテーションに影響しますが、AWS のコンソールを定期的に見に行く運用は続きません。Slack に流し込む Lambda 関数を公開しました。
- リポジトリ: phrase-llc/ses-feedback-to-slack
- ライセンス: MIT
何をするツールか
SES の通知を SNS 経由で受け取り、バウンスと苦情を判別して Slack の Incoming Webhook に送信します。
構成は次のとおりです。
| 技術 | 用途 |
|---|---|
| AWS Lambda (Ruby) | メイン処理ロジック |
| AWS SNS | SES の通知中継 |
| Slack Incoming Webhook | 通知送信先 |
| AWS SAM | デプロイ・ローカル実行・テスト |
| test-unit + mocha | テストフレームワーク |
対象を絞っている
バウンスと苦情以外の通知はエラーになり、通知されません。 何でも流して Slack を賑やかにするのではなく、対応が必要な2種類だけを確実に届けることを意図した挙動です。
調査時には環境変数 SHOW_RAW_JSON を true にすると、SES から受け取った JSON をそのまま追加で出力できます。
設定
開発環境では .env.sample.json をコピーして .env.json を作り、Webhook URL を設定します。
{
"Parameters": {
"SLACK_WEBHOOK_URL": "https://hooks.slack.com/services/XXXX/YYYY/ZZZZ",
"SHOW_RAW_JSON": "false"
}
}
本番環境では template.sample.yaml から template.yaml を作り、同じ2つの値を設定します。
SAM CLI を使うため、デプロイ前にローカルで実行して動作を確かめられます。テストは test-unit と mocha で書いてあります。