バケットを作成する際、設定したプロパティの一部(バケットの名前、地理的位置、バケットが属するプロジェクトなど)は永続的で、変更できません。ただし、実際にはバケットの移動や名前変更は可能です。
古いバケットにデータがない場合は、バケットを削除して、新しいロケーションで、または新しいプロジェクトで、新しい名前の別のバケットを作成します。
バケットにデータが含まれている場合は、新しい名前、ロケーション、プロジェクトを指定して新しいバケットを作成し、データを古い方のバケットから新しいバケットにコピーしたうえで、古いバケットとその内容を削除します。手順については、下記をご覧ください。
新しいバケットに古いバケットと同じ名前を付ける場合は、別の名前のバケットにデータを一時的に移動する必要があります。これにより、元のバケットが削除され、バケット名を再利用できるようになります。
ロケーション間でデータを移動すると、ネットワークの使用料金が発生します。また、移動するオブジェクトが Nearline ストレージ オブジェクト、Coldline ストレージ オブジェクト、Archive ストレージ オブジェクトの場合に、バケット間でデータを移動すると、取得と早期削除の料金が発生することがあります。
必要な権限
コンソール
Google Cloud コンソールを使用してこのガイドを完了するには、適切な IAM 権限が必要です。アクセスするバケットが自分で作成していないプロジェクト内に存在する場合は、必要な権限を含むロールをプロジェクト オーナーに付与する必要があります。
特定のアクションに必要な権限の一覧については、Google Cloud コンソールに適用される IAM 権限をご覧ください。
関連するロールのリストについては、Cloud Storage のロールをご覧ください。また、特定の制限された権限を持つカスタムロールを作成することもできます。
コマンドライン
コマンドライン ユーティリティを使用してこのガイドを完了するには、適切な IAM 権限が必要です。アクセスするバケットが自分で作成していないプロジェクト内に存在する場合は、必要な権限を含むロールをプロジェクト オーナーに付与する必要があります。
特定の操作に必要な権限の一覧については、gsutil コマンドの IAM 権限をご覧ください。
関連するロールのリストについては、Cloud Storage のロールをご覧ください。また、特定の制限された権限を持つカスタムロールを作成することもできます。
REST API
JSON API
JSON API を使用してこのガイドを完了するには、適切な IAM 権限が付与されている必要があります。アクセスするバケットが自分で作成していないプロジェクト内に存在する場合は、必要な権限を含むロールをプロジェクト オーナーに付与する必要があります。
特定のアクションに必要な権限の一覧については、JSON メソッドの IAM 権限をご覧ください。
関連するロールのリストについては、Cloud Storage のロールをご覧ください。また、特定の制限された権限を持つカスタムロールを作成することもできます。
バケット間でデータを移動する
コンソール
Google Cloud コンソールから Cloud Storage Transfer Service を使用します。
- 転送先バケットがない場合は、バケットを作成します。
Google Cloud コンソールで [転送] ページを開きます。
- [転送ジョブを作成] をクリックします。
段階的チュートリアルに沿って、各手順を完了するごとに [次のステップ] をクリックします。
転送元の選択: ソースタイプとして Google Cloud Storage バケットを使用します。目的のバケットの名前を直接入力するか、[参照] をクリックして必要なバケットを選択します。
転送先の選択: 目的のバケットの名前を直接入力するか、[参照] をクリックして必要なバケットを選択します。
設定の選択: [転送後にファイルをソースから削除する] オプションを選択します。
スケジュールのオプション: このセクションは無視してください。
段階的なチュートリアルの完了後、[作成] をクリックします。
これで古いバケットから新しいバケットへのオブジェクトのコピーが開始されます。この処理には時間がかかる場合がありますが、[作成] をクリックしたら Google Cloud コンソールから移動しても構いません。
転送の進行状況を確認するには:
Google Cloud コンソールで [転送] ページを開きます。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
設定時に [転送完了後に転送元オブジェクトを削除する] チェックボックスをオンにしていれば、転送が完了した後、古いバケットからオブジェクトを削除するために必要な操作はありません。ただし、古いバケットを削除することもできます。その場合は別途行う必要があります。
コマンドライン
gcloud
- まだ作成していない場合は、転送先バケットを作成します。
--recursive
オプション付きでgcloud storage cp
コマンドを使用し、転送元バケットからすべてのオブジェクトを転送先バケットに再帰的にコピーします。gcloud storage cp --recursive gs://SOURCE_BUCKET/* gs://DESTINATION_BUCKET
ここで
SOURCE_BUCKET
は、元のバケットの名前です。例:old-bucket
DESTINATION_BUCKET
は、データ移動先のバケットの名前です。例:my-bucket
。
--recursive
オプション付きでgcloud storage rm
コマンドを使用して、転送元バケットからすべてのオブジェクトとバケット自体を再帰的に削除します。gcloud storage rm --recursive gs://SOURCE_BUCKET
ここで、
SOURCE_BUCKET
は元のバケットの名前です。例:old-bucket
オブジェクトを削除して転送元バケットを残す場合、次のようにします。
gcloud storage rm --all-versions gs://SOURCE_BUCKET/**
gsutil
転送先バケットがない場合は、バケットを作成します。
-r
オプション付きでgsutil cp
コマンドを使用し、転送元バケットからすべてのオブジェクトを転送先バケットに再帰的にコピーします。gsutil cp -r gs://SOURCE_BUCKET/* gs://DESTINATION_BUCKET
ここで
SOURCE_BUCKET
は、元のバケットの名前です。例:old-bucket
DESTINATION_BUCKET
は、データ移動先のバケットの名前です。例:my-bucket
-r
オプション付きでgsutil rm
コマンドを使用して、転送元バケットからすべてのオブジェクトとバケット自体を再帰的に削除します。gsutil rm -r gs://SOURCE_BUCKET
ここで、
SOURCE_BUCKET
は元のバケットの名前です。例:old-bucket
オブジェクトを削除して転送元バケットを残す場合、次のようにします。
gsutil rm -a gs://SOURCE_BUCKET/**
REST API
JSON API
転送先バケットがない場合は、バケットを作成します。
転送元バケットから転送先バケットに各オブジェクトをコピーします。
転送元バケット内の各オブジェクトを削除します。
転送元バケットを削除します。
XML API
転送先バケットがない場合は、バケットを作成します。
転送元バケットから転送先バケットに各オブジェクトをコピーします。
転送元バケット内の各オブジェクトを削除します。
転送元バケットを削除します。
次のステップ
- 個々のオブジェクトをコピー、名前変更、または移動する。
- バケットに利用できるロケーションとバケットの命名ガイドラインについて学習する。
- Console を使ったデータ転送の作成と管理について学習する。
- バケット移動ツール(バケット移動を簡単にする非公式ツール)を確認する。
- Cloud Storage のフォルダとフラットな名前空間について学習する。