如何排查 Amazon Connect 联系流中的 Lambda 函数故障?

上次更新时间:2021 年 8 月 24 日

当我的联系流尝试调用函数时,我添加到 Amazon Connect 实例中的 AWS Lambda 函数无法被调用。我该如何排查此问题?

解决方法

注意:如果您在运行 AWS Command Line Interface (AWS CLI) 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

验证您 Lambda 函数的基于资源的策略是否授予 Amazon Connect 调用该函数的权限

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 Resource Name (ARN)

有关更多信息,请参阅 Amazon Connect 管理员指南中的创建 Lambda 函数。以及,Lambda 开发人员指南中的授予函数对 AWS 服务的访问权限

授予 Amazon Connect 调用函数权限的 Lambda 函数的基于资源的策略示例

重要提示:<Qualified AWS Lambda ARN> 替换为您函数的 ARN。将 <Amazon Connect 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>"
              }
            }
        }
     ]
}

验证 Lambda 函数的响应

按照 Amazon Connect 管理员指南中验证函数的响应部分的说明进行操作。当您测试从 Lambda 函数返回的输出时,请验证以下内容:

  • 该输出是键值对的平面对象。
  • 该键值对仅包含字母数字、短划线和下划线字符。
  • 该对象不是嵌套或复杂的。
  • 返回的数据的大小不到 32 KB(UTF-8 数据)。

验证 Lambda 函数的“超时”设置是否足够高,以允许您的函数被调用

如果您的函数未在配置的超时设置内调用,则该联系流将向下路由至调用 AWS Lambda 函数联系块的 Error 分支。默认超时设置为 3 秒。最高超时设置为 8 秒。

要确认调用函数需要多长时间,请在 Amazon CloudWatch 中查看您函数的持续时间指标

要查看和编辑您 Lambda 函数的超时设置,请参阅联系块:调用 AWS Lambda 函数

注意:要在联系流中包含调用时间超过 8 秒的 Lambda 函数,请将异步 Lambda 函数与 Amazon Connect 结合使用

(如果您要调用多个 Lambda 函数)请确保函数序列的持续时间少于 20 秒

Amazon Connect 将 Lambda 函数序列的持续时间限制为 20 秒。要调用持续时间超过 20 秒的多个函数,您可以在每个函数之间添加一个 Play prompt 联系块。

有关更多信息,请参阅 Amazon Connect 管理员指南中 Amazon Connect 最佳实践Lambda 部分。

识别并解决导致您的函数出现故障的任何其他错误

按照如何排查 Lambda 函数故障?中的说明进行操作


这篇文章对您有帮助吗?


您是否需要账单或技术支持?