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と怒られた時の対応 – 或る阿呆の記」を参照。
以上。
コメント