バケットのデフォルト ストレージ クラスを変更する

このページでは、バケットのデフォルトのストレージ クラスを変更する方法について説明します。オブジェクトをバケットにアップロードするときにオブジェクトのストレージ クラスを指定しないと、バケットのデフォルトのストレージ クラスが割り当てられます。ストレージ クラスの詳細については、ストレージ クラスをご覧ください。

必要なロール

バケットのストレージ クラスを変更するために必要な権限を取得するには、バケットに対するストレージ管理者(roles/storage.admin)IAM ロールを付与するよう管理者に依頼してください。

この事前定義ロールには、バケットのストレージ クラスの変更に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

  • storage.buckets.get
    • この権限は、Google Cloud コンソールを使用してこのページの手順を実施する場合にのみ必要です。
  • storage.buckets.list
    • この権限は、Google Cloud コンソールを使用してこのページの手順を実施する場合にのみ必要です。
  • storage.buckets.update

カスタムロールを使用して、これらの権限を取得することも可能な場合があります。

バケットに対するロールを付与する手順については、バケットでの IAM ポリシーの設定と管理をご覧ください。

バケットのデフォルト ストレージ クラスを変更する

コンソール

  1. Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、ストレージ クラスを変更するバケットの名前をクリックします。

  3. [バケットの詳細] ページで、[構成] タブをクリックします。

  4. [デフォルトのストレージ クラス] の編集アイコン()をクリックします。

  5. 上に重なったウィンドウで、バケットに新しいデフォルトのストレージ クラスを選択します。

  6. [保存] をクリックします。

失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。

コマンドライン

gcloud storage buckets update コマンドを使用し、--default-storage-class フラグを指定します。

gcloud storage buckets update gs://BUCKET_NAME --default-storage-class=STORAGE_CLASS

ここで

  • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket
  • STORAGE_CLASS は、バケットに追加する新しいストレージ クラスです。例: nearline

次の例のようなレスポンスになります。

Setting default storage class to "nearline" for bucket gs://my-bucket

クライアント ライブラリ

C++

詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

namespace gcs = ::google::cloud::storage; using ::google::cloud::StatusOr; [](gcs::Client client, std::string const& bucket_name,    std::string const& storage_class) {   StatusOr<gcs::BucketMetadata> original =       client.GetBucketMetadata(bucket_name);   if (!original) throw std::move(original).status();    gcs::BucketMetadata desired = *original;   desired.set_storage_class(storage_class);    StatusOr<gcs::BucketMetadata> patched =       client.PatchBucket(bucket_name, *original, desired);   if (!patched) throw std::move(patched).status();    std::cout << "Storage class for bucket " << patched->name()             << " has been patched to " << patched->storage_class() << "."             << "\nFull metadata: " << *patched << "\n"; }

C#

詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

 using Google.Apis.Storage.v1.Data; using Google.Cloud.Storage.V1; using System;  public class ChangeDefaultStorageClassSample { 	public Bucket ChangeDefaultStorageClass(string bucketName = "your-bucket-name", string storageClass = StorageClasses.Standard) 	{ 	    var storage = StorageClient.Create(); 	    var bucket = storage.GetBucket(bucketName);  	    bucket.StorageClass = storageClass;  	    bucket = storage.UpdateBucket(bucket); 	    Console.WriteLine($"Default storage class for bucket {bucketName} changed to {storageClass}."); 	    return bucket; 	} }

Go

詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

import ( 	"context" 	"fmt" 	"io" 	"time"  	"cloud.google.com/go/storage" )  // changeDefaultStorageClass changes the storage class on a bucket. func changeDefaultStorageClass(w io.Writer, bucketName string) error { 	// bucketName := "bucket-name" 	ctx := context.Background() 	client, err := storage.NewClient(ctx) 	if err != nil { 		return fmt.Errorf("storage.NewClient: %w", err) 	} 	defer client.Close()  	ctx, cancel := context.WithTimeout(ctx, time.Second*10) 	defer cancel()  	bucket := client.Bucket(bucketName) 	newStorageClass := "COLDLINE" 	bucketAttrsToUpdate := storage.BucketAttrsToUpdate{ 		StorageClass: newStorageClass, 	} 	if _, err := bucket.Update(ctx, bucketAttrsToUpdate); err != nil { 		return fmt.Errorf("Bucket(%q).Update: %w", bucketName, err) 	} 	fmt.Fprintf(w, "Default storage class for bucket %v has been set to %v\n", bucketName, newStorageClass) 	return nil } 

Java

詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

