GCP Architecture

Cloud Storage バケットを別プロジェクトに移動させるには?

バケット名はプロジェクト全体でのユニーク名のため、別プロジェクトにバケットとして移動させることはできませんが、バケット内にフォルダとして移動させることはできます。gsutil mv コマンドとサービス アカウントを利用することでGCS バケットを移動することが可能です。
バケット名はプロジェクト全体でのユニーク名のため、別プロジェクトにバケットとして移動させることはできませんが、バケット内にフォルダとして移動させることはできます。gsutil mv コマンドとサービス アカウントを利用することでGCS バケットを移動することが可能です。

Google Cloud Platform 内のプロジェクト 間でのGoogle Cloud Storage(GCSの) バケット/オブジェクトを移動する方法をご紹介します。


概要

GCS Project A のGCS Bucket 01にあるオブジェクトをCGS Project B のGCS Bukect02 にコピーさせます。

違うプロジェクトにバケット/オブジェクトをコピーするには、gsutil を使用して移動させることができます。移動させるには移動先のプロジェクトに移動元のサービス アカウントを追加する必要があります。

GCP Architecture

操作手順

サービスアカウントの設定

異なるプロジェクトにGCS バケットを移動させるには、移動させるためのサービスアカウントを追加する必要があります。このサービスアカウントにはGCS で用意されているサービスアカウントを使用します。

  1. 移動元のGCP プロジェクトに設定します。
  2. メニューからCloud Storage の「設定」をクリックします。
  3. Cloud Storage サービス アカウント をコピーします。
  4. 移動先のGCP プロジェクトに切り替えます。
  5. メニューからCloud Storage の「ブラウザ」をクリックします。
  6. 対象バケットの権限を選択し、「追加」をクリックします。
  7. 新しいメンバーにコピーしたサービスアカウントを設定し、ロールを「ストレージ管理者」に設定し、保存します。
GCS サービスアカウントの設定

GCS バケットをコピー

gsutil cp コマンドを使用し、オブジェクトを転送先にコピーします。

  1. Cloud Shell を開きます。
  2. 移動元のGCP プロジェクトを設定します。
  3. 移動コマンドを実行する。

次のコマンドを実行し、特定のオブジェクトを移動先のバケットをコピーします。

gsutil cp gs://[SOURCE_BUCKET]/[OBJECT_NAME] gs://[DESTINATION_BUCKET]
ターミナル:CGS オブジェクトの移動

移動先のGCS バケットを開き、バケット/オブジェクトがコピーできていることを確認します。
追加したサービスアカウントを削除して、GCS バケットの移動は完了となります。

補足

バケットの移動コマンド

バケットをコピーさせる場合は次のコマンドになります。

gsutil cp -r gs://[SOURCE_BUCKET]/ gs://[DESTINATION_BUCKET]
ターミナル:CGS バケットの移動

すべてのフォルダ/ファイルをコピーさせるには、次のコマンドになります。

gsutil cp -r gs://[SOURCE_BUCKET]/* gs://[DESTINATION_BUCKET]

注意点

同名称のファイル名

移動先に移動させるオブジェクト名と同一名称があった場合は、オブジェクトが上書きされてしまいます。
そのため、オブジェクトを移動させる際には同一名称がないか事前に確認してください。

バケット名

バケット名はプロジェクト全体で一意(ユニーク名)のため、移動先のプロジェクトにGCS バケットとして移動させることはできません。GCS バケット のフォルダとしてを作成することができます。
ただし、 Google Cloud Storage URLは変更されてしまいます。

データは残ったまま

今回は cp コマンドを使用しているため、移動元のバケット/オブジェクトは残ったままので確認/使用済み後にバケット/オブジェクトを削除してください。
mv コマンドで使用すると、移動時に移動元のバケット/オブジェクトを削除されます。

Cloud Storage Transfer Service について

Cloud Storage Transfer Service では同じプロジェクトのGCS バケットのフォルダ/ファイルを移動はできますが、別プロジェクトへの移動はすることができませんでした。また、サービスアカウントを追加しても移動はできませんでした。
ちなみにCloud Storage Transfer Service は次のケース時に使用することが公式では推奨になっています。

  • 別のクラウド ストレージプロバイダから転送する
  • オンプレミスから 1 TB 超のデータを転送する

参考ページ