Remarque :

Supprimer des objets en masse/par lots d'Object Storage

Introduction

Il existe différentes méthodes de suppression d'objets dans Object Storage. Vous pouvez effectuer des opérations de suppression d'objet unique via la console, la CLI ou l'API/le kit SDK. Toutefois, le problème devient non trivial lors de la suppression d'un très grand nombre d'objets. Ce tutoriel décrit les méthodes suivantes pouvant être utilisées pour la suppression en masse/par lots d'objets :

Points à noter

Notez les points suivants pour supprimer des objets en masse à l'aide de l'interface de ligne de commande OCI :

Notez les points suivants pour supprimer des objets en masse à l'aide d'OLM :

Quelle méthode dois-je utiliser ?

La principale différence entre les deux méthodes de suppression d'objets en masse/avec regroupement réside dans l'implémentation. Pour répéter, la commande de suppression en masse de l'interface de ligne de commande OCI est implémentée de manière synchrone côté client, tandis qu'OLM est implémenté de manière asynchrone côté serveur. En règle générale, utilisez les critères suivants pour déterminer la méthode à utiliser.

Utiliser la suppression en masse de la CLI si : Utiliser la suppression en masse OLM si :
La suppression peut avoir lieu de façon synchrone (car la CLI est synchrone). La suppression doit avoir lieu de manière asynchrone (car OLM est asynchrone).
Suppression ponctuelle Suppression récurrente qui devrait se produire indéfiniment
Il existe un petit nombre d'objets. Il existe un grand nombre d'objets.
La suppression d'objet doit avoir lieu immédiatement La suppression d'objet peut attendre (délai court)

Objectif

Prérequis

Méthode 1 : suppression d'objets en masse/par lots via l'interface de ligne de commande OCI

Vous pouvez supprimer en masse des objets à partir de l'interface de ligne de commande OCI à l'aide de l'une des méthodes suivantes.

Supprimer des objets en masse dans un bucket

Vous pouvez utiliser l'interface de ligne de commande OCI pour supprimer en masse des objets d'un bucket à l'aide de la commande suivante :

oci os object bulk-delete -bn <bucket_name>

Remarque : si vous ne voulez pas exécuter l'opération de suppression, mais que vous voulez simplement voir un plan dont les objets seront supprimés, vous pouvez utiliser l'option --dry-run.

oci os object bulk-delete -bn <bucket_name> --dry-run
{
  "delete-failures": {},
  "deleted-objects": [
    "1000_sales.csv",
    "rick_and_morty.json"
  ]
}

Supprimer les objets en masse par préfixe

Vous pouvez spécifier la suppression des objets qui correspondent à un préfixe particulier, en ajoutant l'option --prefix. La commande suivante supprime tous les objets correspondant au préfixe <some_prefix>.

oci os object bulk-delete -bn <bucket_name> --prefix <some_prefix>

Par exemple, si vous souhaitez supprimer des objets correspondant au préfixe "rick", utilisez la commande suivante :

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"
    ]
}

Supprimer les objets en masse par modèle (inclusion)

Vous pouvez spécifier la suppression des objets qui correspondent à un modèle particulier, en ajoutant l'option --include. La commande suivante supprime tous les objets correspondant au modèle <some_pattern>.

oci os object bulk-delete -bn <bucket_name> --include <some_pattern>

Par exemple, si vous souhaitez supprimer uniquement les objets de type fichier JSON, utilisez la commande suivante :

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"
    ]
}

Supprimer les objets en masse par modèle inverse (exclusion)

Vous pouvez spécifier la suppression des objets qui ne correspondent à aucun modèle particulier, en ajoutant l'option --exclude. La commande suivante supprime tous les objets, à l'exception de ceux qui correspondent au modèle <some_pattern>.

oci os object bulk-delete -bn <bucket_name> --exclude <some_pattern>

Par exemple, si vous souhaitez supprimer tous les objets à l'exception de ceux de type fichier JSON, utilisez la commande suivante :

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"
    ]
}

Méthode 2 : Supprimer les objets en masse/par lots via OLM

Outre l'interface de ligne de commande OCI, vous pouvez également utiliser la fonctionnalité OLM - Gestion du cycle de vie des objets - pour la suppression en masse d'objets. La fonctionnalité OLM vous permet de créer des règles de cycle de vie qui spécifient l'action à entreprendre si une condition particulière est remplie. Par exemple, nous pouvons indiquer que les objets datant de plus de 30 jours doivent être supprimés.

