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

AWS Step FunctionsのステートマシンでLambda関数を呼び出すタスクステートがあります。このLambdaは外部APIを呼び出しており、一時的なネットワークエラー(Lambda.ServiceException)が発生することがあります。以下の要件を満たすよう、タスクステートをどのように設定すべきですか? ・初回失敗後に2秒待機する ・指数バックオフ(BackoffRate: 2)で最大3回再試行する ・すべて失敗した場合はエラーハンドリングステートに遷移させる

A
タスクステートにRetryフィールド(ErrorEquals: ["Lambda.ServiceException"], IntervalSeconds: 2, MaxAttempts: 3, BackoffRate: 2)とCatchフィールド(エラーハンドリングステートへの遷移)を両方設定する
✓ 正解
Step FunctionsのタスクステートはRetryフィールドで自動再試行(対象エラー・初回待機秒数・最大試行回数・指数バックオフ率を指定)、Catchフィールドで再試行使い切り後の最終エラー処理を設定できます。RetryとCatchを組み合わせることで「一定回数再試行し、それでも失敗したら別ステートへ」というパターンが実現できます。
B
タスクステートにCatchフィールドのみ(ErrorEquals: ["States.ALL"], Next: "ErrorHandler")を設定し、エラーハンドリングステート内でWaitステートとLambda Invokeを使ったリトライロジックを手動実装する
Catchフィールドのみを設定してエラーハンドリングステート内でRetryロジックを実装する方法は、ネイティブのRetry機能を使わず独自ループを構築することになり複雑になります。
C
タスクステートの直後にChoiceステートを配置してエラーコード(Lambda.ServiceException)を評価し、一致した場合は元のタスクステートにループバックする形で再試行を実現する
Choiceステートによるループはアンチパターンであり再試行パターンに不向きです。
D
Lambda関数内でtry-catch構文を使用してLambda.ServiceExceptionを捕捉し、指数バックオフ付きのリトライロジックを自前実装した上でStep Functionsには常に成功レスポンスを返す
Lambda内でのエラー握りつぶしはStep Functionsのエラー処理機能が活かせません。

解説

Step FunctionsのタスクステートはRetryフィールドで自動再試行(対象エラー・初回待機秒数・最大試行回数・指数バックオフ率を指定)、Catchフィールドで再試行使い切り後の最終エラー処理を設定できます。RetryとCatchを組み合わせることで「一定回数再試行し、それでも失敗したら別ステートへ」というパターンが実現できます。 選択肢BのCatchフィールドのみを設定してエラーハンドリングステート内でRetryロジックを実装する方法は、ネイティブのRetry機能を使わず独自ループを構築することになり複雑になります。 選択肢CのChoiceステートによるループはアンチパターンであり再試行パターンに不向きです。 選択肢DのLambda内でのエラー握りつぶしはStep Functionsのエラー処理機能が活かせません。

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

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

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