一旦こういうアレ。
test-log/1/2/3/
以下のディレクトリにだけアクセスしたい。他のバケットは見えないでいて欲しい。という感じのやつ。
つまりどういうことかっていうと、たとえば以下の様な感じでバケットの一覧があるとして、
aws s3 ls s3:// test-log test-test1 test-test2 test-test3
test-log/1/2/3以外はユーザーから見えないようにしたいっていう寸法。それはこんな感じ。出尽くしたネタだけど。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListBucketVersions" ], "Resource": "arn:aws:s3:::test-log", "Condition": { "StringLike": { "s3:prefix": "1/2/3/*" } } }, { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::test-log/1/2/3/*" } ] }
問題はこのポリシーをアタッチしても見えちゃうバケットがある、ということ。バケット名を直接指定して、lsすると中身の見えるバケットがある。実を言うとS3バケットにもポリシーがあって、そっちでアクセスを制御している場合もあるので、注意が必要だ!