バケットの移動と名前変更

バケットのストレージ クラスを変更できますが、バケットの作成後にバケットの名前やロケーションは変更できません。バケット内にデータがない場合には、バケットを削除して、新しいロケーションまたは新しい名前でバケットを作成できます。バケットにデータがある場合には、新しいバケットを新しい名前で、必要に応じて新しいロケーションに作成し、古いバケットから新しいバケットにデータをコピーします。手順については、下記をご覧ください。

バケット間でデータを移動するには:

手順 1)新しいバケットを作成する

Console

  1. Google Cloud Platform Console で Cloud Storage ブラウザを開きます。
    Cloud Storage ブラウザを開く
  2. [バケットの作成] をクリックします。
  3. バケット名の要件に従って、名前を指定します。
  4. バケットのデフォルトのストレージ クラスを選択します。デフォルトのストレージ クラスは、バケットに対してアップロードされたすべてのオブジェクトにデフォルトで割り当てられます。

    注: [ストレージ クラスの比較] をクリックすると、ストレージ クラスと月ごとの費用見積が比較されます。

  5. バケットデータが保存されるロケーション
  6. 新しいバケット。

  7. [作成] をクリックします。

gsutil

gsutil mb コマンドを使用します。[VALUES_IN_BRACKETS] は適切な値に置き換えます。

gsutil mb gs://[BUCKET_NAME]/

次のオプション フラグを設定し、バケットの作成をより詳細に管理します。

  • -p: バケットが関連するプロジェクトを指定します。
  • -c: バケットのデフォルトのストレージ クラスを指定します。
  • -l: バケットのロケーションを指定します。

例:

  gsutil mb -p [PROJECT_NAME] -c [STORAGE_CLASS] -l [BUCKET_LOCATION] gs://[BUCKET_NAME]/

コードサンプル

C#

Cloud Storage クライアントのインストールと作成の詳細については、Cloud Storage クライアント ライブラリをご覧ください。

private void CreateBucket(string bucketName)
{
    var storage = StorageClient.Create();
    storage.CreateBucket(s_projectId, bucketName);
    Console.WriteLine($"Created {bucketName}.");
}

Go

Cloud Storage クライアントのインストールと作成の詳細については、Cloud Storage クライアント ライブラリをご覧ください。

bucket := client.Bucket(bucketName)
if err := bucket.Create(ctx, projectID, &storage.BucketAttrs{
	StorageClass: "COLDLINE",
	Location:     "asia",
}); err != nil {
	return err
}

Java

Cloud Storage クライアントのインストールと作成の詳細については、Cloud Storage クライアント ライブラリをご覧ください。

Bucket bucket = storage.create(BucketInfo.newBuilder(bucketName)
    // See here for possible values: http://g.co/cloud/storage/docs/storage-classes
    .setStorageClass(StorageClass.COLDLINE)
    // Possible values: http://g.co/cloud/storage/docs/bucket-locations#location-mr
    .setLocation("asia")
    .build());

Node.js

Cloud Storage クライアントのインストールと作成の詳細については、Cloud Storage クライアント ライブラリをご覧ください。

// Imports the Google Cloud client library
const Storage = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following line before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Creates a new bucket
storage
  .createBucket(bucketName, {
    location: 'ASIA',
    storageClass: 'COLDLINE',
  })
  .then(() => {
    console.log(`Bucket ${bucketName} created.`);
  })
  .catch(err => {
    console.error('ERROR:', err);
  });

PHP

Cloud Storage クライアントのインストールと作成の詳細については、Cloud Storage クライアント ライブラリをご覧ください。

use Google\Cloud\Storage\StorageClient;

/**
 * Create a Cloud Storage Bucket.
 *
 * @param string $bucketName name of the bucket to create.
 * @param string $options options for the new bucket.
 *
 * @return Google\Cloud\Storage\Bucket the newly created bucket.
 */
function create_bucket($bucketName, $options = [])
{
    $storage = new StorageClient();
    $bucket = $storage->createBucket($bucketName, $options);
    printf('Bucket created: %s' . PHP_EOL, $bucket->name());
}

Python

Cloud Storage クライアントのインストールと作成の詳細については、Cloud Storage クライアント ライブラリをご覧ください。

def create_bucket(bucket_name):
    """Creates a new bucket."""
    storage_client = storage.Client()
    bucket = storage_client.create_bucket(bucket_name)
    print('Bucket {} created'.format(bucket.name))

Ruby

Cloud Storage クライアントのインストールと作成の詳細については、Cloud Storage クライアント ライブラリをご覧ください。

# project_id    = "Your Google Cloud project ID"
# bucket_name   = "Name of Google Cloud Storage bucket to create"
# location      = "Location of where to create Cloud Storage bucket"
# storage_class = "Storage class of Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project: project_id
bucket  = storage.create_bucket bucket_name,
                                location:      location,
                                storage_class: storage_class

puts "Created bucket #{bucket.name} in #{location}" +
     " with #{storage_class} class"

REST API

JSON API

バケットのデフォルトとして設定可能なストレージ クラスについては、ストレージ クラスをご覧ください。

  1. OAuth 2.0 Playground から承認アクセス トークンを取得します。固有の OAuth 認証情報を使用するように Playground を構成します。
  2. 次の情報を含む .json ファイルを作成し、[VALUES_IN_BRACKETS] を適切な値に置き換えます。
  3. {
      "name": "[BUCKET_NAME]",
      "location": "[BUCKET_LOCATION]",
      "storageClass": "[STORAGE_CLASS]"
    }
  4. cURL を使用して JSON API を呼び出します。[VALUES_IN_BRACKETS] は適切な値に置き換えます。
    curl -X POST --data-binary @[JSON_FILE_NAME].json \
         -H "Authorization: Bearer [OAUTH2_TOKEN]" \
         -H "Content-Type: application/json" \
         "https://www.googleapis.com/storage/v1/b?project=[PROJECT_ID]"

