ノート:
- このチュートリアルではOracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときは、これらの値をクラウド環境に固有の値に置き換えます。
オブジェクト・ストレージからオブジェクトを一括/バッチで削除
イントロダクション
オブジェクト・ストレージからオブジェクトを削除するには、様々な方法があります。コンソール、CLIまたはAPI/SDKを介して、1つのオブジェクト削除操作を実行できます。ただし、非常に多くのオブジェクトを削除する場合、問題は重要ではありません。このチュートリアルでは、オブジェクトのバルク/バッチ削除に使用できる次の方法について説明します。
- Oracle Cloud Infrastructure (OCI) CLIを介した一括削除
- オブジェクト・ライフサイクル管理(OLM)によるバッチ/一括削除
注意点
OCI CLIを使用してオブジェクトを一括削除するには、次の点に注意してください:
-
Bulk- deleteコマンドはどのように実装されますか。同期または非同期操作ですか。
Bulk- deleteコマンドは同期的に実装されます。つまり、クライアント側で単一オブジェクト削除リクエストを発行することによってオブジェクトを1つずつ削除します。これは非同期サーバー側操作ではありません。たとえば、コマンドを実行する場合、終了に時間がかかるとします。実行が完了する前にコマンドを停止すると、コマンドによって削除される予定だった一部のオブジェクトのみが実際に削除されます。まだ処理/削除されていないオブジェクトが残ります。
-
一括削除コマンドの進行状況はどのように監視できますか。
一括削除コマンドの進行状況は、実行直後に確認できます。端末には、
#
文字を含むバーがあり、その横にパーセンテージがあります(次の例を参照)。これは、bulk- deleteコマンドの進行状況です。
OLMを使用してオブジェクトを一括削除するには、次の点に注意してください。
-
OLMはどのように実装されますか。同期または非同期操作ですか。
OLMは非同期操作です。つまり、ライフサイクル・ルール・ジョブは、実装の背後にある様々なニュアンスを使用してバックグラウンドで実行されます。たとえば、オブジェクト・メタデータのみが最初に削除されます。つまり、削除したオブジェクトが表示されない場合があります。ただし、フードの下では、オブジェクトの実際のデータはストレージ・サーバーにまだ存在し、後で内部ガベージ・コレクション・サービスによって削除またはクリーンアップされます。顧客の観点から見ると、オブジェクトを削除しても内部的にデータがストレージ・サーバー内に存在し、クリーン・アップされるのを待っているため(つまり、オブジェクト自体を表示できない場合(CLIまたはコンソール経由で)ストレージ領域使用量は課金されません。OLMは非同期であるため、ルールがバックグラウンドで実行されている間、Object Storageで他の処理を実行できます。
-
OLMライフサイクル・ルールの進行状況はどのように監視できますか。
現在、OLMライフサイクル・ルールの進捗をモニターする方法はありません- OLMジョブは作業リクエストに表示されません。つまり、OLMルールの進捗をモニターする機能は製品ロードマップにあり、将来使用できる可能性があります。
-
ライフサイクル・ルールを作成しました。ルールが実際に開始されるのはいつですか。
ライフサイクル・ルールはすぐに開始されないことに注意してください。たとえば、3日より古いオブジェクトのライフサイクル・ルールを作成し、3日より古い既存のオブジェクトがある場合、ルールの作成時にそのオブジェクトは即時に削除されません。ルールが作成されてから、ルールが実際に有効になるまでの遅延があります。ルールは24時間以内に有効(または少なくとも有効になる)と予想できます。
どの方法を使用しますか。
一括/バッチ・オブジェクト削除の2つの方法の主な違いは、実装です。OCI CLIのbulk- deleteコマンドはクライアント側で同期的に実装されますが、OLMはサーバー側で非同期に実装されます。一般的なルールとして、次の基準を使用してどの方法を使用するかを決定します。
次の場合にCLIのバルク削除を使用します。 | 次の場合にOLMの一括削除を使用します。 |
---|---|
削除は同期的に発生する可能性があります(CLIは同期しているため)。 | 削除は非同期に実行する必要があります(OLMは非同期であるため)。 |
ワンタイム削除 | 永久に発生するべき繰り返しの削除 |
少数のオブジェクトがあります | 多数のオブジェクトがあります。 |
オブジェクトの削除はただちに行われる必要があります。 | オブジェクトの削除は待機できます(短い遅延があります)。 |
目標
- Object Storageから多数のオブジェクトを削除するには、次の方法について学習します。
- Oracle Cloud Infrastructure (OCI) CLIを介した一括削除
- オブジェクト・ライフサイクル管理(OLM)によるバッチ/一括削除
前提条件
- オブジェクト・ストレージの概要を確認して、オブジェクト・ストレージの基本的な理解を深めます。
- オブジェクト・ライフサイクル管理の使用を確認して、オブジェクト・ストレージOLM機能の基本的な理解を深めます。
- OCI CLIの動作の基本を理解するには、コマンドライン・インタフェース(CLI)を確認します。
メソッド1: OCI CLIを使用したバルク/バッチ内のオブジェクトの削除
次のいずれかの方法を使用して、OCI CLIからオブジェクトを一括削除できます。
バケット内のオブジェクトを一括削除
OCI CLIを使用すると、次のコマンドを使用してバケット内のオブジェクトを一括削除できます。
oci os object bulk-delete -bn <bucket_name>
ノート: 削除操作を実行せず、削除されるオブジェクトの計画のみを表示する場合は、--dry-run
オプションを使用できます。
oci os object bulk-delete -bn <bucket_name> --dry-run
{
"delete-failures": {},
"deleted-objects": [
"1000_sales.csv",
"rick_and_morty.json"
]
}
接頭辞でオブジェクトを一括削除
特定の接頭辞に一致するオブジェクトのみの削除を指定するには、--prefix
オプションを追加します。次のコマンドは、接頭辞<some_prefix>
に一致するすべてのオブジェクトを削除します。
oci os object bulk-delete -bn <bucket_name> --prefix <some_prefix>
たとえば、接頭辞「rick」に一致するオブジェクトを削除する場合は、次のコマンドを使用します。
oci os object bulk-delete -bn test-bucket-1 --prefix rick
WARNING: This command will delete at least 1 objects. Are you sure you wish to continue? [y/N]: y
Deleted object rick_and_morty.json [####################################] 100%
{
"delete-failures": {},
"deleted-objects": [
"rick_and_morty.json"
]
}
パターンでオブジェクトを一括削除(包含)
特定のパターンに一致するオブジェクトのみの削除を指定するには、--include
オプションを追加します。次のコマンドは、パターン<some_pattern>
に一致するすべてのオブジェクトを削除します。
oci os object bulk-delete -bn <bucket_name> --include <some_pattern>
たとえば、JSONファイル・タイプのオブジェクトのみを削除する場合は、次のコマンドを使用します。
oci os object bulk-delete -bn test-bucket-1 --include "*.json"
WARNING: This command will delete at least 1 objects. Are you sure you wish to continue? [y/N]: y
Deleted object rick_and_morty.json [####################################] 100%
{
"delete-failures": {},
"deleted-objects": [
"rick_and_morty.json"
]
}
逆パターンによるオブジェクトの一括削除(除外)
特定のパターンに一致しないオブジェクトのみの削除を指定するには、--exclude
オプションを追加します。次のコマンドは、パターン<some_pattern>
に一致するオブジェクトを除くすべてのオブジェクトを削除します。
oci os object bulk-delete -bn <bucket_name> --exclude <some_pattern>
たとえば、JSONファイル・タイプ以外のすべてのオブジェクトを削除する場合は、次のコマンドを使用します。
oci os object bulk-delete -bn test-bucket-1 --exclude "*.json"
WARNING: This command will delete at least 1 objects. Are you sure you wish to continue? [y/N]: y
Deleted object 1000_sales.csv [####################################] 100%
{
"delete-failures": {},
"deleted-objects": [
"1000_sales.csv"
]
}
方法2: OLMによるバルク/バッチ内のオブジェクトの削除
OCI CLI以外に、オブジェクトの一括削除にOLM - Object Lifecycle Management機能を使用することもできます。OLM機能では、特定の条件が満たされた場合に実行するアクションを指定するライフサイクル・ルールを作成できます。たとえば、削除する30日より古いオブジェクトを指定できます。
OCIコンソール/CLIでの一括削除ライフサイクル・ルールの作成
ライフサイクル・ルールはOCIコンソールを使用して作成できます。これは、バケットをクリックし、サイドの「ライフサイクル・ポリシー・ルール」タブをクリックすることで実行できます。次に、ユーザーがルールを構成できるダイアログ・ボックスが開きます。
ライフサイクル・ルールはOCI CLIから作成することもできます。次のコマンドは、OCI CLIを使用してライフサイクル・ルールを作成する例です。このルールでは、10日より古いすべてのオブジェクトが削除されます。
oci os object-lifecycle-policy put --bucket-name test-bucket-1 --items '[
{
"action": "DELETE",
"isEnabled": true,
"name": "lifecycle-rule-delete-all",
"target": "objects",
"timeAmount": 10,
"timeUnit": "DAYS"
}
]'
接頭辞による一括削除ライフサイクル・ルールの作成
OCIコンソールでは、特定の条件に基づいて、削除するオブジェクトのオブジェクト名フィルタを指定できます。オブジェクト名の接頭辞一致を処理できます。次のスクリーンショットは、接頭辞test/
のすべてのオブジェクトを削除するライフサイクル・ルールを示しています。
コンソールと同様に、OCI CLIでは、接頭辞一致を介して削除するオブジェクトを指定することもできます。
oci os object-lifecycle-policy put --bucket-name <test_bucket> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [],
"inclusionPrefixes": [
<some_prefix>
]
},
...
}
]'
たとえば、次のOCI CLIコマンドは、接頭辞test/
のすべてのオブジェクトを削除するライフサイクル・ルールを作成/更新します。–-items
オプションの引数は有効なJSONリストである必要があります。
oci os object-lifecycle-policy put --bucket-name test-bucket-1 --items '[
{
"action": "DELETE",
"isEnabled": true,
"name": "lifecycle-rule-delete-all",
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [],
"inclusionPrefixes": [
"test/"
]
},
"target": "objects",
"timeAmount": 10,
"timeUnit": "DAYS"
}
]'
パターン照合(包含)による一括削除ライフサイクル・ルールの作成
OCIコンソールで、オブジェクト名フィルタを指定して、パターン一致(包含)によってオブジェクトを削除できます。次のスクリーンショットは、すべての.doc
ファイル・タイプを削除するライフサイクル・ルールを示しています。
OCI CLIから、特定のパターンに一致するファイルのみを削除することもできます。
oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [
<some_pattern>
],
"inclusionPrefixes": []
},
...
}
]'
たとえば、次のOCI CLIコマンドは、すべての.doc
ファイル・タイプを削除するライフサイクル・ルールを作成/更新します。
oci os object-lifecycle-policy put --bucket-name test-bucket-1 --items '[
{
"action": "DELETE",
"isEnabled": true,
"name": "lifecycle-rule-delete-all",
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [
"*.doc"
],
"inclusionPrefixes": []
},
"target": "objects",
"timeAmount": 10,
"timeUnit": "DAYS"
}
]'
逆パターン・マッチングによる一括削除ライフサイクル・ルールの作成(除外)
OCIコンソールで、オブジェクト名フィルタを指定して、逆パターン・マッチング(除外)によってオブジェクトを削除できます。つまり、パターンに一致するオブジェクトを除くすべてのオブジェクトを削除します。次のスクリーンショットは、.txt
ファイル・タイプ以外のすべてのものを削除するライフサイクル・ルールを示しています。
OCI CLIから、特定のパターンに一致するファイル以外のすべてのファイルを削除することもできます。
oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [
<some_pattern>
],
"inclusionPatterns": [],
"inclusionPrefixes": []
},
...
}
]'
たとえば、次のOCI CLIコマンドは、.txtファイル・タイプ以外のすべてのオブジェクトを削除するライフサイクル・ルールを作成/更新します。
oci os object-lifecycle-policy put --bucket-name test-bucket-1 --items '[
{
"action": "DELETE",
"isEnabled": true,
"name": "lifecycle-rule-delete-all",
"objectNameFilter": {
"exclusionPatterns": [
"*.txt"
],
"inclusionPatterns": [],
"inclusionPrefixes": []
},
"target": "objects",
"timeAmount": 10,
"timeUnit": "DAYS"
}
]'
関連リンク
謝辞
- 作成者 - Raymond Lin (ソフトウェアエンジニア)
その他の学習リソース
他のラボをdocs.oracle.com/learnで探すか、Oracle LearningのYouTubeチャネルでより無料の学習コンテンツにアクセスします。また、education.oracle.com/learning-explorerにアクセスしてOracle Learningエクスプローラになります。
製品のドキュメントは、Oracle Help Centerを参照してください。
Delete objects in bulk/batch from Object Storage
F74479-01
November 2022
Copyright © 2022, Oracle and/or its affiliates.