一 月
24
日曜日
2021

AWS SNSイベントに含まれるメッセージ数

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 つ以上のメッセージが含まれますか?
 
いいえ。すべての通知メッセージには、単一の発行済みメッセージが含まれます。

もっと早く確認しておけばよかった。