Amazon API Gateway API から非同期に Lambda 関数を呼び出すにはどうすればよいですか?

所要時間2分
0

Amazon API Gateway API に対して、AWS Lambda 関数を同期ではなく非同期で呼び出したいと考えています。

解決方法

REST API

Lambda 非プロキシ統合では、バックエンドの Lambda 関数はデフォルトで同期的に呼び出されます。Lambda 呼び出しタイプとして 'Event' を指定することで、Lambda 非プロキシ統合の Lambda 関数を非同期で呼び出されるように設定できます。

1.    API ゲートウェイ コンソールを開き、APIsを選択した後、REST API を選択します。

2.    [Resources] (リソース) で [GET] を選択し、[Integration Request] (統合リクエスト) を選択します。

3.    [Integration type] (統合タイプ) で、[Lambda Function] (Lambda 関数) を選択します。

4.    [HTTP Headers] (HTTP ヘッダー) を展開し、[Add header] (ヘッダーを追加) を選択します。

5.    [Name] (名前) に X-Amz-Invocation-Type と入力します。

6.    [Mapped from] (マッピング元) に**'Event'** と入力します。

7.    REST API を再デプロイする

非同期または同期のオプションを指定して Lambda 関数を呼び出すには、InvocationType ヘッダーを追加します。

1.    API ゲートウェイ コンソールを開き、APIsを選択した後、REST API を選択します。

2.    [Resources] (リソース) で [GET] を選択し、[Method Request] (メソッドリクエスト) を選択します。

3.    [Request Validator] (リクエスト検証ツール) で、編集アイコンを選択し、ドロップダウンリストを選択して、[Validate query string parameters and headers] (クエリ文字列パラメータとヘッダーの検証) を選択します。

4.    更新アイコンを選択して変更を保存します。

5.    [HTTP Headers] (HTTP ヘッダー) を展開し、[Add header] (ヘッダーを追加) を選択します。

6.    [Name] (名前) に InvocationType と入力し、[Required] (必須) を選択します。

7.    [Integration Request] (統合リクエスト) で、[HTTP Headers] (HTTP ヘッダー) を展開し、[Add header] (ヘッダーを追加) を選択します。

8.    [Name] (名前) に X-Amz-Invocation-Type と入力します。

9.     [Mapped from] (マッピング元) に method.request.header.InvocationType と入力します。

10.    REST API を再デプロイする

クライアントは、非同期呼び出しの場合は API リクエストに InvocationType: Event ヘッダーを含めることも、同期呼び出しの場合は InvocationType: RequestResponse ヘッダーを含めることもできます。

詳細については、「バックエンド Lambda 関数の非同期呼び出しを設定する」をご参照ください。

HTTP API

HTTP API は Lambda のプロキシ統合のみをサポートします。HTTP API の API ゲートウェイインテグレーションでは X-Amz-Invocation-Type ヘッダーを設定することはできません。2 つの Lambda 関数を使用でき、1 つはプロキシとして機能します。

設定の例:

HTTP API --> Invoke Lambda1 synchronously --> Invoke Lambda2 asynchronously

コメントはありません

関連するコンテンツ