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 の delimiter オプションを使用してトップ レベルのすべてのパスのトップ レベルのリストを取得し、プレフィックスとマーカー パラメーターを使用してフォローアップ コールを行い、関心のあるパスのみをリストすることができます。

詳細: http://docs.aws.amazon.com/AmazonS3/latest/API/SOAPListBucket.html

于 2013-10-23T06:22:59.573 に答える