iyuichiの私的開発ログ

渋谷で働くWebエンジニアのログ. Java, Android, iOS, Docker, GCP, AWS, ゲーム開発

Google Cloud Storageにアップロードしたファイルを公開する

今回はGCPネタです。
過去に記事にしたこのアプリの部品として考えてます。

iyuichi.hatenablog.jp


Cloud Storage上に画像ファイルをアップロードして、それを公開するというのをやってみました。
公開されるURLのドメインは下記のいずれでもよいみたいです。お好きなほうをどうぞ。

storage.googleapis.com/<bucket>/<object>
<bucket>.storage.googleapis.com/<object>

あとはオブジェクトを一般公開の状態で設置すれば完了なので簡単です。

以下のようにアップロードするたびに公開設定してやるのは面倒ですね。

$ gsutil acl set public-read gs://nearby-chat-storage/tldr.jpg

そこでこのバケットにおいたらデフォルトで公開するように設定してみます。

$ gsutil defacl ch -u AllUsers:R gs://nearby-chat-storage

確認してみましょう。全ユーザに読み取り権限が付く設定になったようです。

$ gsutil defacl get gs://nearby-chat-storage
  {
    "entity": "allUsers",
    "role": "READER"
  }

実際にストレージブラウザへドラッグ&ドロップしてみたり、gsutilからアップロードしてみましょう。

そして、あまりドキュメントに詳しく書かれていないですが一般公開したオブジェクトはキャッシュにのります。

If an object is accessible to all anonymous users and you do not specify a cache control setting, Google Cloud Storage applies a cache control setting of 3600 seconds.

HTTP Headers and Query String Parameters - Cloud Storage — Google Cloud Platform

デフォルトでは1時間キャッシュされるようです。
Cache-Controlヘッダーを設定することもできるようですがベストエフォートだという話もみかけるので、最大設定してある時間数だけキャッシュされると思っておくのがよさそう。

これで画像のアップロード先の準備とそいつを公開するところまでできました。

なかなか進んでいないチャットアプリですが次は画像アップロード部分の実装を組み込んでみたいと思っています。