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

跨AWS账户S3 Bucket同步遇权限问题:ListObjectsV2访问被拒

AWS S3跨账户同步权限排查:AccessDenied 问题解决思路

问题背景

你使用dest_profile(对应拥有目标桶所有权的服务账户)执行跨账户S3同步时遇到权限错误:

aws s3 sync s3://SOURCE_BUCKET s3://DEST_BUCKET --profile dest_profile

错误信息:

fatal error: An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied

单独执行aws s3 ls s3://SOURCE_BUCKET --profile dest_profile也报相同错误,且已请求源桶添加了如下桶策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "XX_ReadOnlyAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::......:user/....."
            },
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::<bucket-name>",
                "arn:aws:s3:::<bucket-name>/*"
            ]
        }
    ]
}

可能遗漏的配置项

  • 验证服务账户ARN准确性:桶策略中Principal字段的ARN必须与你的服务账户ARN完全匹配,包括账户ID、用户名,不能有任何拼写或格式错误。比如确认arn:aws:iam::123456789012:user/my-service-user是正确的。
  • 检查源桶公共访问阻止设置:如果源桶所在账户开启了Block public access中的Block public policies或Restrict public buckets,会导致自定义桶策略失效。需要源桶管理员关闭这两项(你的访问是指定特定IAM用户,不属于公共访问范畴)。
  • 排查服务账户IAM策略的显式拒绝:你的服务账户自身的IAM策略可能存在Deny语句,覆盖了桶策略的Allow权限。检查是否有针对s3:ListBucket、s3:GetObject的拒绝规则,或者IP地址、MFA等条件限制导致无法访问。
  • 确认对象级ACL权限:如果源桶内的对象是其他用户上传的,可能设置了对象级ACL拒绝你的服务账户访问。此时即使桶策略允许,对象ACL的优先级更高,需要源桶管理员调整对象ACL。
  • 用策略模拟器验证策略有效性:让源桶管理员使用AWS控制台的策略模拟器,模拟你的服务账户执行s3:ListBucket和s3:GetObject操作,确认策略是否真正生效。有时候策略语法看似正确,但存在隐藏的格式错误(如引号、逗号)导致不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 15:05:01