このページでは、Cloud Run のボリューム マウントを使用して、Cloud Storage バケットをストレージ ボリュームとしてマウントする方法について説明します。
Cloud Run でバケットをボリュームとしてマウントすると、バケットの内容がコンテナ ファイル システムのファイルとして提示されます。これにより、標準のファイル システム オペレーションとライブラリを使用して、そのファイル システムにアクセスできます。
制限事項
Cloud Run は、このボリューム マウントに Cloud Storage FUSE を使用します。そのため、Cloud Storage バケットをボリュームとしてマウントする場合は、次の点に注意してください。
- Cloud Storage FUSE では、同じファイルへの複数書き込みの同時実行制御(ファイルのロック)は行いません。複数の書き込みによってファイルの置き換えが試みられた場合は、最後の書き込みが有効となり、それより前の書き込みはすべて失われます。
- Cloud Storage FUSE は POSIX 準拠のファイル システムではありません。詳細については、Cloud Storage FUSE のドキュメントをご覧ください。
始める前に
ボリュームとしてマウントするには、Cloud Storage バケットが必要です。
Cloud Storage ボリュームをマウントする
複数のバケットを異なるマウントパスにマウントできます。複数のコンテナで同じマウントパスまたは異なるマウントパスを使用して、ボリュームを複数のコンテナにマウントすることもできます。
複数のコンテナを使用している場合は、まずボリュームを指定してから、各コンテナのボリューム マウントを指定します。
コンソール
Google Cloud コンソールで、[Cloud Run] に移動します。
デプロイ先の新しいサービスを構成する場合は、[サービスを作成] をクリックします。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。
[ボリューム] タブをクリックします。
- [ボリューム] で、次の操作を行います。
- [ボリュームを追加] をクリックします。
- [ボリュームのタイプ] プルダウンで、ボリューム タイプとして Cloud Storage バケットを選択します。
- [ボリューム名] フィールドに、ボリュームに使用する名前を入力します。
- ボリュームに使用する Cloud Storage バケットを参照して選択するか、必要に応じて新しいバケットを作成します。
- バケットを読み取り専用にする場合は、[読み取り専用] チェックボックスをオンにします。
- [完了] をクリックします。
- [コンテナ] タブをクリックします。
- [ボリュームのマウント] タブをクリックします。
- [ボリュームをマウント] をクリックします。
- メニューからストレージ ボリュームを選択します。
- ボリュームをマウントするパスを指定します。
- [完了] をクリックします
- [ボリューム] で、次の操作を行います。
[作成] または [デプロイ] をクリックします。
コマンドライン
注: ここでは gcloud beta run services update
コマンドを使用していますが、ここに示されているパラメータを指定して gcloud beta run deploy
コマンドを使用することもできます。
ボリュームを追加してマウントするには:
gcloud beta run services update SERVICE \ --execution-environment gen2 \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
次のように置き換えます。
- SERVICE: 実際のサービスの名前。
- MOUNT_PATH は、ボリュームをマウントする相対パス(
/cache
など)に置き換えます。 - VOLUME_NAME は、ボリュームに付ける名前に置き換えます。VOLUME_NAME 値は、ボリュームをボリューム マウントにマッピングするために使用されます。
- BUCKET_NAME: Cloud Storage バケットの名前。
ボリュームを読み取り専用ボリュームとしてマウントするには:
--add-volume=name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,readonly=true
複数のコンテナを使用している場合は、まずボリュームを指定してから、各コンテナのボリューム マウントを指定します。
gcloud beta run services update SERVICE \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \ --container CONTAINER_1 \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH \ --container CONTAINER_2 \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH2
YAML
既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export
コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順でフィールドを変更し、gcloud run services replace
コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。
次のコマンドで、構成を表示してダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
必要に応じて更新します。
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: annotations: run.googleapis.com/execution-environment: gen2 spec: containers: - image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATH volumes: - name: VOLUME_NAME csi: driver: gcsfuse.run.googleapis.com readOnly: IS_READ_ONLY volumeAttributes: bucketName: BUCKET_NAME
次のように置き換えます。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はREGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。 - MOUNT_PATH は、ボリュームをマウントする相対パス(
/cache
など)に置き換えます。 - VOLUME_NAME は、ボリュームに付ける名前に置き換えます。VOLUME_NAME 値は、ボリュームをボリューム マウントにマッピングするために使用されます。
- ボリュームを読み取り専用にする場合は IS_READ_ONLY を
True
に置き換えます。書き込み可能にするにはFalse
に置き換えます。 - BUCKET_NAME は、Cloud Storage バケットの名前に置き換えます。
- IMAGE_URL: コンテナ イメージへの参照(
次のコマンドを使用して、サービスを新しい構成に置き換えます。
gcloud run services replace service.yaml
ボリューム マウント設定を表示する
Cloud Run サービスの現在のボリューム マウント設定を表示するには:
コンソール
Google Cloud コンソールで、[Cloud Run] に移動します。
目的のサービスをクリックして、[サービスの詳細] ページを開きます。
[リビジョン] タブをクリックします。
右側の詳細パネルで、[ボリューム] タブにボリューム マウントの設定が表示されます。
コマンドライン
次のコマンドを使用します。
gcloud run services describe SERVICE
返された構成で、ボリューム マウント設定を見つけます。