無限ノック › DVA 練習問題一覧 › 問題
DVAトラブルシューティングと最適化

AWS Step Functionsで注文処理ワークフローを構築している開発者がいます。LambdaタスクはAPIを呼び出しますが、ネットワーク障害時に`Lambda.SdkClientException`をスローします。要件は以下の通りです。 ・ネットワーク障害(`Lambda.SdkClientException`)に対してのみ最大3回・指数バックオフでリトライする ・3回リトライ後も失敗した場合は「InventoryError」状態へ遷移する ・それ以外のエラーはワークフローを即座に失敗させる この要件を満たすStep Functionsのタスク設定はどれですか?

A
Retryに`ErrorEquals: [States.ALL]`、MaxAttempts: 3、BackoffRate: 2 を設定する。Catchは設定しない
ErrorEquals [States.ALL]はすべてのエラーをリトライ対象にしてしまい、Lambda.SdkClientExceptionのみリトライするという要件を満たしません。またCatchがないためInventoryErrorへの遷移もできず、要件から大きく逸脱しています。
B
LambdaにDLQ(SQSキュー)を設定し、SQSトリガーでInventoryError処理用Lambdaを起動してワークフロー外でリトライを実装する
Lambda DLQはLambda関数の非同期呼び出しで処理できなかったメッセージを送る仕組みです。Step Functionsワークフロー内のRetry/Catch状態遷移制御とは独立しており、ワークフローの状態管理の代替にはなりません。
C
Retryに`ErrorEquals: [Lambda.SdkClientException]`、MaxAttempts: 3、BackoffRate: 2 を設定し、Catchに同一エラーでInventoryErrorへの遷移を設定する
✓ 正解
RetryにLambda.SdkClientExceptionを指定することで対象エラーのみリトライされます。MaxAttempts: 3・BackoffRate: 2で指数バックオフが実現でき、Catchに同一エラーを指定することでリトライ上限後にInventoryErrorへ遷移します。他のエラーはRetryもCatchも一致せずワークフローが失敗します。
D
Retryに`ErrorEquals: [Lambda.SdkClientException]`、MaxAttempts: 3 を設定し、Catchに`ErrorEquals: [States.ALL]`でInventoryErrorへの遷移を設定する
RetryのErrorEquals設定は正しいですが、Catch ErrorEquals [States.ALL]とするとSdkClientException以外のエラーもInventoryErrorへ遷移させてしまいます。その他エラーはワークフローを即座に失敗させるという要件を満たしません。

解説

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へ遷移させてしまうため、「その他エラーはワークフローを即座に失敗させる」という要件を満たしません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る