Google Cloud StorageのbucketにCORSの設定をする
railsのアプリでGCS(Google Cloud Storage)にダイレクトアップロードをしたいとなって、CORSの設定が必要になったのでそのときにした設定をメモ。
CORSの設定は管理コンソールからはできないので、コマンドで実行する必要がある。
gcloudでもできるようだけど、gsutilの方がコマンドがシンプルにみえたので、そっちでやってみた。
まずは現在の設定を確認。未設定の場合は何も出てこない。
$ gsutil cors get gs://{バケット名}
CORSの設定をjsonとして作成しておく。ドメインのところを自分のサービスのドメインに変更しよう。
この設定自体はrailsガイドに書かれていたものをそのまま参考にしました。
今回はGCSですが、他のストレージサービスも同じような流れで設定することになるようですね。
[
{
"origin": ["https://example.com"],
"method": ["PUT"],
"responseHeader": ["Origin", "Content-Type", "Content-MD5", "Content-Disposition"],
"maxAgeSeconds": 3600
}
]
今度はsetを使うとこれで更新ができてしまう。
$ gsutil cors set {上記のjsonファイルを指定} gs://{バケット名}
再びgetをしてみて、設定内容が反映されていればOK。その後アプリからダイレクトアップロードをしたら、ちゃんと動作しました。
$ gsutil cors get gs://{バケット名}
[{"maxAgeSeconds": 3600, "method": ["PUT"], "origin": ["https://example.com"], "responseHeader": ["Origin", "Content-Type", "Content-MD5", "Content-Disposition"]}]
コマンドでもいいけど、いずれ管理コンソールからもできるようにしてほしいなとは思いました。
この記事の環境情報
- gsutil 5.17
- 昨日は忘年会だったけど、二日酔いにならなかった朝
GCPに関する他の記事を読む
最近の記事を読む
- Flutterでcontextを使わずにlocale情報を取得する
- Cloud RunでIAPを有効にしようとしてハマったこと
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら