#概要
下記のように、Lambdaから別のLambda関数へ呼び出しを行っています。
呼び出し元のLambda関数Aとして、呼び出した関数をLambda関数Bとします。
Lambda関数Bが2回、ほぼ同時に実行されてしまい困っています。
#サンプル
下記が呼び出し元であるLambda関数Aです。
const invoke_AutoOrder_ = async(orderID:number):Promise<string> =>{ console.log('invoke_AutoOrderが実行されます。2回実行されていないか確認して下さい。') const lambda = new Lambda({apiVersion:'2015-03-31'}) const param:Lambda.InvocationRequest = { FunctionName: "sam-HOFGE", InvocationType:"RequestResponse", Payload: JSON.stringify({ orderID: orderID }) } return await lambda.invoke(param).promise() .then((res)=>{ const pl = res.Payload as string return `処理が完了しました#${pl}` }) .catch((error)=>{ // これは実行されない return JSON.stringify(error) });
#問題点
Lambda関数Bが2回、ほぼ同時に実行されてしまい困っています。
Lambda関数Aは、上記のCosnole.logで実行された回数を確認したところ、1度しか実行されていませんでした。
しかし、Lambda関数BのCloudwatch Logsには、2つのRequestIDが確認できます。
そのため、やはりLambda関数Bが2回実行されたのが確認できます。
また2回実行されたうち、1回目は問題なく処理が完了していますが、2回目は失敗しています。
そしてLambda関数Aには2回目の失敗した結果が戻っています。
この2回の処理は、1回目の処理とほぼ同時か1〜2秒後実行されています。
InvocationTypeは同期で呼び出しているのでRetryされるはずない、そもそも1回目の処理が成功しているのに、なぜRetryするのか意味がわかりません。。。
どなたかアドバイスお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。