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

跨账号SNS触发Lambda时CloudFormation部署报403 Authorizationerror错误

跨账号SNS触发Lambda 403授权错误解决方案

你遇到的报错如下:

The account A is not the owner of Endpoint ARNof-lambda-in-accountB (Service: AmazonSNS,Status Code: 403,ErrorCode: Authorizationerror)

按以下优先级排查修复:

1. 修正SNS订阅的创建主体

  • 这是该报错最常见的触发原因:AWS要求SNS订阅必须由端点所有者发起创建,不能由SNS topic的所有者跨账号为其他账号的端点创建订阅。如果你当前是在账号A的CloudFormation栈中定义了AWS::SNS::Subscription资源指向账号B的Lambda,就会触发这个错误。
  • 修复方案:将AWS::SNS::Subscription资源的定义迁移到账号B的CloudFormation栈中,由账号B的部署身份发起订阅请求到账号A的SNS topic。

2. 校验Lambda资源策略配置

即使你已经添加了SNS触发,也要确认Lambda的资源策略配置符合最小权限要求,必须精确关联到账号A的SNS topic ARN,参考配置如下:

{
  "Effect": "Allow",
  "Principal": {
    "Service": "sns.amazonaws.com"
  },
  "Action": "lambda:InvokeFunction",
  "Resource": "<账号B的Lambda ARN>",
  "Condition": {
    "ArnEquals": {
      "AWS:SourceArn": "<账号A的SNS Topic ARN>"
    }
  }
}

3. 校验SNS Topic访问策略配置

确认账号A的SNS Topic策略中,明确授予账号B的部署身份sns:Subscribe权限,参考配置如下:

{
  "Effect": "Allow",
  "Principal": {
    "AWS": "<账号B的账号ID/CloudFormation部署角色ARN>"
  },
  "Action": "sns:Subscribe",
  "Resource": "<账号A的SNS Topic ARN>",
  "Condition": {
    "ArnEquals": {
      "sns:Endpoint": "<账号B的Lambda ARN>"
    }
  }
}

4. 配置验证

调整完成后可先在账号B的Lambda控制台手动添加账号A的SNS作为触发器,验证链路连通后再同步更新CloudFormation模板,降低部署试错成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:15:03