我想要非同步叫用 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