Créer une règle de cycle de vie de suppression en masse sur la console/CLI OCI

Les règles de cycle de vie peuvent être créées via la console OCI. Pour ce faire, cliquez sur un bucket et sur l'onglet Règles de stratégie de cycle de vie sur le côté. Ensuite, une boîte de dialogue doit s'afficher, permettant à l'utilisateur de configurer sa règle.

Boîte de dialogue Créer une console de règles de cycle de vie

Les règles de cycle de vie peuvent également être créées via l'interface de ligne de commande OCI. La commande suivante est un exemple de création d'une règle de cycle de vie à l'aide de l'interface de ligne de commande OCI. La règle supprime tous les objets datant de plus de 10 jours.

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"
    }
]'

Créer une règle de cycle de vie de suppression en masse par préfixe

Dans la console OCI, vous pouvez spécifier des filtres de nom d'objet pour les objets qui seront supprimés, en fonction d'une condition particulière. Il peut gérer la correspondance de préfixe de nom d'objet. La capture d'écran ci-dessous présente une règle de cycle de vie qui supprimera tous les objets dont le préfixe est test/.

Créer un préfixe de console de règle de cycle de vie

A l'instar de la console, l'interface de ligne de commande OCI peut également spécifier les objets à supprimer via la mise en correspondance de préfixe.

oci os object-lifecycle-policy put --bucket-name <test_bucket> --items '[
    {
        ...
        "objectNameFilter": {
            "exclusionPatterns": [],
            "inclusionPatterns": [],
            "inclusionPrefixes": [
                <some_prefix>
            ]
        },
        ...
    }
]'

Par exemple, la commande d'interface de ligne de commande OCI suivante crée/met à jour une règle de cycle de vie qui supprimera tous les objets avec le préfixe test/. N'oubliez pas que l'argument de l'option –-items doit être une liste JSON valide.

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"
    }
]'

Créer une règle de cycle de vie de suppression en masse par correspondance de modèle (Inclusions)

Dans la console OCI, vous pouvez indiquer des filtres de nom d'objet pour supprimer des objets par correspondance de modèle (inclusions). La capture d'écran ci-dessous présente une règle de cycle de vie qui supprimera tous les types de fichier .doc.

Créer une inclusion de modèle de console de règle de cycle de vie

Vous pouvez également supprimer uniquement les fichiers correspondant à un modèle particulier dans l'interface de ligne de commande OCI.

oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
    {
        ...
        "objectNameFilter": {
            "exclusionPatterns": [],
            "inclusionPatterns": [
                <some_pattern>
            ],
            "inclusionPrefixes": []
        },
        ...
    }
]'

Par exemple, la commande d'interface de ligne de commande OCI suivante crée/met à jour une règle de cycle de vie qui supprimera tous les types de fichier .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"
    }
]'

Créer une règle de cycle de vie de suppression en masse par correspondance de modèle inverse (exclusions)

Dans la console OCI, vous pouvez spécifier des filtres de nom d'objet pour supprimer des objets par correspondance de modèle inverse (exclusion), c'est-à-dire supprimer tous les objets, à l'exception de ceux qui correspondent au modèle. La capture d'écran ci-dessous présente une règle de cycle de vie qui supprimera tout sauf les types de fichier .txt.

Créer une exclusion de modèle de console de règle de cycle de vie

Vous pouvez également supprimer de l'interface de ligne de commande OCI tous les fichiers, à l'exception de ceux qui correspondent à un modèle particulier.

oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
    {
        ...
        "objectNameFilter": {
            "exclusionPatterns": [
                <some_pattern>
            ],
            "inclusionPatterns": [],
            "inclusionPrefixes": []
        },
        ...
    }
]'

Par exemple, la commande d'interface de ligne de commande OCI suivante crée/met à jour une règle de cycle de vie qui supprimera chaque objet à l'exception des types de fichier .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"
    }
]'

Remerciements

Ressources de formation supplémentaires

Explorez d'autres exercices sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir explorateur Oracle Learning.

Pour consulter la documentation du produit, consultez Oracle Help Center.