削除(復元可能)オブジェクトを使用する

概要 設定

このページでは、削除済み(復元可能)オブジェクトを一覧表示して復元する方法について説明します。

始める前に

バケット内の削除済み(復元可能)オブジェクトの管理と復元を行うには、バケットまたはバケットを含むプロジェクトに対するストレージ管理者(roles/storage.admin)の IAM ロールが必要です。この事前定義ロールには、バケットでの削除(復元可能)の管理と復元に必要な権限が含まれています。

必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

  • storage.buckets.get
  • storage.buckets.update
  • storage.buckets.list
    • この権限は、このページで説明する操作を Google Cloud コンソールで行う場合に必要です。
  • storage.objects.restore
  • storage.objects.create
  • storage.objects.delete
  • storage.buckets.restore
    • この権限は、バケット内の削除済み(復元可能)オブジェクトをまとめて復元する場合に必要です。
  • storage.bucketOperations.*
    • この権限は、長時間実行オペレーションに必要です。

バケットに対するロールの付与については、バケットで IAM を使用するをご覧ください。プロジェクトに対するロールの付与については、プロジェクトへのアクセス権を管理するをご覧ください。

バケット内の削除済み(復元可能)オブジェクトを一覧表示する

バケット内の削除済み(復元可能)オブジェクトを一覧表示できます。

