我設定了一個 AWS Lambda 函數來同步叫用,但是目的地沒有啟動。我要如何修正此問題?
我透過 Lambda 主控台叫用 Lambda 函數時,它是被同步或非同步叫用?
-或-
如何修復重複的 Lambda 函數叫用?
解決方案
當您同步叫用 Lambda 函數但失敗,可能的原因如下:
- Lambda 沒有執行程式碼中動作的許可。
- 叫用 Lambda 函數的 AWS 服務沒有足夠的許可。
- Lambda 函數會以同步方式叫用。
- 在 Lambda 函數的非同步叫用設定中,重試嘗試次數設定為 0。
請依照下列步驟,對同步叫用問題進行疑難排解:
1. 判定 Lambda 函數如何叫用。函數是否使用 AWS CLI 叫用? 函數是否透過 AWS 服務叫用?
2. 檢查 AWS 服務是以同步或非同步方式叫用 Lambda 函數。
3. 使用下列命令同步叫用 Lambda 函數:
aws lambda invoke
--function-name my-function
--invocation-type Event
--cli-binary-format raw-in-base64-out
--payload '{ "key": "value" }' response.json
查看是否傳回 202 狀態碼,或者命令是否傳回錯誤。
4. 檢閱 Lambda 函數的 Amazon CloudWatch Logs,確認是否有重複的叫用:
如需詳細資訊,請參閱如何防止重複的 Lambda 函數叫用?
5. 如果重複的叫用具有相同的請求 ID,並傳回錯誤或逾時,請設定非同步叫用的錯誤處理。使用此設定,您可以控制 Lambda 服務在發生故障時可執行的重試次數。
如需詳細資訊,請參閲 AWS Lambda 中的錯誤處理和自動重試。
備註:具有相同的請求 ID,並傳回錯誤或逾時的重複叫用,表示 Lambda 已重試函數。
6. 如果重複的叫用沒有返回錯誤且沒有逾時,請執行以下操作:
- 確保 Lambda 函數的程式碼為等冪,並且能夠多次處理相同訊息。
- 確保 Lambda 函數設定了夠高的並行限制,足以處理它接收的叫用請求數目。
- 辨識並解決 Lambda 函數傳回的任何錯誤。
如需更多資訊,請參閲如何對 Lambda 函數故障進行疑難排解?
備註:如果重複的叫用來自客戶端,請求 ID 將有所差異。
7. 如果仍然無法解決問題,請在 AWS Support 建立案例。在您的案例中提供下列資訊:
- Lambda 函數 Amazon Resource Name (ARN)。
- Lambda 函數設定上的工作流程,包括所有內含服務。
- 有關問題是間歇性或連續性發生的詳細資訊。
- 完整的 .txt 格式 CloudWatch 日誌,從問題發生開始。這些 CloudWatch 日誌用於識別 Lambda 函數錯誤,包括逾時問題、初始化持續時間和許可問題。
- 問題的確切時間戳記,帶有時區或 UTC 時間戳記。
備註:由於安全和隱私權因素,AWS Support 代表無法存取客戶的 CloudWatch 日誌。
相關資訊
比較 Lambda 叫用模式
叫用 Lambda 函數
AWS Lambda Destinations 簡介