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