このページでは、階層型名前空間が有効になっているバケット内のフォルダの名前を変更する方法について説明します。
名前変更オペレーションでは、フォルダ、その子フォルダ、関連するリソース(オブジェクトやマネージド フォルダなど)の名前が、単一のアトミック アクションで再帰的に変更されます。
名前変更オペレーションはアトミックです。このオペレーションは、正常に完了してリソースを新しいパスに移動するか、エラーで失敗します。エラーが発生した場合は、すべてのリソースが元の状態に復元されます。
階層型名前空間が有効になっているバケットでは、フォルダの名前変更はメタデータのみのオペレーションです。フォルダ内のオブジェクトを物理的に移動またはコピーするわけではないため、オブジェクトのコピー費用は発生しません。
ただし、階層型名前空間が有効になっていないバケットでは、フォルダがシミュレートされます。シミュレートされたフォルダの名前を変更したり、移動するには、そのフォルダ内の各オブジェクトをコピーして削除する必要があります。フォルダに多数のオブジェクトが含まれている場合、名前変更プロセスが非効率で、コストがかかる場合もあります。シミュレートされたフォルダの名前変更や移動は非アトミックです。つまり、処理が失敗した場合、一部のオブジェクトのみが移動され、バケットは不整合な状態になります。
フォルダの名前変更プロセス中に、名前を変更するリソースを一覧表示できます。ただし、影響を受けるリソースに対して書き込みオペレーションを実行することはできません。
フォルダの名前変更オペレーションは、バケット上で長時間実行オペレーションを開始します。
必要なロール
バケット内のフォルダ名を変更するために必要な権限を取得するには、バケットに対するストレージ オブジェクト ユーザー(roles/storage.objectUser
)IAM ロールを付与するよう管理者に依頼してください。
プロジェクトに対するロールの付与については、プロジェクトへのアクセス権を管理するをご覧ください。
必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
storage.folders.rename
- この権限は、ソースフォルダに対して必要です。
storage.folders.create
- この権限は、宛先フォルダに対して必要です。
上記の権限は、他のカスタムロールや事前定義ロールを使用して取得することもできます。フォルダの名前変更に加えてフォルダの管理も可能なロールが必要な場合は、次のいずれかのロールを付与するよう管理者に依頼してください。
- ストレージ フォルダ管理者(
roles/storage.folderAdmin
) - Storage オブジェクト管理者(
roles/storage.objectAdmin
) - ストレージ管理者(
roles/storage.admin
)
どのロールがどの権限に関連付けられているかを確認するには、Cloud Storage に適用される IAM のロールをご覧ください。
フォルダの名前を変更する
コマンドライン
階層型名前空間を持つバケット内のフォルダの名前を変更するには、次のコマンドを実行します。
gcloud storage mv gs://BUCKET_NAME/FOLDER1 gs://BUCKET_NAME/FOLDER2
ここで
BUCKET_NAME
は、名前を変更するフォルダを含むバケットの名前です。例:my-bucket
FOLDER1
は、名前を変更する元のフォルダの名前です。例:my-src-folder
FOLDER2
は、宛先フォルダの新しい名前です。例:my-dest-folder
選択した新しい名前が既存のフォルダですでに使用されている場合、元のフォルダは既存のフォルダ内に移動され、子フォルダになります。たとえば、my-dest-folder
の名前をmy-dest-folder1
に変更した場合(my-dest-folder1
がすでに存在する場合)、結果はmy-dest-folder1/my-dest-folder/
になります。選択した新しい名前がまだ存在しない場合は、元のフォルダの名前が新しい名前に変更されます。
次の例のようなレスポンスになります。
Copying gs://my-bucket/my-src-folder to gs://hns-bucket/my-dest-folder...
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
REST API
JSON API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。cURL
を使用して JSON API を呼び出し、フォルダの名前変更をリクエストします。curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/folders/SOURCE_PATH/renameTo/folders/DESTINATION_PATH"
ここで
BUCKET_NAME
は、名前を変更するフォルダを含むバケットの名前です。例:my-bucket
。SOURCE_PATH
は、ソースフォルダの URL エンコードされたパスです。例:my-src-folder%2F
として URL エンコードされているmy-src-folder/
DESTINATION_PATH
は、宛先フォルダの URL エンコードされたパスです。例:my-dest-folder%2F
として URL エンコードされているmy-dest-folder/
次のステップ
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Cloud Storage のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
Cloud Storage を無料で試す