Remarque :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction à Oracle Cloud Infrastructure Free Tier.
- Il utilise des exemples de valeur pour les informations d'identification Oracle Cloud Infrastructure, la location et les compartiments. A la fin de votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
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 :
- Suppression par lots/en masse via l'interface de ligne de commande d'Oracle Cloud Infrastructure (OCI)
- Suppression par lots/en masse via la gestion du cycle de vie des objets (OLM)
Points à noter
Notez les points suivants pour supprimer des objets en masse à l'aide de l'interface de ligne de commande OCI :
-
Comment la commande de suppression en masse est-elle implémentée ? S'agit-il d'une opération synchrone ou asynchrone ?
La commande de suppression en masse est implémentée de manière synchrone, ce qui signifie qu'elle supprime les objets un par un en émettant des demandes de suppression à un seul objet côté client. Il ne s'agit pas d'une opération côté serveur asynchrone. Prenons par exemple le cas où vous exécutez la commande et il faut beaucoup de temps pour terminer. Si vous arrêtez la commande avant qu'elle ne soit terminée, seuls certains objets devant être supprimés par la commande seront réellement supprimés. Des objets restants doivent encore être traités/supprimés.
-
Comment surveiller la progression d'une commande de suppression en masse ?
Vous pouvez voir la progression d'une commande de suppression en masse juste après l'avoir exécutée. Dans votre terminal, il y aura une barre avec
#
caractères, puis un pourcentage à côté (voir les exemples ci-dessous) - c'est la progression de la commande de suppression en masse.
Notez les points suivants pour supprimer des objets en masse à l'aide d'OLM :
-
Comment OLM est-il implémenté ? S'agit-il d'une opération synchrone ou asynchrone ?
OLM est une opération asynchrone, ce qui signifie que le travail de règle de cycle de vie s'exécute en arrière-plan avec différentes nuances derrière son implémentation. Par exemple, seules les métadonnées d'objet sont supprimées au début, ce qui signifie que vous ne pouvez pas voir les objets qui viennent d'être supprimés. Mais sous le capot, les données réelles de l'objet existent toujours dans nos serveurs de stockage et seront supprimées/ nettoyées par nos services internes de nettoyage de la mémoire ultérieurement. Du point de vue du client, elles ne seront pas facturées si elles ont supprimé un objet mais en interne, les données existent toujours dans nos serveurs de stockage car elles attendent d'être nettoyées, c'est-à-dire qu'elles ne seront pas facturées pour l'utilisation de l'espace de stockage si elles ne peuvent pas voir les objets eux-mêmes (via la CLI ou la console). OLM étant asynchrone, vous pouvez effectuer d'autres opérations avec Object Storage pendant l'exécution des règles en arrière-plan.
-
Comment surveiller la progression d'une règle de cycle de vie OLM ?
Il n'existe actuellement aucun moyen de surveiller la progression d'une règle de cycle de vie OLM : les travaux OLM n'apparaissent pas dans les demandes de travail. Cela étant dit, la capacité de surveiller l'avancement des règles de gestion de l'environnement est dans notre feuille de route produit et peut être disponible à l'avenir.
-
Je viens de créer une règle de cycle de vie. Quand la règle démarrera-t-elle réellement ?
Gardez à l'esprit que les règles de cycle de vie ne démarrent pas immédiatement. Par exemple, si vous créez une règle de cycle de vie pour les objets datant de plus de 3 jours à supprimer et que des objets existants datant de plus de 3 jours, ils ne seront pas supprimés immédiatement lors de la création de la règle. Il y a un délai entre la création de la règle et son application effective. Nous pouvons nous attendre à ce que la règle prenne effet (ou au moins commencer à prendre effet) dans les 24 heures.
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
- Découvrez les méthodes suivantes pour supprimer un grand nombre d'objets dans Object Storage :
- Suppression par lots/en masse via l'interface de ligne de commande d'Oracle Cloud Infrastructure (OCI)
- Suppression par lots/en masse via la gestion du cycle de vie des objets (OLM)
Prérequis
- Reportez-vous à Présentation d'Object Storage pour en savoir plus de base sur Object Storage.
- Reportez-vous à Utilisation de la gestion du cycle de vie des objets pour bien comprendre la fonctionnalité OLM d'Object Storage.
- Reportez-vous à Interface de ligne de commande (CLI) pour comprendre le fonctionnement de l'interface de ligne de commande OCI.
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.
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/
.
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
.
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
.
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"
}
]'
Liens connexes
Remerciements
- Auteur - Raymond Lin (ingénieur logiciel)
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.
Delete objects in bulk/batch from Object Storage
F74479-01
November 2022
Copyright © 2022, Oracle and/or its affiliates.