以前書いた記事の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つ書くのもポリシーエラーで通りません。
自分も、すぐ忘れてしまうので、メモします。

元記事はこちら

S3のIAM設定のハマりどころ