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

在CloudFormation中创建跨账户S3访问策略遇错误求助

我之前配置跨账户S3桶策略的时候,也被CloudFormation的错误折腾过好一阵!结合你提到的文档和SO上类似的非CloudFormation场景问题,给你梳理几个最容易踩坑的排查点:

常见排查方向
  • 确认Principal的ARN绝对准确
    这是最容易犯的低级错误——要么少写了外部账户的ID,要么角色名称拼写错了。一定要确保你在桶策略里指定的Principal是外部角色的完整ARN,比如arn:aws:iam::123456789012:role/ExternalCrossAccountRole,同时要和对方确认这个角色确实存在于他们的AWS账户中。

  • 检查外部角色的信任关系是否放行
    就算你的S3桶策略给足了权限,如果外部角色的信任策略没允许你的账户(或者执行CloudFormation的角色)去扮演它,访问肯定会被拒绝。要让对方检查他们角色的信任策略,确保包含类似这样的语句:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::你的AWS账户ID:root"
          },
          "Action": "sts:AssumeRole",
          "Condition": {}
        }
      ]
    }
    

    如果你们是用特定的IAM角色执行CloudFormation,把上面的Principal换成该角色的ARN会更安全。

  • 验证CloudFormation执行角色的权限
    CloudFormation的执行角色得有足够权限去修改S3桶策略,也就是必须包含s3:PutBucketPolicy权限。检查执行角色的策略,确保有类似这样的配置:

    {
      "Effect": "Allow",
      "Action": "s3:PutBucketPolicy",
      "Resource": "arn:aws:s3:::你的目标桶名称"
    }
    
  • 排查桶策略的语法和逻辑问题
    有时候桶策略的语法小错误(比如少个逗号、括号不匹配)或者逻辑矛盾(比如Effect设成了Deny却想允许访问)都会导致CloudFormation报错。可以先用AWS的IAM策略验证工具(控制台里就能找到)检查语法,同时确认Action和Resource匹配:比如要允许读取对象,Action要包含s3:GetObject,Resource要写arn:aws:s3:::你的桶名称/*;如果要列桶内容,还要加s3:ListBucket和桶本身的ARN。

  • 排查跨账户的全局限制
    如果对方账户属于AWS组织,要确认他们的服务控制策略(SCP)没有限制角色进行跨账户的S3访问。另外,检查你的S3桶的公有访问设置,有没有开启“阻止跨账户访问”的相关选项,如果有的话需要调整后再测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:31:57