AWS S3 存储桶策略



我想做的是列出存储桶的所有内容,但特定文件夹(存档)的内容除外。问题是当我"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/"]}
       }
    }
  ]
}

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

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

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

相关内容

  • 没有找到相关文章

最新更新