AWS S3:在更改策略后无法列出存储桶

时间:2017-07-26 07:16:16

标签: amazon-web-services amazon-s3 amazon-iam

我们在AWS S3中创建了一个Bucket,并在IAM-User中创建了一个特定策略来限制对此存储桶的访问,如下所示:

Bucket :testbucket

政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectVersionAcl"
            ],
            "Resource": [
                "arn:aws:s3:::testbucket/*",
            ]
        }
    ]
}

然后我们创建了一个IAM用户并将此策略分配给用户的权限。我们获得了一个Access-Key和一个Secret-Access-Key,可以成功地将文件上传到存储桶,并使用给定的已知URL下载它们。

现在我们希望能够列出存储桶中的所有对象。 因此我以这种方式改变了政策:

新政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectVersionAcl"
            ],
            "Resource": [
                "arn:aws:s3:::testbucket/*",
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::testbucket/*"
            ]
        }
    ]
}

此处的新项目为s3:ListBucket

我已成功更改此政策,可以在AWS上重新加载页面,以确保这些更改仍然存在。

但是,我已经等了一个小时,但我仍然无法列出桶的对象。

为了测试我使用的是应用程序Cyber​​Duck。它可以在验证后列出存储桶本身,但仍然无法列出存储桶中的对象。

我还需要做点什么吗?

1 个答案:

答案 0 :(得分:4)

s3:ListBucket适用于存储桶,而不适用于其中的对象。因此,第二个语句不能有尾部斜杠和通配符,因此应该是:

{
    "Effect": "Allow",
    "Action": [
        "s3:ListBucket"
    ],
    "Resource": [
        "arn:aws:s3:::testbucket"
    ]
}