AWSのS3で、JavaScriptやらなんやらでGETしたりPUTしたりしたい時のための、S3の設定(CORSの設定)のメモ。
ただの公開設定、GETだけなら「S3で特定のバケットを誰でも読み取りできるようにするバケットポリシー – 或る阿呆の記」。
目次
やりたい
S3の任意のバケットについて、JavaScriptやらでGETしたりPUTしたりしたい。
やること
JavaScriptでGETやらPUTやらするということは、異なるドメインからのアクセスということになるので、CORSの設定が必要。
コンソールより、S3で対象のバケットを選択して、CORSの設定を以下のようにする。
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
これを設定したバケットについては、ここで許可したメソッドがJavaScriptで使えるようになる。
この記事はS3の設定だけなので、あとは対象外だが、実際にPUTとかするときには、S3のオブジェクトをどうこうしてよい、という権限を別途与えることが必要。たとえばLambda関数でバケットにアクセスする場合、そのバケットにGetObjectやらPutObjectやらしてよいとするポリシーを適用したIAMロールを、Lambda関数に被せておく必要がある。
参考
ありがとうございました。
コメント