如何疑難排解 Amazon Connect 聯絡流程中的 Lambda 功能故障?
我想知道為什麼我的聯絡流程嘗試在 Amazon Connect 中調用該函數時,我的 AWS Lambda 函數無法調用。
解決方法
確認聯絡流程日誌中的錯誤訊息
完成以下任務:
- 如果您尚未設定聯絡流程日誌,請為 Amazon Connect 執行個體開啟聯絡流程日誌。
- 搜尋聯絡流程日誌是否有任何錯誤訊息。例如,若要在特定時間範圍內搜尋錯誤訊息,請執行類似下列的查詢:
fields @timestamp, @message | filter @message like 'Results' | parse @message '"Results":"*","ContactId":"*","ContactFlowId":"*","ContactFlowName":"*","ContactFlowModuleType":"*"' as Results, ContactId, ContactFlowId, ContactFlowName, BlockType | filter Results like 'rror' or Results like 'ailed' or Results like 'imeout' or Results like 'xception' or Results like 'No prompt provided' or Results like 'Instance has reached concurrent Lambda thread access limit' or Results like 'nsupported' or Results like 'nvalid' or Results like 'not found' or Results like 'execution limit reached' | filter BlockType = 'InvokeExternalResource' | sort @timestamp asc | display Timestamp, Results, ContactId, ContactFlowId, ContactFlowName, BlockType
根據錯誤訊息,完成下列工作。
Status Code: 403;錯誤代碼: AccessDeniedException; RequestId: XXXXXXXX
如果函數的資源型政策未授予 Amazon Connect 調用該函數的權限,則可能會出現上述錯誤。您可以檢閱函數的資源型政策,查看政策是否包含所需的權限。
若要將所需的權限新增至政策,請使用下列其中一種方法:
-
使用 Amazon Connect 主控台將 Lambda 函數新增至執行個體。新增至執行個體時,該函數會自動取得資源權限。
-
執行 add-permission AWS Command Line Interface (AWS CLI) 命令。包括主體 connect.amazonaws.com 以及 Amazon Connect 執行個體的 Amazon Resource Name (ARN)。
範例:aws lambda add-permission --function-name function-name --action lambda:InvokeFunction --statement-id connect-to-lambda --principal connect.amazonaws.com --source-arn connect-instance-arn
-
使用 Lambda 主控台建立資源型政策。如需詳細資訊,請參閱在 Lambda 中管理權限。
資源型政策範例:{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "100", "Effect": "Allow", "Principal": { "Service": "connect.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "<Qualified AWS Lambda ARN>", "Condition": { "ArnLike": { "AWS:SourceArn": "<Amazon Connect ARN>" } } } ] }
「Lambda 函數返回錯誤」
若要了解可能導致上述錯誤的原因,請檢查 Lambda 的 Amazon CloudWatch 指標。檢閱相關時間戳記中的資料指標。
如果錯誤指標結果不包含相關時間戳記的資料,請驗證函數的回應。
**注意:**測試從 Lambda 函數返回的輸出是最佳實務。確認 Lambda 函數以與 Amazon Connect 相容的格式傳回輸出。
對於輸出,請檢閱下列組態:
- Lambda 承載必須是 NULL 以外的值。
- 如果回應驗證類型是 STRING\ _MAP,則輸出必須是金鑰值配對的平面物件,且不得為巢狀。如果類型是 JSON,則該對象必須是有效的 JSON 值,並且可以包含巢狀 JSON。
- 金鑰值配對只能包含英數字字元、虛線字元或底線字元。
- 傳回資料的大小必須為小於 32 KB 的 UTF-8 資料。
- 確認 Lambda 函數的逾時設定已設定為夠高的值。該值必須夠高,才可允許您的函數調用、處理資料,然後傳回回應。
當您在聯絡流程中使用](https://docs.aws.amazon.com/connect/latest/adminguide/invoke-lambda-function-block.html)調用 Lambda 函數[時,限制小於 Lambda 最大逾時限制所設定的限制。逾時設定的預設值為 3 秒,最大值為 8 秒。
例如,假設您的 Lambda 函數設定為逾時值為 15 秒,而 Lambda 執行 10 秒。儘管您沒有收到逾時錯誤,但聯絡流程會將執行路由到錯誤分支,因為允許的逾時值上限為 8 秒。
若要找出函數調用的時間,請在 Amazon Cloud Watch 中檢閱函數的持續時間指標。然後,根據需要更新調用 Lambda 函數和 Lambda 函數的逾時值。
**注意:**若要在聯絡流程中包含 Lambda 函數,這些函數需要超過 8 秒才能調用,請與 Amazon Connect 搭配使用非同步 Lambda 函數。如果調用多個 Lambda 函數,則函數序列的持續時間必須為 20 秒或更短。
如果 Lambda 錯誤指標包含相關時間戳記的資料,請完成如何疑難排解 Lambda 函數失敗?中的步驟
相關資訊

相關內容
- 已提問 4 個月前lg...
- 已提問 2 年前lg...
- 已提問 2 個月前lg...
- 已提問 6 個月前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 4 個月前
- AWS 官方已更新 3 年前