0

我想要做的是列出存储桶的所有内容,除了特定文件夹(存档)的内容。问题是当我“ls”存储桶时,我也从“存档”文件夹中获取文件。这是我目前的设置:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:ListBucket"
      ],
      "Sid": "Stmt1382452205000",
      "Resource": [
        "arn:aws:s3:::mybucket"
      ],
      "Condition":{
          "StringNotLike":{"s3:prefix":["archive/"]}
       },
      "Effect": "Allow"
    },
    {
      "Sid": "ExplictDenyAccessToArchive",
      "Action": ["s3:*"],
      "Effect": "Deny",
      "Resource":["arn:aws:s3:::mybucket/archive/*"]
    },
    {
      "Sid": "DenyListBucketOnArchive",
      "Action": ["s3:ListBucket"],
      "Effect": "Deny",
      "Resource": ["arn:aws:s3:::*"],
      "Condition":{
          "StringLike":{"s3:prefix":["archive/"]}
       }
    }
  ]
}
4

1 回答 1

2

IAM 策略中的 ListBucket 操作适用于存储桶级别。您不能在存储桶的子集上授予它。

听起来您的目标是从文件列表中排除文件,而不是限制对用户的访问。不幸的是,S3 api 不允许您指定要排除的前缀。但是,您可以使用 API 的分隔符选项来获取所有顶级路径的顶级列表,然后使用前缀和标记参数进行后续调用以仅列出您感兴趣的路径。

更多详情请访问: http ://docs.aws.amazon.com/AmazonS3/latest/API/SOAPListBucket.html

于 2013-10-23T06:22:59.573 回答