XML API

バケットのデフォルトとして設定可能なストレージ クラスについては、ストレージ クラスをご覧ください。

  1. OAuth 2.0 Playground から承認アクセス トークンを取得します。固有の OAuth 認証情報を使用するように Playground を構成します。
  2. 次の情報を含む .xml ファイルを作成し、[VALUES_IN_BRACKETS] を適切な値と置き換えます。
  3. <CreateBucketConfiguration>
       <LocationConstraint>[BUCKET_LOCATION]</LocationConstraint>
       <StorageClass>[STORAGE_CLASS]</StorageClass>
    </CreateBucketConfiguration>
  4. cURL を使用して XML API を呼び出します。[VALUES_IN_BRACKETS] は適切な値に置き換えます。
    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
         -H "Authorization: Bearer [OAUTH2_TOKEN]" \
         -H "x-goog-project-id: [PROJECT_ID]" \
         "https://storage.googleapis.com/[BUCKET_NAME]"

手順 2)古いバケットから新しいバケットにファイルをコピーする

Console

Google Cloud Platform Console から Cloud Storage Transfer Service を使用し、Cloud Storage のバケット間でデータをコピーします。

  1. Google Cloud Platform Console で [転送] ページを開きます。

    [転送] ページを開く

  2. [転送ジョブを作成] をクリックします。
  3. 段階的チュートリアルに沿って、各手順を完了するごとに [次へ] をクリックします。

    • 転送元の選択: 選択したソースに応じて Google Cloud Storage バケットを使用し、[開く] をクリックして移動するファイルがあるバケットを見つけて選択します。

    • 転送先: [開く] をクリックし、ファイルの移動先となるバケットを見つけて選択します。

      また、[転送完了後に転送元オブジェクトを削除する] チェックボックスをオンにします。

    • 転送の設定: このセクションは無視してください。

  4. 段階的なチュートリアルの完了後、[作成] をクリックします。

    これで古いバケットから新しいバケットへのファイルのコピーが開始されます。このプロセスには時間がかかる場合がありますが、[作成] をクリックした後は Google Cloud Platform Console を離れることができます。

転送の進行状況を表示するには、Google Cloud Platform Console で [転送] ページを開きます。

[転送] ページを開く

gsutil

  1. gsutil 4.12 以上がインストールされていることを確認します。
  2. gsutil cp コマンドと -r オプションを使用し、転送元のバケットから転送先のバケットにすべてのファイルを再帰的にコピーします。[VALUES_IN_BRACKETS] を適切な値と置き換えます。

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

REST API

JSON API

JSON API の rewrite メソッドを使用し、サイズ制限されたデータのかたまりを複数のリクエストを介してコピーします。この操作を行う際は、すべてのデータの移動が完了するまで rewrite メソッドをループして呼び出す必要があります。

  1. cURLJSON API の rewrite メソッドを使用し、転送元のバケットから転送先のバケットにデータをコピーします。[VALUES_IN_BRACKETS] は適切な値と置き換えます。
  2. curl -X POST -H "Authorization: Bearer [OAUTH2_TOKEN]" \
       -H "Content-Length: 0" \
       "https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET]/o/[OBJECT_NAME]"
    

    たとえば、オブジェクトのサイズが 10 GB の場合、このリクエストへのレスポンスは次のようになります。

    {
      "kind": "storage#rewriteResponse",
      "totalBytesRewritten": 1048576,
      "objectSize": 10000000000,
      "done": false,
      "rewriteToken": [TOKEN_VALUE]
    }
    
  3. 後続のリクエストで rewriteToken を使用してデータのコピーを続け、[VALUES_IN_BRACKETS] を適切な値と置き換えます。
  4. curl -X POST -H "Authorization: Bearer [OAUTH2_TOKEN]" \
       -H "Content-Length: 0" \
       -d '{"rewriteToken": "[TOKEN_VALUE]"}' \
       "https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET]/o/[OBJECT_NAME]"
    

    すべてのデータがコピーされると、最新のレスポンスの done 属性が true になり、rewriteToken 属性がなくなります。またコピー先オブジェクトのメタデータは resource 属性に含まれます。

    {
      "kind": "storage#rewriteResponse",
      "totalBytesRewritten": 10000000000,
      "objectSize": 10000000000,
      "done": true,
      "resource": objects Resource
    }
    

手順 3)古いバケットのファイルを削除する

Console

古いバケットのファイルを削除するのに操作は必要ありません。転送サービスを使用したファイルのコピー操作の一部として、古いファイルは自動的に削除されます([転送完了後に転送元のオブジェクトを削除する] チェックボックスをオンにしている場合)。

gsutil

gsutil rm コマンドと -r オプションを使用し、転送元のバケットのすべてのファイルと転送元のバケットそのものを再帰的に削除します。[VALUES_IN_BRACKETS] を適切な値と置き換えます。

gsutil rm -r gs://[SOURCE_BUCKET]

または、ファイルを削除してソースバケットを残します。

gsutil rm -a gs://[SOURCE_BUCKET]/**

REST API

JSON API

  1. cURL と JSON API delete メソッドを使用し、次のコマンドでデータの元のバージョンを削除します。[VALUES_IN_BRACKETS] は適切な値と置き換えます。
    curl -X DELETE -H "Authorization: Bearer [OAUTH2_TOKEN]" \
       https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]

成功すると、このメソッドによって空のレスポンスが返されます。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Storage ドキュメント