LoginSignup
5
6

More than 5 years have passed since last update.

S3-apigatewayのCORS

Posted at

AWSのCORS関連でハマったので設定をまとめます。

概要

下記のアーキテクチャで、
- S3バケットにWEBページ静的ホスティング
- 上記WEBページから、APIGatewayを経由して別のS3バケットからデータ取得
を行います。
しかし、静的ホスティングをしているバケットのドメインとデータが格納されているドメインが異なるので、CORSでハマります。
Screenshot at 2019-01-07 22-56-07.png

APIGatewayでのCORS設定

まずクライアントPCがcallするAPIGatewayのCORS設定をする必要があります。

スクショは省略しますが、
1. API Gatewayのコンソール
2. アクショントグルボタン押下
3. CORSの有効化を選択。
4. 表示される設定値はデフォルトでOK。必要であれば、Access-Control-Allow-OriginをS3の静的ホスティングのドメインと合わせる。
5. APIGatewayのデプロイ
になります。公式はここ

これでもまだCORSでハマります。
なぜなら、S3のバケット自身もCORS設定を保有するためです。

S3でのCORS設定

こちらもスクショは省略します。
1. S3のコンソールでバケットを開く
2. アクセス権限
3. CORS設定
4. 下記のXMLドキュメントを記載して保存

config.xml
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>http://***</AllowedOrigin> <!-- ***はドメイン名-->
    <AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>

公式はここ
これでようやく静的ホスティングしているS3バケットから、別バケットのデータが取得できました!!

まとめ

ローカルホストではなく、実際にホスティングしてみると詰まるところがちょこちょこあります。
筆者はCORSの知識は少なかったですが、実際に詰まることで結構勉強になりました。ホスティング大事。

※どうでもいいけど、AWSの新アイコン・旧アイコンどっちが人気なんだろ…

参考

https://qiita.com/tanj/items/e4486f9af5d7a903117d
https://qiita.com/matsumatsu20/items/0b7342e93daba150fa50

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6