View a markdown version of this page

非同期外部 APIs呼び出し - 非同期外部 APIs呼び出し

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

非同期外部 APIs呼び出し

公開日: 2023 年 1 月 30 日 (図の履歴)

このアーキテクチャは、サービスのコールバックパターンを実装するサードパーティーサービスを呼び出して、長時間実行されるジョブを処理する方法を示しています。でオーケストレーションを構築AWS Step Functionsして、リクエストのライフサイクルを管理し、1 maximum-requests-per-second (RPS) 契約に従って外部サービスの呼び出しを調整し、コールバック通知を受信するまでリクエストワークフローを一時停止します。

非同期外部 APIs呼び出し

Amazon Simple Queue Service AWS Step Functions、Amazon API Gateway、Amazon DynamoDB を使用した非同期外部 AWS Lambda API 呼び出しを示すアーキテクチャ図。

次の手順では、アーキテクチャについて説明します。

  1. サードパーティーサービスへの長時間実行されるリクエストのライフサイクルを処理するように Step Functions を設定します。ワークフローを一時停止し、タスクトークンが続行するのを待つリクエストステップを追加します。コールバックが受信されない場合にワークフローが失敗するようにタイムアウトを設定します。

  2. タスクトークンとリクエストペイロードを Amazon Simple Queue Service キューに送信します。Amazon CloudWatch を使用してキューの長さをモニタリングし、長さが制限を超えた場合は契約の調整を検討してください。

  3. AWS Lambda を使用して Amazon SQSポーリングし、明示的な Step Functions ワークフローをトリガーします。ポーリングバッチサイズ、予約済み同時実行数、最大同時実行数を使用して、呼び出しレートを制御します。

  4. システムが契約された RPS に準拠するためにより低い呼び出しレートを必要とする場合は、AWS AppConfig によって制御される Lambda 内に動的遅延を追加します。

  5. Step Functions は、契約された RPS に準拠するようにレート制限が設定されている Amazon API Gateway HTTP プロキシ API を呼び出します。

  6. リクエストキューから消費されたペイロードを送信する外部のサードパーティーの非同期サービス API を呼び出し、ジョブ ID を受け取ります。Amazon SQS を使用して、失敗したリクエストをデッドレターキュー (DLQ) に送信します。

  7. ワークフローのタスクトークンと受信したジョブ ID を Amazon DynamoDB で実装されたトークンストアに保存します。

  8. 外部サービスが完了すると、API Gateway で実装されたコールバックウェブフックエンドポイントで、完了したジョブ ID を受け取ります。

  9. API Gateway マッピングテンプレートを使用して外部コールバックを変換し、ペイロードとジョブ ID を Amazon SQS キューに追加して、発信者にすぐに応答します。

  10. Lambda を使用してコールバック Amazon SQS キューをポーリングし、トークンストアをクエリし、トークンを使用して待機中のワークフローをブロック解除します。失敗したメッセージをコールバック DLQ に保存します。

  11. ワークフローで、ジョブ ID を次のステップに渡し、Step Functions プロセッサを呼び出して、ジョブ ID で外部のサードパーティーの結果ストアから結果を取得します。外部サービスの結果を処理します。

詳細情報

詳細については、次のリソースを参照してください。

図の履歴

このリファレンスアーキテクチャ図の更新について通知を受け取るには、RSS フィードをサブスクライブします。

変更説明日付

初版発行

リファレンスアーキテクチャ図が最初に公開されました。

2023 年 1 月 30 日

注記

RSS 更新をサブスクライブするには、使用しているブラウザで RSS プラグインが有効になっている必要があります。