SES のバウンスと苦情の通知を Slack へ転送する「ses-feedback-to-slack」を公開しました
メール配信で見落としたくないのは、バウンス(送信失敗)と苦情(Complaint)です。 放置すると送信レピュテーションに影響しますが、AWS のコンソールを定期的に見に行く運用は続きにくいものです。 SES の通知を 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 | テストフレームワーク |
SAM CLI を使うため、デプロイ前にローカルで実行して動作を確かめられます。
通知する対象
バウンスと苦情以外の通知はエラーになり、Slack には送られません。 対応が必要な2種類だけに絞ることを意図した挙動です。
設定
開発環境では .env.sample.json をコピーして .env.json を作り、Webhook URL と SHOW_RAW_JSON の2つを設定します。
{
"Parameters": {
"SLACK_WEBHOOK_URL": "https://hooks.slack.com/services/XXXX/YYYY/ZZZZ",
"SHOW_RAW_JSON": "false"
}
}
SHOW_RAW_JSON を true にすると、SES から受け取った JSON をそのまま追加で出力します。
通知の中身を調べるときに使います。
本番環境では template.sample.yaml から template.yaml を作り、同じ2つの値を設定します。