You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决AWS Connect流程向Lambda函数传递空JSON的问题?

AWS Connect调用Lambda传空JSON的解决办法

1. 先把权限配置补全

  • 给Lambda执行角色添加信任策略:进入Lambda的配置>权限>执行角色>信任关系,添加允许Connect调用的规则:
{
  "Effect": "Allow",
  "Principal": {
    "Service": "connect.amazonaws.com"
  },
  "Action": "sts:AssumeRole"
}
  • 再给Lambda添加资源策略:在配置>权限>资源策略里补充:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "connect.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "你的Lambda函数ARN",
      "Condition": {
        "ArnEquals": {
          "AWS:SourceArn": "你的Connect实例ARN"
        }
      }
    }
  ]
}

权限不匹配的话,Connect可能无法正常传递参数,甚至调用Lambda都会失败。

2. 抠细节检查参数配置

  • 目标密钥要严格大小写匹配Lambda中的参数名,比如Lambda用phoneNumber,就不能写成Phonenumber,大小写错一个都不行
  • 手动输入值时别乱加符号,比如电话号码直接写+1234567890即可,不需要额外加引号
  • 如果引用联系属性(比如${ContactData.CustomerEndpoint.Address}),要确保在当前流程节点该属性已经有值——比如刚接通就调用Lambda,可能还没获取到客户号码,自然传空

3. 打日志确认真实输入

  • 在Lambda开头加一段代码,把收到的event完整打印出来:
import json
import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)

def lambda_handler(event, context):
    logger.info("收到的event内容: " + json.dumps(event))
    # 你的业务逻辑写在这里

去CloudWatch查看日志,确认到底是空对象还是有你没注意到的字段——有时候Connect会传一些默认元数据,只是你没处理而已。

4. 确认区域和流程版本

  • 必须保证Connect实例和Lambda在同一个AWS区域,跨区域调用容易出现各种异常
  • 修改完联系流程后一定要发布新版本,并且将新版本关联到对应的号码/队列——只编辑草稿没用,实际运行的还是旧流程

内容的提问来源于stack exchange,提问作者CSharpMinor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 22:27:38