SNSトピックをLambdaで購読した場合、SNSイベントに含まれるメッセージ数について確認した。
SNSの場合はSQS等と違ってバッチサイズも無く、公式チュートリアルもメッセージが1件含まれるという以下のような決め打ちコードとなっている。
var message = event.Records[0].Sns.Message;
なのでSNSイベントに含まれるメッセージ件数は1件固定で間違いない。まず間違いない。
しかしRecordsの件数分繰り返して処理をしているコードもちらほら見かけ、 いざlambdaのコードを書くとなるともしn件メッセージが含まれた場合の処理漏れが恐ろしくなり以下のような ダニエル・J・ダービー と同じ精神状態に陥ってしまう。
Records[0]
って書いてやる
Records[0]
!Records[0]
!Records[0]
!Records[0]
!
Records[0]
って書くぞ[
・・・[0
・・・・・・
だ・・・だめだ・・・恐ろしいRecords[0]
と書けない・・・
ビ・・・ビビっちまって そ・・・添字が書けない・・・・・・
い・・・息が!息がヒッ ヒック クククRecords.map(...
ということで心の安寧を得るためにSNSイベントのメッセージは1件固定という公式ドキュメントの記述を探してみた。
https://aws.amazon.com/jp/sns/faqs/
Q: 通知に 2 つ以上のメッセージが含まれますか?
いいえ。すべての通知メッセージには、単一の発行済みメッセージが含まれます。
もっと早く確認しておけばよかった。