オブジェクトの削除について

不要になったオブジェクトを削除すると、ストレージ費用を削減し、データ保持要件を遵守し、バケットを整理できます。スケーリングと自動化のニーズに応じて、オブジェクトを手動、プログラム、または自動化されたポリシーで削除する複数の方法から選択できます。

このページでは、バケットからオブジェクトを削除するために使用できるメソッドについて説明し、タスクに適したメソッドを選択できるようにします。

オブジェクトの削除方法については、オブジェクトを削除するをご覧ください。

単一オブジェクトの削除

単一オブジェクトの削除により、特定のデータをきめ細かく制御できます。通常、バケットのデータに対して即時のターゲット更新を行う必要がある場合に、単一のオブジェクトを削除します。単一のオブジェクトを削除する一般的な理由は次のとおりです。

  • エラーの修正: 誤ってアップロードされたファイルや、誤ったデータを含むファイルを削除します。

  • クリーンアップ: タスクの完了後に一時ファイルやログを手動で削除すること。

  • アプリケーション ロジック: プロフィール写真の削除など、アプリケーションでアクションを実行したときにファイルを自動的に削除します。

  • セキュリティとコンプライアンス: 機密情報の削除の一環としてオブジェクトを削除します。

単一のオブジェクトを削除するツール

バケットから 1 つのオブジェクトを削除するには、次のいずれかのツールを使用します。各ツールは、オブジェクトごとに個別の DELETE リクエストを送信します。

ツール 説明
Google Cloud コンソール Google Cloud コンソールを使用してオブジェクトを削除します。
Google Cloud CLI gcloud storage rm コマンドを使用してオブジェクトを削除します。
クライアント ライブラリ C++、C#、Go、Java、Node.js、PHP、Python、Ruby などのサポートされている言語を使用して、オブジェクトをプログラムで削除します。
REST API JSON API と XML REST API を使用してオブジェクトを削除します。

オブジェクトの一括削除

一括削除メソッドは、大規模なデータセットに対する高効率のオペレーション用に設計されています。一括削除を使用して、ストレージ費用を管理し、バケット間のデータの整備を自動化します。複数のオブジェクトを削除する一般的な理由は次のとおりです。

  • 費用の最適化: オペレーションに不要になった古いログや一時的なビルド アーティファクトなどの大規模なデータセットを削除します。

  • コンプライアンスの自動化: 特定の期間(30 日など)の経過後にオブジェクトを削除して、データ保持ポリシーを自動的に適用します。

  • バケットの移行または廃止: データの移行時やプロジェクトの終了時に、数百万または数十億のオブジェクトをクリアします。

  • データ パイプラインのクリーンアップ: 最終レポートまたはデータセットが生成された後に、中間処理ファイルを削除します。

オブジェクトを一括で削除するツール

オブジェクトを一括で削除するには、次のいずれかのツールを使用します。これらのメソッドは、個々のリクエストと比較して、スループットの向上とオーバーヘッドの削減に最適化されています。

ツール 説明
XML API を使用して複数のオブジェクトを削除する

1 つの POST リクエストで最大 1,000 個のオブジェクトを削除するプログラムによる方法。マルチオブジェクト削除 XML API は、Amazon S3 API との相互運用性を備えるように設計されています。そのため、既存の Amazon S3 のツール、ライブラリ、ワークフローを使用して、Cloud Storage のオブジェクトを管理できます。XML API は、両方のプラットフォーム間でデータを移行したり、リソースを管理したりする場合に便利です。

XML API を使用して複数のオブジェクトを削除すると、Cloud Storage はデータアクセス監査ログを生成します。これらのログには、データアクセス監査ログを有効にしている場合に、リクエスト全体と個々のオブジェクトの削除に関する詳細が含まれます。詳細については、マルチオブジェクト削除 XML API の監査ログをご覧ください。

