IAMポリシーでバケットに対しての権限を設定する時、
ちょっとしたミスでダウンロードできない状態になり時間を喰ってしまうのをちょいちょいやってしまってるので、
備忘録を書き残しておきます。
誤っているポリシー
{
"Version": "2012-10-17",
"Id": "ExamplePolicy01",
"Statement": [
{
"Sid": "ExampleStatement01",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Satoshi"
},
"Action": [
"s3:GetObject",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::example-bucket1"
]
}
]
}
このポリシーでexample-bucket1のオブジェクトをダウンロードしようとすると、「AccessDenied」になります。
誤っている箇所と対策
誤っているのはここです。
"Resource": [
"arn:aws:s3:::example-bucket1"
]
ダウンロードするのは バケットの中のオブジェクト なので、下記のようにして「example-bucket1配下のオブジェクトすべて」を指定する必要があります。
"Resource": [
"arn:aws:s3:::example-bucket1/*"
]
なお、この書き方ならOKでした。
前方一致になってARNがarn:aws:s3:::example-
から始めるすべてがOKになるからでしょうね。
意図しない動きになりそうなのであんまりやりませんが・・・。
"Resource": [
"arn:aws:s3:::example-*"
]
参考