我想知道为什么当我的联系流尝试在 Amazon Connect 中调用该函数时,我的 AWS Lambda 函数无法调用。
1. 如果您尚未执行此操作,请为您的 Amazon Connect 实例启用联系流日志记录。
2. 在您的联系流程日志中搜索任何 AccessDeniedException 错误消息。当您函数的 AWS Identity and Access Management (IAM) 基于资源的策略未授予 Amazon Connect 调用该函数的权限时,您会看到此错误。
**注意:**您还可以手动查看函数的基于资源的策略,以确认其是否包含所需的权限。有关更多信息,请参阅使用 AWS Lambda 基于资源的策略。
要添加所需权限
运行 add-permission AWS CLI 命令。包含主体 connect.amazonaws.com 和您 Amazon Connect 实例的 Amazon 资源名称(ARN)。
**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。
有关更多信息,请参阅 Amazon Connect 管理员指南中的创建 Lambda 函数。以及,Lambda 开发人员指南中的授予函数对 AWS 服务的访问权限。
授予 Amazon Connect 调用函数权限的 Lambda 函数的基于资源的策略示例
**重要提示:**将 替换为函数的 ARN。将 替换为您的 Amazon Connect 实例的 ARN。
{ "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>" } } } ] }
按照 Amazon Connect 管理员指南中验证函数的响应部分的说明进行操作。当您测试从 Lambda 函数返回的输出时,请验证以下内容:
如果您的函数未在配置的 Timeout(超时)设置内调用,则该联系流将向下路由至调用 AWS Lambda 函数的 Error(错误)分支。默认 Timeout(超时)设置为 3 秒。最大 Timeout(超时)设置为 8 秒。
要确认调用函数需要多长时间,请在 Amazon CloudWatch 中查看您函数的持续时间指标。
要查看和编辑您 Lambda 函数的超时设置,请参阅联系块:调用 AWS Lambda 函数。
**注意:**要在联系流中包含调用时间超过 8 秒的 Lambda 函数,请将异步 Lambda 函数与 Amazon Connect 结合使用。
Amazon Connect 将 Lambda 函数序列的持续时间限制为 20 秒。
有关更多信息,请参阅 Amazon Connect 管理员指南中 Amazon Connect 最佳实践的 Lambda 部分。
按照如何排查 Lambda 函数故障?中的说明进行操作
从 Amazon Connect 调用 AWS Lambda 函数别名