以前書いた記事のS3のIAM設定ですが、最近のマネジメントコンソールだと怒られるので、修正版とその他ハマりどころを書きます。
StringEquals で “”は指定できないよ!
{ "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::" ], "Condition": { "StringEquals": { "s3:prefix": [ "" ] } } },
と以前書いたのですが、ポリシーエラーだと言われて通りません。修正点は StringEquals
=> StringLike
に修正してください、これで通ります。
CloudBerry専用の対策
前回の記事の設定では、CloudBerryを利用した場合のみ、自分のディレクトリまで掘ることが出来ません。対策はコチラです。(CloudBerry-Labに問い合わせて教えてもらいました)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::" ], "Condition": { "StringLike": { "s3:prefix": [ "" ] }, "StringEquals": { "s3:delimiter": [ "/" ] } } }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3::: " ], "Condition": { "Null": { "s3:prefix": "true" }, "StringEquals": { "s3:delimiter": [ "/" ] } } }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3::: " ] } ] }
StringNotLikeで複数条件したいなら
"Condition": { "StringNotLike": { "s3:prefix": [ "hoge/*", "arege/*" ] } }
とします。 Condition の下に StringNotLikeを2つ書くのもポリシーエラーで通りません。
自分も、すぐ忘れてしまうので、メモします。