AWS Step FunctionsのステートマシンでLambda関数を呼び出すタスクステートがあります。このLambdaは外部APIを呼び出しており、一時的なネットワークエラー(Lambda.ServiceException)が発生することがあります。以下の要件を満たすよう、タスクステートをどのように設定すべきですか? ・初回失敗後に2秒待機する ・指数バックオフ(BackoffRate: 2)で最大3回再試行する ・すべて失敗した場合はエラーハンドリングステートに遷移させる
Step FunctionsのタスクステートはRetryフィールドで自動再試行(対象エラー・初回待機秒数・最大試行回数・指数バックオフ率を指定)、Catchフィールドで再試行使い切り後の最終エラー処理を設定できます。RetryとCatchを組み合わせることで「一定回数再試行し、それでも失敗したら別ステートへ」というパターンが実現できます。 選択肢BのCatchフィールドのみを設定してエラーハンドリングステート内でRetryロジックを実装する方法は、ネイティブのRetry機能を使わず独自ループを構築することになり複雑になります。 選択肢CのChoiceステートによるループはアンチパターンであり再試行パターンに不向きです。 選択肢DのLambda内でのエラー握りつぶしはStep Functionsのエラー処理機能が活かせません。