Lambdaの多重起動は同期呼び出しで防げる

Lambdaの多重起動は同期呼び出しで防げる:

Lambdaの二重起動、多重起動、冪等性…で数時間ググりまくった結論です。


Lambdaが多重起動するかもしれないときっていつ?

答えは

非同期呼び出しされたときです。

同期呼び出しされたときは、一回だけ呼び出されます。

RequestResponse(同期)呼び出しオプションを使用すると、その関数は1回だけ呼び出されます。

Event(非同期)呼び出しオプションを使用する場合、関数はイベントに応答して少なくとも1回呼び出され、関数はこれを処理するためには冪等でなければなりません。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/API_Invoke.html


同期呼び出しってどうやんのよ?

  • コンソールで手動で呼ぶときは同期/非同期を指定することができる
  • サービスがトリガーのときは、サービスごとに同期か非同期か決まっている。
呼び出しタイプを制御できるのは、ユーザー自身が Lambda 関数を呼び出すときのみです。

トリガーとして AWS サービスを使用する場合、呼び出しタイプはサービスごとに事前に定義されています。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invocation-options.html


同期/非同期 サービス一覧表はないの?

あるよ(声色)

こちらです。同期/非同期が日本語で書いてございます。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invoking-lambda-function.html


非同期呼び出しのときはどうやって防げばいいの?

非同期呼び出しの場合はDynamoDBに状態書いて頑張るみたいなことが巷では書かれています。

ちょっとしたサービス作るにはつらいです…。


おわり✨��✨


(ぽえむ)AWS公式ドキュメントへの愚痴

途中に貼ったリンクの続きに実はこうやって書いてあるんですね。

たとえば、Amazon S3 は常に非同期で Lambda 関数を呼び出し、Amazon Cognito は常に同期で Lambda 関数を呼び出します。ポーリングベースの AWS サービス (Amazon Kinesis、Amazon DynamoDB、Amazon Simple Queue Service) の場合、AWS Lambda はストリームまたはメッセージキューをポーリングし、Lambda 関数を同期的に呼び出します。
(ズコー)

え?

Step Functionsのときは?

CloudWatchのときはどうなのよ!

たとえば、じゃないんだよ!

全部書いときなさいよ!バカ!


もう…まったく…

でも…

いつもありがとね…AWSっ!


ほんとのおわり✨��✨

(別ページに書いてあったので全然オーケー!)

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)