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

AWS Step Functionsのステートマシンで注文処理ワークフローを実装しています。あるタスクステートがLambda関数を呼び出しますが、一時的な外部サービス障害により `ServiceUnavailableException` が間欠的に発生します。この例外に対して最大3回、初回待機2秒・指数バックオフ(BackoffRate: 2)で自動リトライするよう設定したいです。Amazon States Language(ASL)における正しい設定はどれですか?

A
タスクステートに `"Retry": [{"ErrorEquals": ["ServiceUnavailableException"], "IntervalSeconds": 2, "MaxAttempts": 3, "BackoffRate": 2}]` を追加する
✓ 正解
タスクステートに `"Retry": [{"ErrorEquals": ["ServiceUnavailableException"], "IntervalSeconds": 2, "MaxAttempts": 3, "BackoffRate": 2}]` を追加する。 Step FunctionsのASLでは、タスクステートに `Retry` フィールドを使って指数バックオフ付きの自動リトライを宣言的に設定できます。`ErrorEquals` で対象例外を指定し、`MaxAttempts` で最大試行回数、`BackoffRate` で待機時間の乗数を設定します。追加インフラ不要でリトライロジックを実装できるのが利点です。
B
タスクステートに `"Catch": [{"ErrorEquals": ["ServiceUnavailableException"], "Next": "RetryState"}]` を追加し、RetryStateから元のタスクへ戻るループを構成する
`Catch` はリトライ全失敗後の例外ハンドリングに使用するもので、リトライ自体には使いません。
C
Lambda関数の非同期呼び出しデスティネーション(On Failure Destination)にSQSキューを設定する
Lambda関数の非同期呼び出しデスティネーションはリトライ機能ではなく、失敗時の処理先を指定するもので要件を満たしません。
D
ステートマシンにChoiceステートを追加して例外の種類を判別し、リトライカウンターをコンテキストオブジェクトで管理する
ステートマシンでのカウンター管理は複雑であり、Step FunctionsのASL `Retry` フィールドで標準サポートされる機能を使うべきです。

解説

タスクステートに `"Retry": [{"ErrorEquals": ["ServiceUnavailableException"], "IntervalSeconds": 2, "MaxAttempts": 3, "BackoffRate": 2}]` を追加する。 Step FunctionsのASLでは、タスクステートに `Retry` フィールドを使って指数バックオフ付きの自動リトライを宣言的に設定できます。`ErrorEquals` で対象例外を指定し、`MaxAttempts` で最大試行回数、`BackoffRate` で待機時間の乗数を設定します。追加インフラ不要でリトライロジックを実装できるのが利点です。 選択肢B:`Catch` はリトライ全失敗後の例外ハンドリングに使用するもので、リトライ自体には使いません。 選択肢C:Lambda関数の非同期呼び出しデスティネーションはリトライ機能ではなく、失敗時の処理先を指定するもので要件を満たしません。 選択肢D:ステートマシンでのカウンター管理は複雑であり、Step FunctionsのASL `Retry` フィールドで標準サポートされる機能を使うべきです。

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

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

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