如何從我的 Amazon API Gateway API 非同步叫用 Lambda 函數?

2 分的閱讀內容
0

我想要非同步叫用 AWS Lambda 函數,而不是為我的 Amazon API Gateway API 同步叫用。

解決方案

REST API

在 Lambda 非代理整合中,依預設會同步叫用後端 Lambda 函數。您可以將 'Event' 指定為 Lambda 叫用類型,從而將 Lambda 非代理整合設定為非同步叫用的 Lambda 函數。

1.    開啟 API Gateway 主控台,選擇 API,然後選擇您的 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 Gateway 主控台,選擇 API,然後選擇您的 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 Gateway 整合中設定 X-Amz-Invocation-Type 標頭。您可以使用兩個 Lambda 函數,其中一個函數充當代理。

組態範例:

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

AWS 官方
AWS 官方已更新 2 年前