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関数に被せておく必要がある。
参考
ありがとうございました。
関連記事
aws の記事
- [2019年1月12日] AWS CLIでよく使っているコマンド
- [2018年11月17日] S3に有効期限のあるURLを作って画像ファイルをPUTする
- [2018年8月22日] クラウドの利用について思う
- [2018年8月21日] boto3でS3にアップロードした画像が、ブラウザで表示するとダウンロードされてしまう時
- [2018年8月10日] DynamoDBを使い始めて気をつけていること。DynamoDBをLambdaで使いたい
- ---本記事---
- [2018年8月3日] AWSのLambdaでcronみたいな感じで定期実行する
- [2018年7月31日] LambdaでS3をトリガーにした時にConfigurations overlap. Configurations on the same bucket cannot share a common event type.と怒られる
- [2018年7月31日] Lambdaで、S3に画像がアップロードされたら、別のバケットにコピーする(python3)
- [2018年7月27日] 既存システムにAWSのLambdaで作ったREST APIの認可で手こずる
- [2018年7月24日] S3で特定のバケットを誰でも読み取りできるようにするバケットポリシー
スポンサーリンク