railsのアプリでGCS(Google Cloud Storage)にダイレクトアップロードをしたいとなって、CORSの設定が必要になったのでそのときにした設定をメモ。

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
  • 昨日は忘年会だったけど、二日酔いにならなかった朝