StepFunctionsから呼び出したLambda関数のエラー発生時に、Lambda関数の再試行が行われたか教えてください

2022.03.29

困っていた内容

StepFunctionsから実行したLambda関数でエラーが発生しました。 該当のLambda関数には、再試行に「2」が設定されていましたが、再試行されたか、どのように確認すればよいですか。

どう対応すればいいの?

まず、StepFunctionsからLambda関数を呼び出す際の記述方法は、2通りあります。[1]

方法1: Resourceに関数のARNを直接書く
方法2: Parameters.FunctionNameに関数名を書く。Resourceは arn:aws:states:::lambda:invoke 固定

該当のStepFunctionsの定義を確認すると、Lambda関数は「方法1」で指定されていました。 よって、Lambda関数は「同期呼び出し」「非同期呼び出し」のうち、「同期呼び出し」(デフォルト)で実行されています。

補足:
「方法2」の場合「同期呼び出し」「非同期呼び出し」の指定が可能です。
「方法1」の場合、デフォルトの「同期呼び出し」となります。

そのため、Lambda関数の設定項目である、「非同期呼び出し」の「再試行」回数の設定は、今回は特に利用されず、エラー発生時のリトライは行われていません。

リトライ処理を行うためには、呼び出し側のStepFunctionsの定義に、Lambda関数のリトライを設定する必要があります。

StepFunctions のリトライ処理については、資料[3]をご覧ください。

参考資料

[1] Step FunctionsからLambda関数を実行する書き方2つの違い | DevelopersIO

方法1: Resourceに関数のARNを直接書く
方法2: Parameters.FunctionNameに関数名を書く。Resourceは arn:aws:states:::lambda:invoke 固定

[2] Step Functions で Lambda を呼び出す - AWS Step Functions

[3] StepFunction リトライ時の待機時間 | DevelopersIO

[4] Step Functions エラー処理 - AWS Step Functions

[5] Lambda サービスの例外を処理する - AWS Step Functions