ノート:

オブジェクト・ストレージからオブジェクトを一括/バッチで削除

イントロダクション

オブジェクト・ストレージからオブジェクトを削除するには、様々な方法があります。コンソール、CLIまたはAPI/SDKを介して、1つのオブジェクト削除操作を実行できます。ただし、非常に多くのオブジェクトを削除する場合、問題は重要ではありません。このチュートリアルでは、オブジェクトのバルク/バッチ削除に使用できる次の方法について説明します。

注意点

OCI CLIを使用してオブジェクトを一括削除するには、次の点に注意してください:

OLMを使用してオブジェクトを一括削除するには、次の点に注意してください

どの方法を使用しますか。

一括/バッチ・オブジェクト削除の2つの方法の主な違いは、実装です。OCI CLIのbulk- deleteコマンドはクライアント側で同期的に実装されますが、OLMはサーバー側で非同期に実装されます。一般的なルールとして、次の基準を使用してどの方法を使用するかを決定します。

次の場合にCLIのバルク削除を使用します。 次の場合にOLMの一括削除を使用します。
削除は同期的に発生する可能性があります(CLIは同期しているため)。 削除は非同期に実行する必要があります(OLMは非同期であるため)。
ワンタイム削除 永久に発生するべき繰り返しの削除
少数のオブジェクトがあります 多数のオブジェクトがあります。
オブジェクトの削除はただちに行われる必要があります。 オブジェクトの削除は待機できます(短い遅延があります)。

目標

前提条件

メソッド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"
    }
]'

謝辞

その他の学習リソース

他のラボをdocs.oracle.com/learnで探すか、Oracle LearningのYouTubeチャネルでより無料の学習コンテンツにアクセスします。また、education.oracle.com/learning-explorerにアクセスしてOracle Learningエクスプローラになります。

製品のドキュメントは、Oracle Help Centerを参照してください。