web-dev-qa-db-ja.com

S3バケットポリシーで特定のサブフォルダーをパブリックに、その他のすべてをプライベートにしますか?

現在、すべてを公開するS3バケットポリシーがあります。

現時点では、バケット「bucket1」があり、内部には各エントリ番号01から上向き(例:01、02、03)の番号付きサブフォルダがあり、その中には常に「128」というフォルダがあります。

128フォルダー内のファイルを常にパブリックにしたいのです。

したがって、「bucket1/*/128」などのすべてにタイムスタンプ付きの署名でのみアクセスできるようにする必要があります。

これは可能だと思いますが、ステートメントの作成方法がわかりません。

23
realdannys

やった!

私は必要なすべてがデフォルトの「すべて許可」ポリシーを取得し、指定したサブフォルダーに適用するだけだったときに、ほとんど知られていない「not resource」を含め、これを試して達成するためにあらゆる種類の長い間考えすぎた方法を試していました!

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::BUCKETNAME/*/128/*"
        }
    ]
}

注:リソース名を編集しました。

49
realdannys