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

2 分钟阅读
0

我想知道为什么当我的联系流尝试在 Amazon Connect 中调用该函数时,我的 AWS Lambda 函数无法调用。

解决方法

验证您 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 资源名称(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>"
        }
      }
    }
  ]
}

验证 Lambda 函数的响应

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

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

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

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

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

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

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

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

Amazon Connect 将 Lambda 函数序列的持续时间限制为 20 秒。

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

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

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


相关信息

从 Amazon Connect 调用 AWS Lambda 函数别名

AWS 官方
AWS 官方已更新 1 年前