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

開発者がAWS Step Functionsでデータ処理ワークフローを構築しています。あるタスクステートでLambda関数を呼び出しますが、この関数は過負荷時に Lambda.TooManyRequestsException を返すことがあります。この一時的なエラーに対して最大3回・指数バックオフ(初回2秒・乗数2.0)でリトライし、3回失敗した場合はエラー処理ステートに遷移させたいと考えています。ステートマシン定義に追加すべき設定として正しいものをすべて選んでください。(2つ選択)

A
タスクステートの Retry フィールドに ErrorEquals: ["Lambda.TooManyRequestsException"]、MaxAttempts: 3、IntervalSeconds: 2、BackoffRate: 2.0 を設定する
✓ 正解
Step FunctionsのRetryフィールドでErrorEquals・MaxAttempts・IntervalSeconds(初回待機秒)・BackoffRate(乗数)を指定すると、指数バックオフでの自動リトライを宣言的に定義できます。コードを書かずに最大3回・初回2秒・乗数2.0のリトライが実現します。
B
タスクステートの Catch フィールドに ErrorEquals: ["Lambda.TooManyRequestsException"]、Next: "ErrorHandlerState" を設定する
✓ 正解
Catchフィールドはリトライがすべて失敗した後の例外捕捉を担当します。ErrorEqualsで対象エラーを指定しNextで遷移先(ErrorHandlerState)を定義することで、最大リトライ後もエラーが解消しない場合にエラー処理ステートへ宣言的に遷移できます。
C
Lambda関数内で try-catch を実装し、Step Functions SDK を呼び出してリトライ回数をカウントする
Lambda内でtry-catchを実装する設計はStep Functionsのリトライ機構をバイパスし、コンソール上でのリトライ可視性・監査性が失われます。さらにLambda実行時間の上限(最大15分)内に全リトライを完了させる必要があり要件を適切に実現できません。
D
タスクステートの TimeoutSeconds を短く設定することでリトライを自動的にトリガーする
TimeoutSecondsはタスクの最大実行時間を設定するパラメータで、リトライのトリガーや制御とは独立しています。タイムアウト超過はStates.Timeoutエラーを発生させますが、リトライを自動的にトリガーする機能はありません。

解説

Step Functionsのタスクステートには組み込みの再試行(Retry)と例外捕捉(Catch)機能があります。RetryフィールドでErrorEquals・MaxAttempts・IntervalSeconds(初回待機秒)・BackoffRate(乗数)を指定すると指数バックオフでのリトライを宣言的に定義できます。最大リトライ後もエラーが解消しない場合はCatchフィールドのNextステートに遷移します。 選択肢C(Lambda内でtry-catch実装)はStep FunctionsのリトライメカニズムをバイパスしてLambda側でリトライを管理する設計であり、Step Functionsコンソール上でのリトライ可視性・監査性が失われるうえ、Lambda実行時間の上限(最大15分)内にすべてのリトライを完了させる必要があるため要件を適切に実現できません。 選択肢D(TimeoutSeconds)はタスクの最大実行時間を設定するパラメータであり、リトライのトリガーや制御とは独立しています。タイムアウト超過はStates.TaskFailedエラーを発生させますが、リトライを自動的にトリガーする機能はありません。

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

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

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