このページでは、オブジェクトのバージョニングが有効になっている機能を持つバケットに通常適用される、非現行オブジェクトを一覧表示、アクセス、復元、削除する方法について説明します。
必要なロール
非現行オブジェクトの管理に必要な権限を取得するには、プロジェクトの Storage オブジェクト ユーザー(roles/storage.objectUser
)の IAM ロールを付与するように管理者へ依頼してください。この事前定義ロールには、非現行オブジェクトの管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
カスタムロールを使用して、これらの権限を取得することもできます。
プロジェクトでのロールの付与については、プロジェクトへのアクセス権の管理をご覧ください。
ユースケースによっては、追加の権限や代替のロールが必要になる場合があります。
このページのタスクを Google Cloud コンソールで実行する場合は、
storage.buckets.list
権限も必要ですが、これは Storage オブジェクト ユーザー(roles/storage.objectUser
)ロールには含まれていません。 この権限を取得するには、プロジェクトのストレージ管理者(roles/storage.admin
)ロールを付与するように管理者へ依頼してください。お使いのバケットに対するバケットレベルの統一アクセスが無効になっている場合、次のシナリオでは追加の権限が必要です。
非現行オブジェクトをその ACL とともに返す場合は、
storage.objects.getIamPolicy
権限も必要です。この権限は、Storage オブジェクト ユーザー(roles/storage.objectUser
)ロールに含まれていません。この権限を取得するには、プロジェクトの Storage オブジェクト管理者(roles/storage.objectAdmin
)ロールを付与するように管理者へ依頼してください。ACL のある非現行オブジェクトの名前変更や復元を予定している場合は、
storage.objects.setIamPolicy
権限も必要です。この権限は、Storage オブジェクト ユーザー(roles/storage.objectUser
)ロールに含まれていません。この権限を取得するには、プロジェクトの Storage オブジェクト管理者(roles/storage.objectAdmin
)ロールを付与するように管理者へ依頼してください。
非現行バージョンのオブジェクトを一覧表示する
オブジェクトのライブ バージョンと非現行バージョンの両方を一覧表示し、generation
番号を表示するには:
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、必要なオブジェクトを含むバケットの名前をクリックします。
[バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。
非現行オブジェクトを表示するには、[表示] プルダウンをクリックして、[ライブ オブジェクトと非現行オブジェクト] を選択します。
オブジェクトのリストで、バージョンを確認するオブジェクトの名前をクリックします。
[オブジェクトの詳細] ページが開きます。[ライブ オブジェクト] タブが選択されています。
[バージョン履歴] タブをクリックすると、オブジェクトのすべてのバージョンが表示されます。
コマンドライン
gcloud storage ls --all-versions
コマンドを使用します。
gcloud storage ls --all-versions gs://BUCKET_NAME
BUCKET_NAME
は、目的のオブジェクトが存在するバケットの名前です。例: my-bucket
次の例のようなレスポンスになります。
gs://BUCKET_NAME/OBJECT_NAME1#GENERATION_NUMBER1 gs://BUCKET_NAME/OBJECT_NAME2#GENERATION_NUMBER2 gs://BUCKET_NAME/OBJECT_NAME3#GENERATION_NUMBER3 ...
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
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
を使用して、Objects: list リクエストで JSON API を呼び出します。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?versions=true"
BUCKET_NAME
は、目的のオブジェクトが存在するバケットの名前です。例:my-bucket
非現行バージョンのオブジェクトには timeDeleted
プロパティがあります。
XML API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。cURL
を使用し、GET
Bucket リクエストとversions
クエリ文字列パラメータを指定して XML API を呼び出します。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?versions&list-type=2"
BUCKET_NAME
は、目的のオブジェクトが存在するバケットの名前です。例:my-bucket
versions
クエリ文字列パラメータを使用する場合と使用しない場合では、GET
リクエストの結果にいくつかの違いが生じます。具体的には、リクエストに versions
クエリ パラメータを含めると、Cloud Storage から次の情報が返されます。
- 各オブジェクトに関する情報が含まれる
Version
要素。 - オブジェクトが非現行バージョンになった(削除や置換)時間を含む
DeletedTime
要素。 - 特定のオブジェクトが最新バージョンかどうかを示す IsLatest 要素。
- オブジェクトのリストが部分的なリストである場合は、
NextGenerationMarker
要素が返されます。これは、バケットに多数のオブジェクトのバージョンがある場合に発生します。最後のポイントから再開するには、後続のリクエストのgenerationmarker
クエリ パラメータでこの要素の値を使用します。generationmarker
クエリ パラメータは、marker
クエリ パラメータを使用して、バージョニングされていないバケットのリストをページ割り付けするのと同じ方法で使用されます。
非現行バージョンのオブジェクトにアクセスする
オブジェクトのダウンロード、オブジェクトのメタデータの表示、オブジェクトのメタデータの更新などのタスクを実行するときにオブジェクトの非現行バージョンを使用するには:
コンソール
Google Cloud コンソールでは、非現行バージョンへの一般的なアクセス権は使用できません。Google Cloud コンソールでは、非現行バージョンの移動、コピー、復元、削除のみを行うことができます。これらの操作は、オブジェクトの変更履歴リストから実行します。
コマンドライン
オブジェクト名に、非現行バージョンの世代番号を追加します。
OBJECT_NAME#GENERATION_NUMBER
ここで
OBJECT_NAME
は、非現行バージョンの名前です。例:pets/dog.png
GENERATION_NUMBER
は、非現行バージョンの世代番号です。例:1560468815691234
前の手順の文字列を使用して、通常のライブ バージョンのオブジェクトの場合と同じように処理します。たとえば、オブジェクトの非現行バージョンのメタデータを表示するには、
gcloud storage objects describe
コマンドを使用します。gcloud storage objects describe gs://my-bucket/pets/dog.png#1560468815691234
REST API
JSON API
オブジェクトの URI に非現行バージョンの世代番号を追加します。
https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?generation=GENERATION_NUMBER
ここで
BUCKET_NAME
は、非現行バージョンを含むバケットの名前です。例:my-bucket
OBJECT_NAME
は、URL エンコードされた非現行バージョンの名前です。例:pets%2Fdog.png
として URL エンコードされている。pets/dog.png
GENERATION_NUMBER
は、非現行バージョンの世代番号です。例:1560468815691234
前の手順の URI を使用して、通常のライブ バージョンのオブジェクトの場合と同じように処理します。たとえば、オブジェクトの非現行バージョンのメタデータを表示するには、cURL を使用して Objects: get リクエストで JSON API を呼び出します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/my-bucket/o/pets/dog.png?generation=1560468815691234"
XML API
オブジェクトの URI に非現行バージョンの世代番号を追加します。
https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?generation=GENERATION_NUMBER
ここで
BUCKET_NAME
は、非現行バージョンを含むバケットの名前です。例:my-bucket
OBJECT_NAME
は、URL エンコードされた非現行バージョンの名前です。例:pets%2Fdog.png
として URL エンコードされている。pets/dog.png
GENERATION_NUMBER
は、非現行バージョンの世代番号です。例:1560468815691234
前の手順の URI を使用して、通常のライブ バージョンのオブジェクトの場合と同じように処理します。たとえば、オブジェクトの非現行バージョンのメタデータを表示するには、
cURL
を使用して、HEAD
Object リクエストで XML API を呼び出します。curl -I GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/my-bucket/pets/dog.png?generation=1560468815691234"
非現行バージョンのオブジェクトを復元する
Cloud Storage で非現行バージョンのオブジェクトを復元するには、そのオブジェクトのコピーを作成します。この操作を行うと、コピーがライブ バージョンになり、実質的にバージョンが復元されます。すでにライブ バージョンがあり、バケットのオブジェクト バージョニングが有効になっている場合、非現行バージョンを復元すると、それまでのライブ バージョンは非現行になります。
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、必要なオブジェクトを含むバケットの名前をクリックします。
[バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。
非現行オブジェクトを表示するには、[表示] プルダウンをクリックして、[ライブ オブジェクトと非現行オブジェクト] を選択します。
オブジェクトのリストで、復元するバージョンのオブジェクトの名前をクリックします。
[オブジェクトの詳細] ページが開きます。[ライブ オブジェクト] タブが選択されています。
[変更履歴] タブをクリックします。
必要なバージョンの [復元] ボタンをクリックします。
オブジェクト バージョンの復元ペインが開きます。
[確認] をクリックします。
コマンドライン
gcloud storage cp
コマンドを使用します。
gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER gs://BUCKET_NAME/OBJECT_NAME
ここで
BUCKET_NAME
は、復元する非現行バージョンを含むバケットの名前です。例:my-bucket
OBJECT_NAME
は、復元する非現行バージョンの名前です。例:pets/dog.png
GENERATION_NUMBER
は、復元する非現行バージョンの世代番号です。例:1560468815691234
成功した場合は、次の例のようなレスポンスになります。
Operation completed over 1 objects/58.8 KiB.
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
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
を使用して、POST
Object リクエストで JSON API を呼び出します。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/rewriteTo/b/BUCKET_NAME/o/OBJECT_NAME?sourceGeneration=GENERATION_NUMBER"
ここで
BUCKET_NAME
は、復元する非現行バージョンを含むバケットの名前です。例:my-bucket
OBJECT_NAME
は、復元する非現行バージョンの URL エンコード名です。例:pets%2Fdog.png
として URL エンコードされている。pets/dog.png
GENERATION_NUMBER
は、復元する非現行バージョンの世代番号です。例:1560468815691234
XML API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。cURL
を使用して、PUT
Object リクエストで XML API を呼び出します。curl -X PUT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-copy-source: BUCKET_NAME/OBJECT_NAME" \ -H "x-goog-copy-source-generation:GENERATION_NUMBER" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
ここで
BUCKET_NAME
は、復元する非現行バージョンを含むバケットの名前です。例:my-bucket
OBJECT_NAME
は、復元する非現行バージョンの URL エンコード名です。例:pets%2Fdog.png
として URL エンコードされている。pets/dog.png
GENERATION_NUMBER
は、復元する非現行バージョンの世代番号です。例:1560468815691234
オブジェクト バージョンを復元した後、元の非現行バージョンはバケットに存在し続けます。非現行バージョンが不要な場合は、すぐに削除することも、指定した条件を満たしたときに削除されるようオブジェクト ライフサイクル管理を構成することもできます。
非現行バージョンのオブジェクトを削除する
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、必要なオブジェクトを含むバケットの名前をクリックします。
[バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。
非現行オブジェクトを表示するには、[表示] プルダウンをクリックして、[ライブ オブジェクトと非現行オブジェクト] を選択します。
フォルダ内にあるオブジェクトに移動します。
オブジェクトのリストで、削除するバージョンのオブジェクトの名前をクリックします。
[オブジェクトの詳細] ページが開きます。[ライブ オブジェクト] タブが選択されています。
[変更履歴] タブをクリックします。
必要なバージョンのチェックボックスをオンにします。
[削除] ボタンをクリックします。
バージョンの削除ペインが開きます。
オブジェクトの削除を確認するため、テキスト フィールドに「
delete
」と入力します。[削除] をクリックします。
コマンドライン
gcloud storage rm
コマンドを使用します。
gcloud storage rm gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER
ここで
BUCKET_NAME
は、削除する非現行バージョンを含むバケットの名前です。例:my-bucket
OBJECT_NAME
は、削除する非現行バージョンの名前です。例:pets/dog.png
GENERATION_NUMBER
は、削除する非現行バージョンの世代番号です。例:1560468815691234
成功した場合は、次の例のようなレスポンスになります。
Operation completed over 1 objects.
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
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
を使用して、DELETE
Object リクエストで JSON API を呼び出します。curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?generation=GENERATION_NUMBER"
ここで
BUCKET_NAME
は、削除する非現行バージョンを含むバケットの名前です。例:my-bucket
OBJECT_NAME
は、削除する非現行バージョンの URL エンコード名です。例:pets%2Fdog.png
として URL エンコードされている。pets/dog.png
GENERATION_NUMBER
は、削除する非現行バージョンの世代番号です。例:1560468815691234
XML API
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。cURL
を使用して、DELETE
Object リクエストで XML API を呼び出します。curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?generation=GENERATION_NUMBER"
ここで
BUCKET_NAME
は、削除する非現行バージョンを含むバケットの名前です。例:my-bucket
OBJECT_NAME
は、削除する非現行バージョンの URL エンコード名です。例:pets%2Fdog.png
として URL エンコードされている。pets/dog.png
GENERATION_NUMBER
は、削除する非現行バージョンの世代番号です。例:1560468815691234
次のステップ
- オブジェクトのバージョニング(詳細な例を含む)についてさらに確認する。
- バケットでオブジェクトのバージョニングを有効または無効にする。
- オブジェクトのライフサイクル管理でオブジェクトのバージョンを自動的に管理する方法を確認する。