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

调用aws apigateway put-integration报错:Lambda函数ARN需同账户

解决AWS API Gateway PutIntegration时的"Lambda function ARN must be in same account"错误

嘿,这个错误我之前部署Lambda+API Gateway的时候也踩过坑,别着急,咱们一步步拆解排查:

核心原因

这个错误直白来说就是:你当前用来创建API Gateway集成的AWS账号,和你要关联的Lambda函数所属的AWS账号不是同一个。哪怕你觉得是同一IAM用户,也可能在配置或者脚本里出了小问题。

具体排查步骤

  • 确认Lambda ARN的账号ID
    Lambda的ARN格式是arn:aws:lambda:<region>:<account-id>:function:<function-name>,你得先核对这个ARN里的<account-id>是不是和你环境变量里的AWS_ACCOUNT_ID完全一致。可以通过命令查看:

    aws lambda get-function --function-name YOUR_FUNCTION_NAME | grep FunctionArn
    

    把输出里的账号ID和echo $AWS_ACCOUNT_ID的结果对比,看有没有拼写错误、多空格或者数字遗漏。

  • 检查当前凭证对应的账号
    有时候本地AWS配置可能有多个profile,或者环境变量没正确生效,导致你用的不是预期的账号。运行下面的命令确认当前凭证所属账号:

    aws sts get-caller-identity
    

    输出里的Account字段就是当前操作的账号ID,必须和Lambda ARN里的账号ID完全匹配。

  • 核对PutIntegration命令的URI参数
    你调用aws apigateway put-integration时的--uri参数必须正确指向目标Lambda的ARN,格式一般是:

    arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/arn:aws:lambda:<region>:<account-id>:function:<function-name>/invocations
    

    这里面嵌套的Lambda ARN部分的账号ID必须和当前账号一致,别把之前测试用的其他账号ARN硬编码在脚本里了。

  • 排除跨账号场景(如果不是故意的)
    如果你本来就想跨账号调用Lambda,那需要额外配置权限:给API Gateway所在账号的角色添加调用Lambda的权限,同时在Lambda的资源策略里允许API Gateway的访问。但根据你的描述,你用的是同一IAM用户的资源,所以大概率不是这个情况。

快速修复方案

如果排查后发现是账号不匹配:

  1. 切换到正确的AWS凭证:要么修改环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY为Lambda所在账号的凭证,要么在脚本里添加--profile YOUR_CORRECT_PROFILE指定正确的配置文件。
  2. 修正脚本里的Lambda ARN,确保账号ID和当前操作账号一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:22:32