AWS Step Functionsで注文処理ワークフローを構築している開発者がいます。LambdaタスクはAPIを呼び出しますが、ネットワーク障害時に`Lambda.SdkClientException`をスローします。要件は以下の通りです。 ・ネットワーク障害(`Lambda.SdkClientException`)に対してのみ最大3回・指数バックオフでリトライする ・3回リトライ後も失敗した場合は「InventoryError」状態へ遷移する ・それ以外のエラーはワークフローを即座に失敗させる この要件を満たすStep Functionsのタスク設定はどれですか?
Step Functionsのタスク状態では、RetryとCatchを組み合わせてエラーを細かく制御できます。Retryブロックに`ErrorEquals: [Lambda.SdkClientException]`を指定すると、そのエラーのみがリトライ対象になります。MaxAttempts: 3・BackoffRate: 2 を設定することで指数バックオフ付き最大3回のリトライが実現できます。リトライ上限到達後、CatchブロックのErrorEqualsが一致すれば指定の次の状態へ遷移します。それ以外のエラーはRetryもCatchも一致しないため、タスクがエラーで終了しワークフローが失敗します。 選択肢AのRetry States.ALLはすべてのエラーをリトライ対象にしてしまうため、Lambda.SdkClientExceptionのみリトライするという要件を満たしません。またCatchがないためInventoryErrorへの遷移もできません。 選択肢BのLambda DLQはStep Functionsのワークフロー内のRetry/Catch制御とは独立した仕組みであり、ワークフローの状態遷移管理の代替にはなりません。 選択肢DのCatch States.ALLは、SdkClientException以外のエラーもInventoryErrorへ遷移させてしまうため、「その他エラーはワークフローを即座に失敗させる」という要件を満たしません。