AWS Lambda测试调用正常 呼叫流中运行返回403错误如何解决
问题根因
Lambda本地测试正常是因为用的是Lambda自身的执行角色权限,而Amazon Connect呼叫流调用Lambda属于跨服务访问,你缺少Lambda的基于资源的权限策略授权Amazon Connect服务调用该Lambda,这是触发403 AccessDeniedException的核心原因,和Lambda执行角色本身的权限配置无关。
修复方案
- 方式1:通过AWS CLI配置权限,执行以下命令即可(参数已匹配你日志中的实例、账号、函数信息,可直接使用):
aws lambda add-permission \ --function-name vanity-phone-lambda \ --statement-id allow-connect-invoke-lambda \ --action lambda:InvokeFunction \ --principal connect.amazonaws.com \ --source-arn arn:aws:connect:us-west-2:531698586584:instance/4a077dd8-53c1-4e29-8d49-5ca96f5e81c3 \ --source-account 531698586584
- 方式2:通过AWS控制台配置:进入对应Lambda函数页面,选择「配置」选项卡->左侧栏「权限」->下滑找到「基于资源的策略语句」->点击「添加权限」,选择「AWS 服务」作为授权主体,服务选择
connect.amazonaws.com,声明ID自定义,操作选择lambda:InvokeFunction,源ARN填写你日志中的Amazon Connect实例ARN,保存即可。 - 配置完成后检查Amazon Connect实例设置,确认该Lambda已经被添加到实例的「关联的Lambda函数」列表中,未关联也会触发调用权限错误。
额外优化建议
你当前使用的Lambda执行角色权限粒度过宽,dynamodb:*和lambda:*的全操作+全资源授权存在安全风险,生产环境建议收缩权限到实际使用的DynamoDB表ARN,移除不必要的Lambda全操作权限。
内容的提问来源于stack exchange,提问作者Stephen Smith
相关产品推荐
相关产品推荐

