S3で特定のバケットを誰でも読み取りできるようにするバケットポリシー

Amazon S3のバケットについて、誰でも読み取りできるようにするためのバケットポリシーについてのメモ書き。jQueryなんかgetしたりなんだりするための設定も併せて。

目次

S3の権限

S3において、特に設定を変更せずにバケットを作成すると、非公開のバケットが作成される。普通はそれでよいのだが、公開用のバケットを作成したい時もある。

誰でも読み取りできるようなバケットにするには、コンソールでS3→バケットを選択し、「アクセス権限」タブより「バケットポリシー」で下記のようなjsonを記述する。

バケットポリシーの作成

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ReadThisBacketImg",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::{バケット名}/*"
        }
    ]
}

これでバケットがパブリックになる。

CORSの設定

こういう設定をするバケットは、JavaScriptやらでGETしたい時もある。そういう時は、CORS(Cross-Origin Resource Sharing)の設定を行う。先と同様の手順で、「バケットポリシー」ではなく「CORSの設定」より、以下のxmlを記述する。


<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>

このあたりの詳細については「AWS S3上のjsonファイルをgetJSONしたらNo ‘Access-Control-Allow-Origin’ header is present on the requested resourceと怒られた時の対応 – 或る阿呆の記」を参照。

以上。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次