Lambdaの多重起動は同期呼び出しで防げる
Lambdaの多重起動は同期呼び出しで防げる:
Lambdaの二重起動、多重起動、冪等性…で数時間ググりまくった結論です。
答えは
非同期呼び出しされたときです。
同期呼び出しされたときは、一回だけ呼び出されます。
あるよ(声色)
こちらです。同期/非同期が日本語で書いてございます。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invoking-lambda-function.html
非同期呼び出しの場合はDynamoDBに状態書いて頑張るみたいなことが巷では書かれています。
ちょっとしたサービス作るにはつらいです…。
途中に貼ったリンクの続きに実はこうやって書いてあるんですね。
え?
Step Functionsのときは?
CloudWatchのときはどうなのよ!
たとえば、じゃないんだよ!
全部書いときなさいよ!バカ!
もう…まったく…
でも…
いつもありがとね…AWSっ!
(別ページに書いてあったので全然オーケー!)
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っ!
コメント
コメントを投稿