Nota:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción al nivel gratuito de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para las credenciales, el arrendamiento y los compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por valores específicos de su entorno en la nube.
Suprimir objetos de forma masiva o por lotes de Object Storage
Introducción
Hay diferentes formas de suprimir objetos del almacenamiento de objetos. Puede realizar operaciones de supresión de un solo objeto mediante la consola, la CLI o la API/SDK. Sin embargo, el problema se convierte en no trivial al suprimir un número extremadamente grande de objetos. En este tutorial se describen los siguientes métodos que se pueden utilizar para la supresión masiva/por lotes de objetos:
- Supresión por lotes/en bloque mediante la CLI de Oracle Cloud Infrastructure (OCI)
- Supresión por lotes/en bloque mediante la gestión del ciclo de vida de objetos (OLM)
Puntos a tener en cuenta
Tenga en cuenta los siguientes puntos para suprimir objetos de forma masiva mediante la CLI de OCI:
-
¿Cómo se implementa el comando de eliminación en bloque? ¿Es una operación síncrona o asíncrona?
El comando de supresión masiva se implementa de forma síncrona, lo que significa que suprime objetos uno a uno mediante la emisión de solicitudes de supresión de objeto único en el cliente. No es una operación asíncrona del servidor. Por ejemplo, considere el caso en el que ejecuta el comando y tarda mucho tiempo en terminar. Si detiene el comando antes de que haya terminado de ejecutarse, solo se suprimirán algunos de los objetos que el comando debía suprimir. Habrá objetos restantes que aún no se hayan procesado o suprimido.
-
¿Cómo puedo supervisar el progreso de un comando de supresión masiva?
Puede ver el progreso de un comando de supresión masiva justo después de ejecutarlo. En el terminal, habrá una barra con
#
caracteres y, a continuación, un porcentaje junto a él (consulte los ejemplos a continuación): este es el progreso del comando de supresión masiva.
Tenga en cuenta los siguientes puntos para suprimir objetos de forma masiva mediante OLM:
-
¿Cómo se implementa OLM? ¿Es una operación síncrona o asíncrona?
OLM es una operación asíncrona, lo que significa que el trabajo de regla de ciclo de vida se ejecuta en segundo plano con distintos matices detrás de su implantación. Por ejemplo, al principio solo se suprimen metadatos de objeto, lo que significa que puede que no vea objetos que se acaban de suprimir. Pero debajo del capó, los datos reales del objeto todavía existen en nuestros servidores de almacenamiento y serán borrados/limpiados por nuestros servicios internos de recolección de basura más adelante. Desde el punto de vista del cliente, no se les cobrará si han suprimido un objeto pero, internamente, los datos siguen existiendo en nuestros servidores de almacenamiento mientras esperan su limpieza, es decir, no se les cobrará el uso de espacio de almacenamiento si no pueden ver los propios objetos (mediante CLI o la consola). Puesto que OLM es asíncrono, puede realizar otras acciones con Object Storage mientras las reglas se ejecutan en segundo plano.
-
¿Cómo puedo supervisar el progreso de una regla de ciclo de vida de OLM?
Actualmente no hay forma de supervisar el progreso de una regla de ciclo de vida de OLM: los trabajos de OLM no se muestran en solicitudes de trabajo. Dicho esto, la capacidad de supervisar el progreso de las reglas de la OLM está en nuestra hoja de ruta de productos y puede estar disponible en el futuro.
-
Acabo de crear una regla de ciclo de vida. ¿Cuándo comenzará realmente la regla?
Tenga en cuenta que las reglas de ciclo de vida no se inician inmediatamente. Por ejemplo, si crea una regla de ciclo de vida para objetos con más de 3 días de antigüedad que se van a suprimir y hay objetos existentes con más de 3 días de antigüedad, no se suprimirán inmediatamente cuando se cree la regla. Hay un retraso desde el momento en que se crea la regla hasta que la regla entra en vigor. Podemos esperar que la regla surta efecto (o al menos que comience a surtir efecto) en un plazo de 24 horas.
¿Qué método debo utilizar?
La principal diferencia entre los dos métodos de supresión masiva/por lotes de objetos está en la implantación. Para reiterar, el comando de supresión masiva de la CLI de OCI se implementa de forma síncrona en el cliente, mientras que OLM se implementa de manera asíncrona en el servidor. Como regla general, utilice los siguientes criterios para determinar qué método utilizar.
Use la supresión masiva de la CLI si: | Utilizar la supresión masiva de OLM si: |
---|---|
La supresión se puede producir de forma síncrona (porque CLI es síncrona) | La supresión debe producirse de forma asíncrona (porque OLM es asíncrona) |
Supresión única | Supresión recurrente que debe producirse para siempre |
Hay un pequeño número de objetos | Hay un gran número de objetos |
La supresión del objeto debe producirse inmediatamente | La supresión del objeto puede esperar (tener un breve retraso) |
Objetivo
- Obtenga información sobre los siguientes métodos para suprimir un gran número de objetos del almacenamiento de objetos:
- Supresión por lotes/en bloque mediante la CLI de Oracle Cloud Infrastructure (OCI)
- Supresión por lotes/en bloque mediante la gestión del ciclo de vida de objetos (OLM)
Requisitos
- Consulte Visión general de Object Storage para obtener una descripción básica de Object Storage.
- Consulte Uso de la gestión de ciclo de vida de objetos para obtener una visión básica de la función OLM del almacenamiento de objetos.
- Consulte Interfaz de línea de comandos (CLI) para obtener una comprensión básica del funcionamiento de la CLI de OCI.
Método 1: Supresión de objetos en bloque/lote mediante la CLI de OCI
Puede suprimir objetos de forma masiva desde la CLI de OCI mediante cualquiera de los siguientes métodos.
Suprimir objetos de forma masiva dentro de un cubo
Puede utilizar la CLI de OCI para realizar la supresión masiva de objetos de un cubo mediante el siguiente comando:
oci os object bulk-delete -bn <bucket_name>
Nota: Si no desea ejecutar la operación de supresión, pero sólo desea ver un plan de los objetos que se suprimirán, puede utilizar la opción --dry-run
.
oci os object bulk-delete -bn <bucket_name> --dry-run
{
"delete-failures": {},
"deleted-objects": [
"1000_sales.csv",
"rick_and_morty.json"
]
}
Suprimir objetos de forma masiva por prefijo
Puede especificar la supresión de solo objetos que coincidan con un prefijo concreto agregando la opción --prefix
. El siguiente comando suprime todos los objetos que coinciden con el prefijo <some_prefix>
.
oci os object bulk-delete -bn <bucket_name> --prefix <some_prefix>
Por ejemplo, si desea suprimir objetos que coincidan con el prefijo "rick", utilice el siguiente comando:
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"
]
}
Suprimir objetos de forma masiva por patrón (inclusión)
Puede especificar la supresión de solo objetos que coincidan con un patrón concreto agregando la opción --include
. El siguiente comando suprime todos los objetos que coinciden con el patrón <some_pattern>
.
oci os object bulk-delete -bn <bucket_name> --include <some_pattern>
Por ejemplo, si desea suprimir solo objetos que son de tipo de archivo JSON, utilice el siguiente comando:
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"
]
}
Suprimir objetos de forma masiva por patrón inverso (exclusión)
Puede especificar la supresión de solo objetos que no coincidan con un patrón concreto agregando la opción --exclude
. El siguiente comando suprime todos los objetos excepto los que coinciden con el patrón <some_pattern>
.
oci os object bulk-delete -bn <bucket_name> --exclude <some_pattern>
Por ejemplo, si desea suprimir todos los objetos excepto los que son de tipo de archivo JSON, utilice el siguiente comando:
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étodo 2: Supresión de objetos en bloque/lote mediante OLM
Además de la CLI de OCI, también puede usar la función Gestión del ciclo de vida de objetos de OLM para la supresión masiva de objetos. La función OLM permite crear reglas de ciclo de vida que especifican la acción que se debe realizar si se cumple una condición concreta. Por ejemplo, podemos especificar objetos que tengan más de 30 días de antigüedad para suprimir.
Creación de una regla de ciclo de vida de supresión masiva en la consola o CLI de OCI
Las reglas de ciclo de vida se pueden crear a través de la consola de OCI. Para ello, haga clic en un cubo y en el separador Lifecycle Policy Rules del lateral. A continuación, debe aparecer un cuadro de diálogo que permita al usuario configurar su regla.
Las reglas de ciclo de vida también se pueden crear mediante la CLI de OCI. El siguiente comando es un ejemplo de creación de una regla de ciclo de vida mediante la CLI de OCI. La regla suprime todos los objetos con más de 10 días de antigüedad.
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"
}
]'
Crear una regla de ciclo de vida de supresión masiva por prefijo
En la consola de OCI, puede especificar filtros de nombre de objeto para objetos que se suprimirán, según una condición concreta. Puede manejar la coincidencia de prefijo de nombre de objeto. En la siguiente captura de pantalla se muestra una regla de ciclo de vida que suprimirá todos los objetos con el prefijo test/
.
De forma similar a la consola, la CLI de OCI también puede especificar qué objetos suprimir mediante la coincidencia de prefijos.
oci os object-lifecycle-policy put --bucket-name <test_bucket> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [],
"inclusionPrefixes": [
<some_prefix>
]
},
...
}
]'
Por ejemplo, el siguiente comando de la CLI de OCI crea o actualiza una regla de ciclo de vida que suprimirá todos los objetos con el prefijo test/
. Recuerde que el argumento de la opción –-items
debe ser una lista JSON válida.
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"
}
]'
Crear una regla de ciclo de vida de supresión masiva por coincidencia de patrones (inclusiones)
En la consola de OCI, puede especificar filtros de nombre de objeto para suprimir objetos por coincidencia de patrones (inclusiones). En la siguiente captura de pantalla se muestra una regla de ciclo de vida que suprimirá todos los tipos de archivo .doc
.
También puede suprimir solo archivos que coincidan con un patrón concreto desde la CLI de OCI.
oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [
<some_pattern>
],
"inclusionPrefixes": []
},
...
}
]'
Por ejemplo, el siguiente comando de la CLI de OCI crea/actualiza una regla de ciclo de vida que suprimirá todos los tipos de archivo .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"
}
]'
Crear una regla de ciclo de vida de supresión masiva mediante la coincidencia de patrones inversa (exclusiones)
En la consola de OCI, puede especificar filtros de nombre de objeto para suprimir objetos mediante la coincidencia de patrones inversa (exclusión): es decir, suprimir todos los objetos, excepto los que coinciden con el patrón. En la siguiente captura de pantalla se muestra una regla de ciclo de vida que suprimirá todo excepto los tipos de archivo .txt
.
También puede suprimir todos los archivos excepto los que coinciden con un patrón concreto de la CLI de OCI.
oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [
<some_pattern>
],
"inclusionPatterns": [],
"inclusionPrefixes": []
},
...
}
]'
Por ejemplo, el siguiente comando de la CLI de OCI crea/actualiza una regla de ciclo de vida que suprimirá todos los objetos excepto los tipos de archivo .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"
}
]'
Enlaces relacionados
Agradecimientos
- Autor: Raymond Lin (Ingeniero de software)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Delete objects in bulk/batch from Object Storage
F74479-01
November 2022
Copyright © 2022, Oracle and/or its affiliates.