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

启用版本控制的S3 Bucket调用list-object-versions遇AccessDenied问题

问题解决:跨账号S3 ListObjectVersions权限被拒绝

核心问题:桶权限策略存在JSON语法错误

你提供的桶权限策略里,Test_get这个Statement没有正确闭合,导致整个策略无法被AWS解析,外部用户的权限根本没生效。

错误位置

在Test_get的Statement末尾:

"Resource": "arn:aws:s3:::sourcebucket/*",

这里缺少一个}来闭合当前Statement,导致JSON结构断裂。

修正后的完整策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Test_list",
            "Effect": "Allow",
            "Principal": {
                "AWS": "<user arn>"
            },
            "Action": [
                "s3:ListBucket",
                "s3:ListBucketVersions",
                "s3:GetBucketVersioning"
            ],
            "Resource": "arn:aws:s3:::sourcebucket"
        },
        {
            "Sid": "Test_get",
            "Effect": "Allow",
            "Principal": {
                "AWS": "<user arn>"
            },
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:GetObjectTagging"
            ],
            "Resource": "arn:aws:s3:::sourcebucket/*"
        },
        {
            "Sid": "Test_get-bucket-location",
            "Effect": "Allow",
            "Principal": {
                "AWS": "<user arn>"
            },
            "Action": "s3:GetBucketLocation",
            "Resource": "arn:aws:s3:::sourcebucket"
        }
    ]
}

其他需要确认的点

  • 确保你执行命令时用的桶名my-bucket和策略里的sourcebucket是同一个,别出现桶名不一致的情况。
  • 用桶所有者账号验证版本控制状态:
    aws s3api get-bucket-versioning --bucket your-bucket-name
    
    确认返回结果里Status字段为Enabled。
  • 检查IAM用户所在账号是否有全局拒绝S3操作的策略(比如组织SCP或IAM拒绝策略),不过你已经给了AmazonS3FullAccess,这种概率极低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:47:57