Nota:

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:

Puntos a tener en cuenta

Tenga en cuenta los siguientes puntos para suprimir objetos de forma masiva mediante la CLI de OCI:

Tenga en cuenta los siguientes puntos para suprimir objetos de forma masiva mediante OLM:

¿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

Requisitos

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.

Cuadro de diálogo Crear consola de reglas de ciclo de vida

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/.

Crear prefijo de consola de reglas de ciclo de vida

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.

Crear inclusión de patrón de consola de reglas de ciclo de vida

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.

Crear exclusión de patrón de consola de reglas de ciclo de vida

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

Agradecimientos

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.