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

跨AWS账户用IAM角色实现S3 Sync遇权限问题求解决方案

跨账户S3 Sync权限问题解决方案

问题核心

你当前的角色配置中,没有任何一个角色能同时访问两个账户的S3桶,而aws s3 sync默认使用当前会话权限访问源和目标桶,因此必然出现权限错误。

解决方案1:使用多CLI配置文件分权限执行(推荐)

无需修改现有角色,利用AWS CLI的多profile特性,让源桶和目标桶分别使用对应账户的权限:

  1. 在~/.aws/config中配置两个profile:
    • account1111:关联你访问账户1111的SSO角色(确保该角色有权访问bucket-in-account-1111)
    • account2222:关联你访问账户2222的role-2222角色(或直接配置SSO角色)
  2. 执行sync命令时指定双profile:
    aws s3 sync s3://bucket-in-account-1111 s3://bucket-in-account-2222 --source-profile account1111 --destination-profile account2222
    
    该命令会用account1111权限读取源桶,用account2222权限写入目标桶,完全不需要S3桶策略。

解决方案2:创建可跨双桶访问的角色链

如果必须用单个角色执行sync,按以下步骤调整配置:

  1. 更新账户2222的role-2222权限策略:
    添加对账户1111桶的访问权限,策略内容如下:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "s3:*",
                "Resource": [
                    "arn:aws:s3:::bucket-in-account-2222",
                    "arn:aws:s3:::bucket-in-account-2222/*",
                    "arn:aws:s3:::bucket-in-account-1111",
                    "arn:aws:s3:::bucket-in-account-1111/*"
                ]
            }
        ]
    }
    
  2. 在账户1111中授权role-2222访问源桶:
    在账户1111中创建一个IAM权限策略,允许arn:aws:iam::2222:role/role-2222访问bucket-in-account-1111,并将该策略附加到账户1111的管理员角色或对应的SSO角色上。
  3. 执行角色切换并同步:
    先通过账户1111的角色assumerole-2222,再执行sync命令:
    # 切换到role-2222并获取临时凭证
    aws sts assume-role --role-arn arn:aws:iam::2222:role/role-2222 --role-session-name sync-session
    # 配置临时凭证后执行同步
    aws s3 sync s3://bucket-in-account-1111 s3://bucket-in-account-2222
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:07:10