[Unity] Asset Bundle をビルドしてAWS S3 にアップロードする を参考にして Google Cloud Storage にアップロードするエディタ拡張を作ってみた。
使い方
-
ドキュメント を参考に Google のサービスアカウントを作成する
- サービスアカウントとはスクリプトなどから GCP にアクセスするためのアカウント
- サービスアカウントごとに秘密鍵が発行されその秘密鍵で署名された JWT によって認証を行う
- サービスアカウントはプロジェクトに関連付けられるので必要であればここでプロジェクトも作成する
- サービスアカウントには Google Cloud Storage の読み書き権限を付けておく
- P12 形式の秘密鍵をダウンロードする
- パスワードは必要になるのでメモしておく
- 秘密鍵は Assets 直下に保存する(他の場所に移動したい場合はスクリプトを更新する必要がある)
- Asset Bundle をアップロードするバジェットはあらかじめ作成しておく
- スクリプト中の "keyFile", "keyPassword", "email", "badgetName" を設定する
- メニューから "Build/Build AssetBundles And Upload GCS" を選択すると Asset Bundle のビルドとアップロードが実行される
補足
- JWT が正常に作れているかは JWT公式サイト で確認することができる
- 発行されたアクセストークンの内容の確認は
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ACCESSTOKEN
でできる -
GoogleJsonWebToken.Create
で GoogleJWTPayload の scope を変更すれば他の GCP のサービスも利用できる- 利用できるスコープの一覧は https://developers.google.com/identity/protocols/googlescopes から確認できる
追記
- AssetBundle をダウンロードするのに
WWW.LoadFromCacheOrDownload
を使う場合はヘッダーを設定することができないためアップロード時のように認証用の JWT を指定することができない。 - そのため
WWW.LoadFromCacheOrDownload
を利用する場合は Google Cloud Storage 側でファイルの権限を全公開にする必要がある。 この対応については後ほど追記するが https://cloud.google.com/storage/docs/access-control/making-data-public に従って公開設定をすれば良さそう- ファイルアップロード後にファイルの公開権限を全公開にするように変更した