コンソール

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

    [バケット] に移動

  2. バケットのリストで、削除済み(復元可能)オブジェクトを表示するバケットの名前をクリックします。[バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。

  3. [表示] リストで、[削除済み(復元可能)のオブジェクトのみ] を選択します。削除済み(復元可能)オブジェクトのリストが表示されます。

コマンドライン

バケット内の削除済み(復元可能)オブジェクトのリストを表示するには、--soft-deleted フラグと --recursive フラグを指定して、gcloud storage ls コマンドを使用します。

  gcloud storage ls gs://BUCKET_NAME --soft-deleted --recursive

次のように置き換えます。

  • BUCKET_NAME: バケットの名前。例: my-bucket

REST API

JSON API

  1. OAuth 2.0 Playground から認可アクセス トークンを取得します。固有の OAuth 認証情報を使用するように Playground を構成します。手順については、API 認証をご覧ください。
  2. cURL を使用して、GET Object リクエストで JSON API を呼び出します。

    curl -X GET \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?softDeleted=true"

    ここで

    • OAUTH2_TOKEN は、手順 1 で生成したアクセス トークンです。
    • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket

オブジェクトの削除済み(復元可能)バージョンをすべて表示する

バケット内の特定のオブジェクトについて削除済み(復元可能)バージョンをすべて表示できます。

コンソール

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

    [バケット] に移動

  2. バケットのリストで、削除済み(復元可能)バージョンを表示するオブジェクトを含むバケットの名前をクリックします。[バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。

  3. 削除済み(復元可能)バージョンを表示するオブジェクトをクリックします。[オブジェクトの詳細] ページが表示されます。

  4. [変更履歴] タブをクリックします。

  5. [表示] リストで、[削除済み(復元可能)のオブジェクトのみ] を選択します。そのオブジェクトの削除済み(復元可能)バージョンのリストが表示されます。

コマンドライン

バケット内のオブジェクトの削除済み(復元可能)バージョンのリストを表示するには、gcloud storage ls コマンドを使用します。

  gcloud storage ls gs://BUCKET_NAME/OBJECT_NAME --soft-deleted

次のように置き換えます。

  • BUCKET_NAME: バケットの名前。例: my-bucket
  • OBJECT_NAME: すべてのバージョンを表示するオブジェクトの名前。

REST API

JSON API

  1. OAuth 2.0 Playground から認可アクセス トークンを取得します。固有の OAuth 認証情報を使用するように Playground を構成します。手順については、API 認証をご覧ください。
  2. cURL を使用して、GET Object リクエストで JSON API を呼び出します。

    curl -X GET \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?softDeleted=true"

    ここで

    • OAUTH2_TOKEN は、手順 1 で生成したアクセス トークンです。
    • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket

削除済み(復元可能)オブジェクトを復元する

バケット内にある削除済み(復元可能)オブジェクトの特定のバージョンを復元できます。

コンソール

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

    [バケット] に移動

  2. バケットのリストで、復元する削除済みオブジェクトを含むバケットの名前をクリックします。[バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。

  3. [表示] リストで、[削除済み(復元可能)のオブジェクトのみ] を選択します。

  4. フォルダ内にあるオブジェクトに移動します。

  5. 削除済み(復元可能)オブジェクトをクリックします。[オブジェクトの詳細] ページが表示されます。

  6. [表示] リストで、[削除済み(復元可能)のオブジェクトのみ] を選択します。そのオブジェクトの削除済み(復元可能)バージョンのリストが表示されます。

  7. 削除済み(復元可能)オブジェクトの特定のバージョンを復元するには、そのバージョンの横にある [復元] をクリックします。オブジェクト バージョンの復元ペインが開きます。

  8. [確認] をクリックします。

コマンドライン

オブジェクトの削除済み(復元可能)バージョンを復元するには、gcloud storage restore コマンドを使用します。

  gcloud storage restore gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER

次のように置き換えます。

  • BUCKET_NAME: バケットの名前。例: my-bucket
  • OBJECT_NAME: すべてのバージョンを表示するオブジェクトの名前。
  • GENERATION_NUMBER: 復元する削除済み(復元可能)のオブジェクトの世代番号。世代番号を指定しない場合は、最新バージョンが復元されます。例: 1560468815691234

all-versions フラグを使用してオブジェクトのすべてのバージョンを復元するなど、複数のオブジェクトを一括で復元するためのその他のオプションについては、gcloud storage restore リファレンスをご覧ください。

REST API

JSON API

  1. OAuth 2.0 Playground から認可アクセス トークンを取得します。固有の OAuth 認証情報を使用するように Playground を構成します。手順については、API 認証をご覧ください。
  2. cURL を使用して、POST Object リクエストで JSON API を呼び出します。

    curl -X POST \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/restore?generation=GENERATION_NUMBER"

    ここで

    • OAUTH2_TOKEN は、手順 1 で生成したアクセス トークンです。
    • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket
    • OBJECT_NAME は、削除済み(復元可能)オブジェクトの名前です。例: cat.jpeg
    • GENERATION_NUMBER は、復元する削除済み(復元可能)オブジェクトの世代番号です。世代番号を指定しない場合は、最新バージョンが復元されます。例: 1560468815691234

バケット内の削除済み(復元可能)オブジェクトを一括で復元する

多数のオブジェクトを復元する場合や、復元するオブジェクトがわからない場合は、一括復元オペレーションを使用します。一括復元オペレーションは非同期で行われ、開始までに 1 時間以上かかる場合があります。

一括復元オペレーションは、バケットで長時間実行オペレーションを開始します。進行中に Google Cloud CLI で長時間実行オペレーションの一覧を表示すると、一括復元オペレーションの詳細とステータスを確認できます。

コンソール

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

    [バケット] に移動

  2. バケットのリストで、復元するオブジェクトを含むバケットを探します。

  3. バケットに関連付けられたバケット オーバーフロー メニュー()をクリックし、[復元ジョブの作成] を選択します。

    [復元ジョブの作成] ペインが開きます。

  4. [復元する削除済み(復元可能)のオブジェクトを選択する] セクションで、復元するオブジェクトの削除期間を選択します。

  5. (省略可)[glob パターンでフィルタ] を選択して glob パターンを入力し、glob パターンの条件を満たすオブジェクトのみを復元します。

  6. (省略可)[復元オプション] で、別の復元動作に切り替えます。

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

一括復元オペレーションの進行状況を確認するには、Google Cloud コンソールのヘッダーにある通知ボタン()をクリックします。

コマンドライン

一括復元オペレーションを使用してバケット内のすべてのオブジェクトを復元するには、gcloud storage restore コマンドを使用します。

次のコマンドは、一括復元オペレーションを実行して、特定の期間に削除されたバケットのすべてのオブジェクトを非同期で復元します。

  gcloud storage restore gs://BUCKET_NAME/** \
      --async --deleted-after-time=DELETED_AFTER_TIME \
      --deleted-before-time=DELETED_BEFORE_TIME

次のように置き換えます。

  • BUCKET_NAME: バケットの名前。例: my-bucket
  • DELETED_AFTER_TIME: 復元するオブジェクトの削除期間の開始日を指定するオプションの引数。例: 2022-12-01
  • DELETED_BEFORE_TIME: 復元するオブジェクトの削除期間の終了日を指定するオプションの引数。例: 2022-12-21

    成功すると、このコマンドは一括復元オペレーションに関連付けられた長時間実行オペレーションの ID を返します。長時間実行オペレーションの詳細を取得したり、一括復元オペレーションの完了前に長時間実行オペレーションをキャンセルできます。

REST API

JSON API

  1. OAuth 2.0 Playground から認可アクセス トークンを取得します。固有の OAuth 認証情報を使用するように Playground を構成します。手順については、API 認証をご覧ください。
  2. cURL を使用して、POST Object リクエストで JSON API を呼び出します。

    curl -X POST \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/bulkRestore"

    ここで

    • OAUTH2_TOKEN は、手順 1 で生成したアクセス トークンです。
    • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket

成功すると、このコマンドは一括復元オペレーションに関連付けられた長時間実行オペレーションの ID を返します。長時間実行オペレーションの詳細を取得したり、一括復元オペレーションの完了前に長時間実行オペレーションをキャンセルできます。

一括復元の長時間実行オペレーションを管理する

Google Cloud CLI の長時間実行オペレーションは、オペレーション名(バケット名とオペレーション ID の組み合わせ)で識別されます。

次の例は、一括復元オペレーションから返される長時間実行オペレーションを示しています。

done: false
{
  "kind": "storage@operation",
  "name": "projects/_/buckets/my-bucket/operations/CiQyODRlMTY0My0wNGExLTQ3MWItOTE2Zi1hZmQ0ZmM4ZDc4MjQQAg",
  "metadata": {
    "@type": "type.googleapis.com/google.storage.v2.BulkRestoreObjectsMetadata",
    "commonMetadata": {
      "type": "bulk-restore-objects",
      "createTime": "2023-10-20T21:08:11.289Z",
      "updateTime": "2023-10-20T21:18:37.583Z",
      "endTime": "2023-10-20T21:18:37.583Z",
      "requestedCancellation": false,
      "progressPercent": -1,
    },
    "allow_overwrite": false,
    "matchGlobs": ["*"],
    "succeededCount": "0",
    "failedCount": "0",
    "skippedCount": "0",
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.storage.v2.BulkRestoreObjectsResponse"
  }
}

長時間実行オペレーションの管理方法の一般的な情報については、gcloud storage operations のドキュメントをご覧ください。

長時間実行オペレーションの詳細を取得する

gcloud storage operations describe コマンドを実行します。

gcloud storage operations describe projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

次のように置き換えます。

  • BUCKET_NAME: 長時間実行オペレーションを含むバケットの名前。例: my-bucket

  • OPERATION_ID: 一括復元オペレーションのレスポンスで返された長時間実行オペレーションの ID。

バケット内の長時間実行オペレーションを一覧表示する

gcloud storage operations list コマンドを実行します。

gcloud storage operations list gs://BUCKET_NAME

次のように置き換えます。

  • BUCKET_NAME: 長時間実行オペレーションを含むバケットの名前。例: my-bucket

長時間実行オペレーションをキャンセルする

gcloud storage operations cancel コマンドを実行します。

gcloud storage operations cancel projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

次のように置き換えます。

  • BUCKET_NAME: 長時間実行オペレーションを含むバケットの名前。例: my-bucket

  • OPERATION_ID: 一括復元オペレーションのレスポンスで返された長時間実行オペレーションの ID。

エラー処理

長時間実行オペレーションは非同期 API から返されます。非同期 API では、同期 API とは異なるエラー処理が必要です。同期 API とは異なり、長時間実行オペレーションを返す API は、基盤となるオペレーションが失敗した場合でも成功します。長時間実行オペレーションを返す API を使用した場合、失敗したレスポンスで返されたエラーコードではなく、成功したレスポンスで返されたエラーコードに応答します。

たとえば、削除(復元可能)の一括復元リクエストを行うと、オペレーション中にエラーが発生しても、成功した HTTP ステータス コード(200 OK)が返されます。一括復元オペレーションが成功したかどうかを確認するには、長時間実行オペレーションのステータスをクエリします

長時間実行オペレーション API(Get、Create、Cancel)は同期であり、通常のエラーを返します。

再試行

非同期の Soft Delete API は、デフォルトでべき等性を備えています。そのため、意図しないリソースの変更を心配なく、非同期の Soft Delete API 呼び出しを安全に再試行できます。

次のステップ