マルチオブジェクト削除 XML API には次の制限があります。

  • ガバナンス モードのバイパス: Cloud Storage は、削除時にガバナンス モードのバイパスをサポートしていません。Amazon S3 では、x-amz-bypass-governance-retention ヘッダーを指定することで、ガバナンス タイプでロックされているオブジェクトを削除できます。Cloud Storage は、オブジェクト保持ポリシーを適用して、データの不変性を実現します。
  • 削除マーカー: 単一オブジェクトまたは複数オブジェクトの削除で、Cloud Storage では Amazon S3 削除マーカーはサポートされていません。Cloud Storage で非現行オブジェクトを復元するには、PUT リクエストを使用して、必要なバージョンをライブ オブジェクトにコピーする必要があります。
  • 条件付き削除: Cloud Storage のマルチオブジェクト削除 API は、ETagLast-ModifiedSize に基づく条件付き削除をサポートしていません。これらのパラメータを含むリクエストは、400 エラーになります。Cloud Storage の条件付きオペレーションでは、x-goog-if-generation-matchx-goog-if-metageneration-match などのヘッダーを使用します。
Google Cloud コンソール 削除するオブジェクトが 100 万個までであれば、 Google Cloud コンソールの使用も推奨されます。削除リクエストを開始すると、プロセスはバックグラウンドで行われます。一括削除のステータスを確認するには、 Google Cloud コンソールのヘッダーにある通知ボタン()をクリックします。
ストレージのバッチ オペレーション

マニフェスト ファイルに基づいて削除を実行するフルマネージド サービス。組み込みのトラッキングと再試行により、最大数十億個のオブジェクトを削除するのに適しています。

次の操作を行う場合は、ストレージ バッチ オペレーションを使用することをおすすめします。

  • 数百万または数十億のオブジェクトを削除する。
  • 組み込みのトラッキング、再試行、エラー処理により、信頼性を高めます。
  • 個々の API 呼び出しをスクリプト化する場合と比較して、クライアントサイドのオーバーヘッドを削減します。
gcloud storage rm --recursive 共通の接頭辞を共有するすべてのオブジェクトを削除する Google Cloud CLI コマンド。CLI を使用する小規模から中規模のバルクタスクに適しています。
オブジェクトのライフサイクル管理 オブジェクトの経過時間やストレージ クラスなど、定義したルールに基づいてオブジェクトを自動的に削除するサーバーサイド機能。バケット内のオブジェクトを一括削除するには、条件の Age が 0 に設定され、アクションが delete に設定されているライフサイクル構成ルールを設定します。ルールを設定すると、Cloud Storage は非同期で一括削除を実行します。
バッチ リクエスト 特定のクライアント ライブラリを使用する場合、または JSON API を直接使用する場合は、削除リクエストをバッチ処理すると、必要な HTTP 接続の数を削減できます。

削除方法の選択

オブジェクトを削除するツールは、削除する必要があるオブジェクトの数と理由によって異なります。ユースケースに適した方法を選択するには、次のガイダンスを使用します。

  • 特定のオブジェクトを 1 つまたは少数のみ削除する必要がある場合は、Google Cloud コンソール、gcloud storage rm、またはクライアント ライブラリまたは REST API を使用した単一の API 呼び出しを使用します。詳細については、単一のオブジェクトを削除するをご覧ください。
  • 1 つの API リクエストで最大 1,000 個のオブジェクトを削除する必要がある場合は、マルチオブジェクト削除 XML API、Amazon S3 CLI、または Boto3 などの S3 互換クライアント ライブラリを使用します。詳細については、オブジェクトを一括削除するをご覧ください。
  • 共通の名前接頭辞を共有する多くのオブジェクトを削除する場合は、gcloud storage rm --recursive コマンドを使用します。詳細については、Google Cloud CLI を使用してオブジェクトを一括削除するをご覧ください。
  • 数百万個または数十億個のオブジェクトを削除する必要がある場合は、ストレージ バッチ オペレーションを使用して、大規模な削除を確実に行います。
  • 特定の条件を満たしたときにオブジェクトを自動的に削除する必要がある場合は、オブジェクトのライフサイクル管理を使用します。

次のステップ