DVAAWSのサービスを使用した開発
AWS Step Functionsを使用して注文処理のステートマシンを構築しています。ワークフローの途中で、人間の管理者宛てに承認依頼メールを送信し、管理者がメール内の「承認」リンクをクリックするまでステートマシンの実行を一時停止(待機)させる必要があります。このような非同期の外部処理を実装するために最適なStep Functionsの機能はどれですか。
Aコールバックパターン(.waitForTaskToken)を使用してタスクトークンを発行し、外部タスクからの成功通知(SendTaskSuccess)を待つ。
✓ 正解
コールバックパターン(.waitForTaskToken)は、人間の承認や外部システムの非同期処理が完了するまでワークフローを一時停止させるための標準機能です。
BWaitステートを使用して、指定した日時(Timestamp)または秒数(Seconds)だけステートマシンの実行を一時停止する。
Waitステートは「指定した時間」が経過するまで待機するものであり、「外部イベント(リンクのクリック)」が発生するまで待機する用途には使えません。
CAWS Lambdaのプロビジョンドコンカレンシーを利用して、HTTPリクエストからのコールバックを常時リッスンし続ける。
Lambdaの常時リッスンは同期的な待機であり、最大15分のタイムアウト制限があるため、いつ完了するかわからない人間の承認処理には使えません。
DChoiceステートを使用して、DynamoDBテーブルを継続的にポーリングし、承認フラグが立つまでループ処理を行う。
ポーリングやループ処理はステートの遷移回数を無駄に消費し、コストの増大や制限(履歴のハードリミット等)に抵触するアンチパターンです。
解説
AWS Step Functionsのコールバックパターンでは、リソースARNの末尾に `.waitForTaskToken` を追加してタスク(Lambda、SQSなど)を呼び出すと、一意の「タスクトークン」が生成されます。ステートマシンの実行はそのステップで一時停止し、外部プロセス(人間による承認クリックなど)が `SendTaskSuccess` などのAPIをタスクトークンと共に呼び出すまで待機します。これにより、非同期や長期実行のプロセスを効率的にワークフローへ組み込むことができます。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →