Amazon web services 可以上传文件,但可以';t列出S3 bucket对象。获取访问被拒绝错误

Amazon web services 可以上传文件,但可以';t列出S3 bucket对象。获取访问被拒绝错误,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我正在尝试列出S3存储桶中的所有文件。但是不断地得到错误的访问被拒绝。我想我在我的IAM用户中拥有必要的权限: { "Version": "2012-10-17", "Statement": [ { "Sid": "SID", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload",

我正在尝试列出S3存储桶中的所有文件。但是不断地得到错误的访问被拒绝。我想我在我的
IAM
用户中拥有必要的权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SID",
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:GetBucketAcl",
                "s3:GetBucketCORS",
                "s3:GetBucketLocation",
                "s3:GetBucketLogging",
                "s3:GetBucketNotification",
                "s3:GetBucketPolicy",
                "s3:GetBucketRequestPayment",
                "s3:GetBucketTagging",
                "s3:GetBucketVersioning",
                "s3:GetBucketWebsite",
                "s3:GetLifecycleConfiguration",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTorrent",
                "s3:GetObjectVersion",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectVersionTorrent",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:ListBucketVersions",
                "s3:ListMultipartUploadParts",
                "s3:PutBucketAcl",
                "s3:PutBucketCORS",
                "s3:PutBucketLogging",
                "s3:PutBucketNotification",
                "s3:PutBucketPolicy",
                "s3:PutBucketRequestPayment",
                "s3:PutBucketTagging",
                "s3:PutBucketVersioning",
                "s3:PutBucketWebsite",
                "s3:PutLifecycleConfiguration",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectVersionAcl",
                "s3:RestoreObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucket/*"
            ]
        }
    ]
}
如果我授予对S3的完全访问权(AmazonS3FullAccess策略),我可以列出对象。可能是什么问题?我想我只删除了在自定义策略中删除和创建存储桶的权限

当我添加对同一策略的完全访问权限时:

        "Action": [
            "s3:*"
        ],

我仍然不能列出对象。但使用当前权限,我可以上载和删除对象。

刚刚找到答案!策略中允许的操作是正确的。问题在于
资源
。我用的是:

"Resource": [
   "arn:aws:s3:::bucket/*"
]
但是看起来它没有给bucket的根授予权限。没有完全访问权限。因此,要使其正常工作,我们必须像这样删除
/

"Resource": [
   "arn:aws:s3:::bucket*"
]

现在它像一个符咒一样工作。

我也有同样的问题。我使用了两台机器,一台创建了aws概要文件,我可以列出s3 bucket,但在第二台机器上,我的概要文件没有创建,我使用的是SETAWSCREdential命令,我无法列出s3 bucket。创建概要文件的那一刻,我就能够访问s3 ls。

是的,列出bucket的内容需要对bucket本身的权限。上传也是一样,所以你能上传是很奇怪的。顺便说一句,你不需要在bucket名称后面加
*
。@JohnRotenstein啊,谢谢你的解释!我将尝试不使用
*
:-)注意,“arn:aws:s3:::bucket*”将匹配所有以bucket开头的bucket(即bucketABC)。