AWS S3で配信するhtmlからCORS (Cross-Origin Resource Sharing)を行う¶
動機¶
一般公開されるAPIは基本的にブラウザからのアクセスはできない(CORS)。
S3でサイトを公開している場合には何かを経由する必要がある。
サーバの管理をしたくないからS3を選択したので楽して解決したい。
AWS API Gateway を使う¶
サービス一覧のアプリケーションサービスにある API Gateway 選択してAPI管理画面に移る
Create API
を押してNew API
を作成するActions > Crate Resource で適当なリソースを作成する(しなくてもいい)
Actions > Create Method で目的にあったhttpメソッドを作る
以下を入力して保存する
Integration type : HTTP Proxy HTTP method : 利用したいAPIのメソッド Endpoint URL : 利用したいAPIのURL
Method Request を選択して、URL Query String Parameters に渡したい値を追加する
Actions > Enable CORS でCORSを許可する設定にする(自動でしてくれる)
Actions > Deploy API でステージに上げる(これで使えるようになる)
出来上がった API を S3 の html から叩く
感想¶
思いのほか簡単に解決できた。
APIで取得したデータを加工して渡したいときは API から Lambda
を呼び出して Lambda から API を叩くこともできる。