import com.google.cloud.storage.Bucket; import com.google.cloud.storage.Storage; import com.google.cloud.storage.StorageClass; import com.google.cloud.storage.StorageOptions;  public class ChangeDefaultStorageClass {   public static void changeDefaultStorageClass(String projectId, String bucketName) {     // The ID of your GCP project     // String projectId = "your-project-id";      // The ID of your GCS bucket     // String bucketName = "your-unique-bucket-name";      // See the StorageClass documentation for other valid storage classes:     // https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/storage/StorageClass.html     StorageClass storageClass = StorageClass.COLDLINE;      Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();     Bucket bucket = storage.get(bucketName);     bucket = bucket.toBuilder().setStorageClass(storageClass).build().update();      System.out.println(         "Default storage class for bucket "             + bucketName             + " has been set to "             + bucket.getStorageClass());   } }

Node.js

詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

/**  * TODO(developer): Uncomment the following lines before running the sample.  */ // The ID of your GCS bucket // const bucketName = 'your-unique-bucket-name';  // The name of a storage class // See the StorageClass documentation for other valid storage classes: // https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/storage/StorageClass.html // const storageClass = 'coldline';  // Imports the Google Cloud client library const {Storage} = require('@google-cloud/storage');  // Creates a client const storage = new Storage();  async function changeDefaultStorageClass() {   await storage.bucket(bucketName).setStorageClass(storageClass);    console.log(`${bucketName} has been set to ${storageClass}`); }  changeDefaultStorageClass().catch(console.error);

PHP

詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

use Google\Cloud\Storage\StorageClient;  /**  * Change the default storage class for the given bucket.  *  * @param string $bucketName The name of your Cloud Storage bucket.  *        (e.g. 'my-bucket')  */ function change_default_storage_class(string $bucketName): void {     $storage = new StorageClient();     $bucket = $storage->bucket($bucketName);      $storageClass = 'COLDLINE';      $bucket->update([         'storageClass' => $storageClass,     ]);      printf(         'Default storage class for bucket %s has been set to %s',         $bucketName,         $storageClass     ); }

Python

詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

from google.cloud import storage from google.cloud.storage import constants   def change_default_storage_class(bucket_name):     """Change the default storage class of the bucket"""     # bucket_name = "your-bucket-name"      storage_client = storage.Client()      bucket = storage_client.get_bucket(bucket_name)     bucket.storage_class = constants.COLDLINE_STORAGE_CLASS     bucket.patch()      print(f"Default storage class for bucket {bucket_name} has been set to {bucket.storage_class}")     return bucket  

Ruby

詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。

Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

def change_default_storage_class bucket_name:   # The ID of your GCS bucket   # bucket_name = "your-unique-bucket-name"    require "google/cloud/storage"    storage = Google::Cloud::Storage.new   bucket = storage.bucket bucket_name    bucket.storage_class = "COLDLINE"    puts "Default storage class for bucket #{bucket_name} has been set to #{bucket.storage_class}" end

REST API

JSON API

  1. gcloud CLI をインストールして初期化します。これにより、Authorization ヘッダーのアクセス トークンを生成できます。

  2. 次の情報が含まれる JSON ファイルを作成します。

    {   "storageClass": "STORAGE_CLASS" }

    ここで、STORAGE_CLASS は、バケットに追加する新しいストレージ クラスです。例: nearline

  3. cURL を使用して JSON API を呼び出し、PATCH Bucket リクエストを行います。

    curl -X PATCH --data-binary @JSON_FILE_NAME \   -H "Authorization: Bearer $(gcloud auth print-access-token)" \   -H "Content-Type: application/json" \   "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=storageClass"

    ここで

    • JSON_FILE_NAME は、手順 2 で作成した JSON ファイルのパスです。
    • BUCKET_NAME は、関連するバケットの名前です。たとえば my-bucket です。

XML API

  1. gcloud CLI をインストールして初期化します。これにより、Authorization ヘッダーのアクセス トークンを生成できます。

  2. 次の情報が含まれる XML ファイルを作成します。

    <StorageClass>STORAGE_CLASS</StorageClass>

    ここで、STORAGE_CLASS は、バケットに追加する新しいストレージ クラス名です。例: nearline

  3. cURL を使用して、?storageClass をスコープとする PUT バケット リクエストで XML API を呼び出します。

    curl -X PUT --data-binary @XML_FILE_NAME \   -H "Authorization: Bearer $(gcloud auth print-access-token)" \   "https://storage.googleapis.com/BUCKET_NAME?storageClass"

    ここで

    • XML_FILE_NAME は、手順 2 で作成した XML ファイルのパスです。
    • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket

次のステップ