無限ノック › DVA 練習問題一覧 › 問題
DVAAWSのサービスを使用した開発

開発者はAWS Step Functionsを使用してデータ処理ワークフローを構築しています。あるタスクステートがLambda関数を呼び出しますが、下流の外部APIが過負荷になると一時的に失敗します。このタスクに対して「最大3回、初回待機5秒、バックオフ係数2.0で指数的にリトライし、最大リトライ回数を超えた場合は別のステートに遷移してエラー通知を送る」という要件を実装するために正しいASL(Amazon States Language)の構成はどれですか?

A
Retryフィールド(ErrorEquals: ["States.TaskFailed"], IntervalSeconds: 5, MaxAttempts: 3, BackoffRate: 2.0)とCatchフィールド(ErrorEquals: ["States.ALL"])を組み合わせて使用する
✓ 正解
Step FunctionsのASLではRetryフィールドでリトライ設定を行い、ErrorEqualsで対象エラー、IntervalSeconds・MaxAttempts・BackoffRateで指数バックオフを構成します。Catchフィールドで残りエラーをキャッチして別ステートへ遷移できます。
B
Retryフィールド(ErrorEquals: ["States.Timeout"], IntervalSeconds: 5, MaxAttempts: 3, BackoffRate: 2.0)とCatchフィールド(ErrorEquals: ["States.TaskFailed"])を組み合わせて使用する
ErrorEqualsをStates.Timeoutのみに限定するとタイムアウト以外のエラー(Lambda実行エラーなど)がリトライされず、要件を満たしません。CatchもStates.TaskFailedのみではタイムアウトエラーをキャッチできません。
C
FallbackフィールドでMaxRetry: 3, BackoffMultiplier: 2.0を設定し、CatchフィールドのErrorEqualsには "States.ALL" を指定する
FallbackフィールドはStep FunctionsのASL仕様に存在しない項目です。定義されていない項目のため使用できません。
D
ErrorHandlerフィールド(RetryCount: 3, InitialDelay: 5, ExponentialBase: 2.0)を使用し、CatchフィールドのErrorEqualsには "Lambda.ServiceException" のみを指定する
ErrorHandlerフィールドはStep FunctionsのASL仕様に存在しません。ASL仕様にない項目のため動作しません。

解説

Step FunctionsのASL(Amazon States Language)では、Retryフィールドでリトライを設定します。ErrorEqualsでエラータイプを指定し、IntervalSeconds(初回待機秒数)、MaxAttempts(最大リトライ回数)、BackoffRate(バックオフ係数)を組み合わせて指数バックオフを実現します。最大リトライ超過後の処理にはCatchフィールドを使用し、States.ALLですべてのエラータイプをキャッチして別ステートへ遷移できます。 選択肢BはRetryのErrorEqualsにStates.Timeoutのみを指定しているため、タイムアウト以外のLambda実行エラーなどをリトライせず要件を満たしません。またCatchのErrorEqualsにStates.TaskFailedのみを指定しているためタイムアウトエラーなどをキャッチできず、エラー通知フローが機能しないケースが生じます。 選択肢CのFallbackフィールドはStep FunctionsのASLに存在しない非標準フィールドです。 選択肢DのErrorHandlerフィールドもStep FunctionsのASLに存在しない非標準フィールドです。

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

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

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