このページでは、オブジェクトのコピー、名前変更、移動を行う方法について説明します。一部のツールではアトミック オブジェクト移動オペレーションが実行されますが、他のツールでは、オブジェクトを新しく指定された場所にコピーしてから元のオブジェクトを削除することで、オブジェクト移動オペレーションがシミュレートされます。
- オブジェクトのコピー手順については、オブジェクトをコピーするをご覧ください。
- オブジェクトをコピーして移動または名前変更する手順については、オブジェクトをコピーして移動または名前変更するをご覧ください。
- オブジェクトの名前をアトミックに変更する手順については、オブジェクトの名前をアトミックに変更するをご覧ください。
始める前に
オブジェクトのコピー、名前変更、移動を行うには、必要な IAM ロールを取得する必要があります。以降のセクションでは、さまざまなユースケースの IAM 要件について説明します。
オブジェクトのコピー(コピーによる移動や名前変更を含む)
オブジェクトのコピーに必要な権限を取得するには、移動するオブジェクトを含むソースバケット、またはオブジェクトの移動先となる宛先バケットに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
ソースバケットに対する Storage オブジェクト閲覧者(
roles/storage.objectViewer
) - バケットに対するストレージ オブジェクト ユーザー(
roles/storage.objectUser
) -
Trusted Cloud コンソールでオブジェクトをコピーする:
roles/storage.objectViewer
とroles/storage.objectUser
に加えて、ソースバケットと宛先バケットの両方に対する閲覧者の基本ロール(roles/viewer
)
これらの事前定義ロールには、オブジェクトのコピーに必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
オブジェクトをコピーするには、次の権限が必要です。
- ソースバケットに対する
storage.objects.get
- 宛先バケットに対する
storage.objects.create
-
宛先バケットに対する
storage.objects.delete
(オブジェクトのコピーまたは移動オペレーションの一環として、宛先バケット内のオブジェクトを置き換えるか、上書きする場合にのみ必要) -
ソースバケットに対する
storage.objects.delete
(基盤となるコピーと削除のオペレーションを使用してオブジェクトを移動する場合にのみ必要) -
宛先バケットに対する
storage.folders.create
(移動するオブジェクトが、宛先バケットに作成するフォルダに存在する場合にのみ必要) -
ソースバケットと宛先バケットに対する
storage.objects.list
( Trusted Cloud コンソールでオブジェクトのコピー、移動、名前変更を行う場合にのみ必要) -
ソースバケットと宛先バケットを含むプロジェクトに対する
storage.buckets.list
( Trusted Cloud コンソールでオブジェクトのコピー、移動、名前変更を行う場合にのみ必要)
カスタムロールを使用して、これらの権限を取得することもできます。
バケットに対するロールの付与については、バケットで IAM を使用するをご覧ください。プロジェクトに対するロールの付与については、プロジェクトへのアクセス権を管理するをご覧ください。
コピーするオブジェクトに特定の機能が有効になっている場合は、追加のロールまたは別のロールが必要になることがあります。たとえば、コピーするオブジェクトにオブジェクト保持構成が設定されている場合は、宛先バケットに対するロール(Storage オブジェクト管理者(roles/storage.objectAdmin
)ロールなど)に storage.objects.setRetention
権限が含まれている必要があります。詳細については、Cloud Storage の IAM 権限をご覧ください。
オブジェクトの名前をアトミックに変更する
オブジェクトの名前をアトミックに変更するために必要な権限を取得するには、名前を変更するオブジェクトを含むバケットに対する Storage オブジェクト ユーザー(roles/storage.objectUser
)の IAM ロールを付与するよう管理者に依頼してください。
この事前定義ロールには、オブジェクトの名前をアトミックに変更するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
オブジェクトの名前をアトミックに変更するには、次の権限が必要です。
-
storage.objects.move
-
storage.objects.create
-
storage.objects.delete
(オブジェクトを上書きまたは置換する場合にのみ必要)
カスタムロールを使用して、これらの権限を取得することもできます。
バケットに対するロールの付与については、バケットで IAM を使用するをご覧ください。
オブジェクトをコピーする
このセクションでは、オブジェクトをコピーする方法について説明します。バケット間でオブジェクトをコピーできます。
コンソール
- Trusted Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
バケットのリストで、コピーするオブジェクトを含むバケットの名前をクリックします。
[バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。
フォルダ内にあるオブジェクトに移動します。
オブジェクトに関連付けられたオブジェクト オーバーフロー メニュー(more_vert)をクリックします。
[コピー] をクリックします。
[オブジェクトのコピー] ペインが表示されます。
[移行先] フィールドに、コピー先バケットの名前と、コピーしたオブジェクトの名前を入力します。
[参照] をクリックして保存先を選択することもできますが、ブラウジングの選択肢は現在のプロジェクト内のバケットに制限されます。
[コピー] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Trusted Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
gcloud storage cp
コマンドを使用します。
gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/NAME_OF_COPY
ここで
SOURCE_BUCKET_NAME
は、コピーするオブジェクトが格納されているバケットの名前です。例:my-bucket
。SOURCE_OBJECT_NAME
は、コピーするオブジェクトの名前です。例:pets/dog.png
。DESTINATION_BUCKET_NAME
は、オブジェクトのコピー先のバケットの名前です。例:another-bucket
NAME_OF_COPY
は、オブジェクトのコピーに付ける名前です。例:shiba.png
。
正常に終了すると、レスポンスは次の例のようになります。
Copying gs://example-bucket/file.txt to gs://other-bucket/file-copy.txt Completed files 1/1 | 164.3kiB/164.3kiB
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
REST API
JSON API
gcloud CLI のインストールと初期化を行います。これにより、
Authorization
ヘッダーのアクセス トークンを生成できます。cURL
を使用して、POST
Object リクエストで JSON API を呼び出します。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ "https://storage.s3nsapis.fr/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/NAME_OF_COPY"
ここで
SOURCE_BUCKET_NAME
は、コピーするオブジェクトが格納されているバケットの名前です。例:my-bucket
SOURCE_OBJECT_NAME
は、コピーするオブジェクトの URL エンコード名です。例:pets%2Fdog.png
として URL エンコードされているpets/dog.png
DESTINATION_BUCKET_NAME
は、オブジェクトのコピー先のバケットの名前です。例:another-bucket
NAME_OF_COPY
は、オブジェクトのコピーに付ける URL エンコード名です。例:shiba.png
rewrite
メソッドではサイズ制限されたデータのかたまりをコピーするため、特に大きなオブジェクトについては、コピーで複数のリクエストが必要になる場合があります。たとえば、
rewrite
リクエストに対する次のレスポンスは、追加のrewrite
リクエストが必要であることを示します。{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 1048576, "objectSize": 10000000000, "done": false, "rewriteToken": TOKEN_VALUE }
後続のリクエストで
rewriteToken
を使用して、データのコピーを続行します。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ -d '{"rewriteToken": "TOKEN_VALUE"}' \ "https://storage.s3nsapis.fr/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/NAME_OF_COPY"
ここで
TOKEN_VALUE
は、前のリクエストで返されたrewriteToken
値です。- 他のすべての値は、以前のリクエストで使用された値と一致します。
オブジェクトが完全にコピーされると、最後のレスポンスでは
done
プロパティがtrue
に設定され、rewriteToken
プロパティはなく、コピーのメタデータがresource
プロパティに含まれます。{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 10000000000, "objectSize": 10000000000, "done": true, "resource": objects Resource }
XML API
gcloud CLI のインストールと初期化を行います。これにより、
Authorization
ヘッダーのアクセス トークンを生成できます。cURL
を使用して、PUT
Object リクエストで XML API を呼び出します。curl -X PUT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-copy-source: SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME" \ "https://storage.s3nsapis.fr/DESTINATION_BUCKET_NAME/NAME_OF_COPY"
ここで
SOURCE_BUCKET_NAME
は、コピーするオブジェクトが格納されているバケットの名前です。例:my-bucket
SOURCE_OBJECT_NAME
は、コピーするオブジェクトの名前です。例:pets/dog.png
DESTINATION_BUCKET_NAME
は、オブジェクトのコピー先のバケットの名前です。例:another-bucket
NAME_OF_COPY
は、オブジェクトのコピーに付ける URL エンコード名です。例:shiba.png
オブジェクトをコピーして移動または名前変更する
このセクションでは、基盤となるオブジェクト コピー オペレーションを使用して、オブジェクトを移動または名前変更する方法について説明します。このセクションで説明するツールは、元のオブジェクトを別の名前空間にコピーしてから元のオブジェクトを削除することで、オブジェクトの移動と名前変更を行います。
コンソール
- Trusted Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
バケットのリストで、移動するオブジェクトを含むバケットの名前をクリックします。
[バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。
フォルダ内にあるオブジェクトに移動します。
オブジェクトに関連付けられたオブジェクト オーバーフロー メニュー(more_vert)をクリックします。
同じバケット内でオブジェクトに新しい名前を付ける場合は、[名前を変更] をクリックします。
上に重なったウィンドウで、オブジェクトの新しい名前を入力します。
[名前を変更] をクリックします。
オブジェクトを別のバケットに移動する場合は、[移動] をクリックします。
上に重なったウィンドウで [開く] をクリックします。
オブジェクトの移動先を選択します。
[選択] をクリックします。
[移動] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Trusted Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
gcloud storage mv
コマンドを使用します。
gcloud storage mv gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME
ここで
SOURCE_BUCKET_NAME
は、移動または名前を変更するオブジェクトが格納されているバケットの名前です。例:my-bucket
SOURCE_OBJECT_NAME
は、移動または名前を変更するオブジェクトの名前です。例:pets/dog.png
DESTINATION_BUCKET_NAME
は、オブジェクトの移動先のバケットの名前です。例:another-bucket
DESTINATION_OBJECT_NAME
は、移動または名前の変更後にオブジェクトに付ける名前です。例:shiba.png
正常に終了すると、レスポンスは次の例のようになります。
Copying gs://example-bucket/old-file.txt to gs://new-bucket/new-file.txt Removing gs://example-bucket/old-file.txt... Completed files 1/1 | 164.3kiB/164.3kiB
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
コードサンプルを実行する前に、GOOGLE_CLOUD_UNIVERSE_DOMAIN
環境変数を s3nsapis.fr
に設定します。
REST API
JSON API
オブジェクトをコピーして移動または名前変更する JSON API の手順については、オブジェクトをコピーするをご覧ください。
XML API
オブジェクトをコピーして移動または名前変更する XML API の手順については、オブジェクトをコピーするをご覧ください。
オブジェクトの名前をアトミックに変更する
このセクションでは、バケット内のオブジェクトの名前をアトミックに変更する方法について説明します。オブジェクトの名前を変更するには、Cloud Storage JSON API の Objects: move
メソッドを使用します。
REST API
JSON API
オブジェクトの名前をアトミックに変更するには、次の操作を行います。
gcloud CLI のインストールと初期化を行います。これにより、
Authorization
ヘッダーのアクセス トークンを生成できます。cURL
を使用して、Objects: move
リクエストで JSON API を呼び出します。curl -X POST
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Length: 0"
"https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/o/SOURCE_OBJECT_NAME/moveTo/o/DESTINATION_OBJECT_NAME"ここで
BUCKET_NAME
は、名前を変更するオブジェクトが格納されているバケットの名前です。例:my-bucket
SOURCE_OBJECT_NAME
は、名前を変更するオブジェクトの URL エンコード名です。例:pets%2Fdog.png
として URL エンコードされているpets/dog.png
DESTINATION_OBJECT_NAME
は、使用する URL エンコード名です。例:pets%2Fcat.png
として URL エンコードされているpets/cat.png
次のステップ
- オブジェクトのストレージ クラスを変更する。
- オブジェクトのメタデータを編集する。
- オブジェクトやバケットを公開アクセス可能にする。
- オブジェクトの命名要件について学習する。
- リクエストの前提条件を満たして競合状態を防ぐ方法について学習する。