DVAAWSのサービスを使用した開発

AWS Step Functionsを使用して注文処理のステートマシンを構築しています。ワークフローの途中で、外部の人間の管理者が専用の確認画面で「承認」ボタンをクリックするまで、ステートマシンの実行を一時停止(待機)させる必要があります。このような長期間にわたる非同期の外部イベントを待ち受けるために最も適切なStep Functionsの機能はどれですか。

A
コールバックパターン(.waitForTaskToken)を使用してタスクトークンを発行し、外部タスクからの成功通知(SendTaskSuccess)を待つ。
✓ 正解
コールバックパターン(.waitForTaskToken)は、人間の承認や外部システムの非同期処理が完了するまでワークフローを一時停止させるための標準かつ最適な機能です。
B
Waitステートを使用して、指定した最大時間(Timestamp)だけステートマシンの実行を無条件で一時停止する。
Waitステートは「指定した時間」が経過するまで待機するものであり、「外部イベントの発生(リンクのクリックなど)」を検知して待機を解除する用途には使えません。
C
AWS Lambdaのプロビジョンドコンカレンシーを利用して、外部からのHTTPコールバックを常時リッスンし続ける。
Lambda関数を常時起動してリクエストを待ち受ける構成は、Lambdaの最大実行時間(15分)の制限に抵触するため、いつ完了するかわからない長時間の承認処理には使えません。
D
Choiceステートを使用して、DynamoDBテーブルを継続的にポーリングし、承認フラグが立つまでループ処理を繰り返す。
ポーリングやループ処理による実装は、ステートの遷移回数(料金)を無駄に消費し、ステートマシンの履歴制限(ハードリミット)に抵触するアンチパターンです。

解説

AWS Step Functionsのコールバックパターンでは、リソースARNの末尾に `.waitForTaskToken` を付与してタスクを実行すると、一意の「タスクトークン」が生成されます。ステートマシンの実行はこのステップで一時停止し、外部プロセス(人間による承認操作など)が `SendTaskSuccess` などのAPIを該当のタスクストークンと共に呼び出して処理を完了させるまで無期限に待機します。これにより、人間の承認など時間のかかる非同期処理をワークフローに安全に組み込むことができます。

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

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

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