はじめに
AWS-SESって使ってますか?
簡単にメール送信サービスを作成することはできるが、
やれ東京リージョンにはないわ、サンドボックスになってるわと中々にめんどくさい子です。
特にバウンスメール(送信失敗)や迷惑メール扱いされることをAWSは嫌っており、
下手にバウンスメールを大量に送信してしまうと、最悪AWS使用停止すらありえます。
そうならないように、きちんとハンドリングする必要があるわけです。
今回やること
SESのバウンスをハンドリングして、Lambdaまでデータを送ります。
そこまでやっちゃえば、あとはLambdaでよしなにできますからね。
図にすると、こんな感じです。
図にするとスゴク=シンプル!
Lambdaの設定
送信される順番の逆側から設定する必要があるので、まずはLambdaを作成します。
といっても、普通に作るだけなんで詳細は省略します。
今回はハンドリングするだけなので、コードも以下の通りです(Python3.7で作成)
import json
def lambda_handler(event, context):
print(event)
print(context)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
はい、初期のHello from Lambdaにeventとcontextを出力するようにしただけです。
SNSの設定
SESを作成予定のリージョンと同じリージョンを選択し、新規にトピックを作成します。
名前を任意に入力して作成します
作成されたSNSトピックを選択しサブスクリクションを作成します。
プロトコルでLambdaを選択し、作成したLambdaをエンドポイントに設定します。あとはデフォルトで問題ありません。
以上です。簡単ですね!
SESの設定
SNSを作成したリージョンと同じリージョンで、新規にSESを作成します。
画像にある「Verify a New Email Address」選択するとメールアドレスを入力するポップアップが表示されます。
SESで送信したいメールアドレスを入力してください。確認メールが届くのでメール本文にあるURLをクリックすることで使用できるようになります。
作成されたSESトピックを選択し、Notificationsの「Edit Configuratiuon」を選択します。
すると下のような図が表示されます。
Bouncesを選択すると、作成したSNSを選択できるはずなので選択肢て保存します。
設定は以上です。
実際にやってみた
「Send a Test Email」から「bounce@simulator.amazonses.com」を送信するとバウンスメールのテストができます。
CloudWatchから、作成したLambdaのログを確認して、上記のメールアドレスをハンドリングできたら処理は正常です。
あとはLambdaでよしなに処理していただければと。
おわりに
やってみるとすこぶる簡単なんですが(ポチポチするだけでできちゃうし)、
あまりしっかり解説されてなかったので、今回記事にしてみました。
AWSに怒られないように楽しいAWS-SESライフをすごしましょう。