Nota:
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituire questi valori con quelli specifici del tuo ambiente cloud.
Elimina gli oggetti in blocco/batch dallo storage degli oggetti
Introduzione
Esistono modi diversi per eliminare gli oggetti dallo storage degli oggetti. Puoi eseguire operazioni di eliminazione di singoli oggetti tramite console, CLI o API/SDK. Tuttavia, il problema diventa non banale quando si elimina un numero estremamente elevato di oggetti. In questa esercitazione vengono descritti i metodi riportati di seguito che è possibile utilizzare per l'eliminazione in blocco/batch degli oggetti.
- Eliminazione in batch/bulk tramite l'interfaccia CLI di Oracle Cloud Infrastructure (OCI)
- Eliminazione in batch/bonifico tramite Object Lifecycle Management (OLM)
Punti da notare
Consultare i seguenti punti per eliminare oggetti in blocco utilizzando l'interfaccia CLI OCI:
-
Come viene implementato il comando bulk-delete? È un'operazione sincrona o asincrona?
Il comando bulk-delete viene implementato in modo sincrono. Ciò significa che elimina gli oggetti singolarmente eseguendo richieste di eliminazione a singolo oggetto sul lato client. Non è un'operazione asincrona lato server. Ad esempio, considerare il caso in cui si esegue il comando e il completamento del comando richiede molto tempo. Se si arresta il comando prima che termini l'esecuzione, verranno effettivamente eliminati solo alcuni degli oggetti che dovevano essere eliminati dal comando. Verranno presenti altri oggetti che devono ancora essere elaborati/eliminati.
-
Come è possibile monitorare lo stato di avanzamento di un comando di eliminazione in blocco?
È possibile visualizzare lo stato di avanzamento di un comando di eliminazione in blocco subito dopo averlo eseguito. Nel terminale, ci sarà una barra con
#
caratteri e poi una percentuale accanto ad esso (vedi esempi di seguito) - questo è lo stato di avanzamento del comando bulk-delete.
Consultare i seguenti punti per eliminare oggetti in blocco utilizzando OLM:
-
Come viene implementato OLM? È un'operazione sincrona o asincrona?
OLM è un'operazione asincrona, ovvero il processo delle regole del ciclo di vita viene eseguito in background con varie sfumature alla base della sua implementazione. Ad esempio, all'inizio vengono eliminati solo i metadati dell'oggetto, il che significa che è possibile che non vengano visualizzati oggetti appena eliminati. Ma sotto il cofano, i dati effettivi dell'oggetto esistono ancora nei nostri server di storage e saranno cancellati/puliti dai nostri servizi interni di garbage collection in seguito. Dal punto di vista dei clienti, non verranno addebitati se hanno eliminato un oggetto ma internamente, i dati esistono ancora negli storage server mentre attendono di essere puliti, ossia non verranno addebitati per l'utilizzo dello spazio di storage se non saranno in grado di visualizzare gli oggetti stessi (tramite CLI o console). Poiché OLM è asincrono, puoi eseguire altre operazioni con lo storage degli oggetti mentre le regole sono in esecuzione in background.
-
Come posso monitorare lo stato di avanzamento di una regola del ciclo di vita OLM?
Attualmente non è possibile monitorare l'avanzamento di una regola del ciclo di vita OLM: i processi OLM non vengono visualizzati nelle richieste di lavoro. Ciò detto, la capacità di monitorare i progressi delle regole OLM è nella nostra roadmap dei prodotti e potrebbe essere disponibile in futuro.
-
Ho appena creato una regola del ciclo di vita. Quando inizierà effettivamente la regola?
Tenere presente che le regole del ciclo di vita non iniziano immediatamente. Ad esempio, se si crea una regola del ciclo di vita per gli oggetti che risalgono a più di 3 giorni prima dell'eliminazione e sono presenti oggetti esistenti che risalgono a più di 3 giorni, non verranno eliminati immediatamente al momento della creazione della regola. Si verifica un ritardo dal momento in cui la regola viene creata fino a quando la regola diventa effettiva. Possiamo aspettarci che la regola entri in vigore (o almeno inizi a diventare effettiva) entro 24 ore.
Qual è il metodo da utilizzare?
La differenza principale tra i due metodi di eliminazione di oggetti in blocco/in batch è nell'implementazione. Per ripetere l'operazione, il comando di eliminazione in blocco CLI OCI viene implementato in modo sincrono sul lato client, mentre OLM viene implementato in modo asincrono sul lato server. In generale, utilizzare i criteri riportati di seguito per determinare il metodo da utilizzare.
Utilizzare l'eliminazione di massa CLI se: | Utilizzare l'eliminazione di massa OLM se: |
---|---|
L'eliminazione può avvenire in modo sincrono perché l'interfaccia CLI è sincrona | L'eliminazione deve avvenire in modo asincrono (poiché OLM è asincrono) |
Eliminazione occasionale | Eliminazione ricorrente che deve avvenire per sempre |
Esiste un numero ridotto di oggetti | Sono presenti numerosi oggetti |
L'eliminazione dell'oggetto deve avvenire immediatamente | L'eliminazione dell'oggetto può attendere (con un breve ritardo) |
Obiettivo
- Scopri i seguenti metodi per eliminare un numero elevato di oggetti dallo storage degli oggetti:
- Eliminazione in batch/bulk tramite l'interfaccia CLI di Oracle Cloud Infrastructure (OCI)
- Eliminazione in batch/bonifico tramite Object Lifecycle Management (OLM)
Prerequisiti
- Per informazioni di base sullo storage degli oggetti, consulta la sezione relativa alla panoramica dello storage degli oggetti.
- Per comprendere di base la funzione OLM dello storage degli oggetti, consulta l'articolo sull'uso di Object Lifecycle Management.
- Per comprendere il funzionamento di base dell'interfaccia CLI OCI, consultare Command Line Interface (CLI).
Metodo 1: eliminazione di oggetti in blocco/batch tramite l'interfaccia CLI OCI
È possibile eliminare in blocco gli oggetti dall'interfaccia CLI OCI utilizzando uno dei metodi indicati di seguito.
Elimina gli oggetti in blocco all'interno di un bucket
Puoi utilizzare l'interfaccia CLI OCI per eseguire l'eliminazione in blocco degli oggetti all'interno di un bucket mediante il seguente comando:
oci os object bulk-delete -bn <bucket_name>
Nota: se non si desidera eseguire l'operazione di eliminazione, ma si desidera visualizzare un piano di cui verranno eliminati gli oggetti, è possibile utilizzare l'opzione --dry-run
.
oci os object bulk-delete -bn <bucket_name> --dry-run
{
"delete-failures": {},
"deleted-objects": [
"1000_sales.csv",
"rick_and_morty.json"
]
}
Elimina in blocco gli oggetti in base al prefisso
È possibile specificare l'eliminazione solo degli oggetti che corrispondono a un determinato prefisso aggiungendo l'opzione --prefix
. Il comando seguente elimina tutti gli oggetti che corrispondono al prefisso <some_prefix>
.
oci os object bulk-delete -bn <bucket_name> --prefix <some_prefix>
Ad esempio, se si desidera eliminare oggetti che corrispondono al prefisso "rick", utilizzare il seguente 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"
]
}
Elimina gli oggetti in blocco in base al pattern (inclusione)
È possibile specificare l'eliminazione solo degli oggetti che corrispondono a un pattern particolare aggiungendo l'opzione --include
. Il comando seguente elimina tutti gli oggetti che corrispondono al pattern <some_pattern>
.
oci os object bulk-delete -bn <bucket_name> --include <some_pattern>
Ad esempio, se si desidera eliminare solo gli oggetti di tipo file JSON, utilizzare il seguente 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"
]
}
Elimina gli oggetti in blocco in base al pattern inverso (esclusione)
È possibile specificare l'eliminazione solo degli oggetti che non corrispondono a un determinato pattern aggiungendo l'opzione --exclude
. Il comando seguente elimina tutti gli oggetti ad eccezione di quelli che corrispondono al pattern <some_pattern>
.
oci os object bulk-delete -bn <bucket_name> --exclude <some_pattern>
Ad esempio, se si desidera eliminare tutti gli oggetti ad eccezione di quelli che sono di tipo file JSON, utilizzare il seguente 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"
]
}
Metodo 2: Eliminare gli oggetti in blocco/batch tramite OLM
Oltre all'interfaccia CLI OCI, è anche possibile utilizzare OLM - Object Lifecycle Management - funzione per l'eliminazione in blocco di oggetti. La funzione OLM consente di creare regole del ciclo di vita che specificano l'azione da eseguire se viene soddisfatta una determinata condizione. Ad esempio, è possibile specificare oggetti che risalgono a più di 30 giorni prima dell'eliminazione.
Creare una regola del ciclo di vita dell'eliminazione di massa nella console/CLI OCI
È possibile creare regole del ciclo di vita tramite la console OCI. A tale scopo, fare clic in un bucket e nella scheda Regole dei criteri del ciclo di vita sul lato. Viene quindi visualizzata una finestra di dialogo che consente all'utente di configurare la regola.
Inoltre, è possibile creare regole del ciclo di vita tramite l'interfaccia CLI OCI. Il comando riportato di seguito mostra un esempio di creazione di una regola del ciclo di vita mediante l'interfaccia CLI OCI. La regola elimina tutti gli oggetti che risalgono a più di 10 giorni.
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"
}
]'
Crea una regola del ciclo di vita dell'eliminazione di massa in base al prefisso
Nella console OCI è possibile specificare i filtri Nome oggetto per gli oggetti che verranno eliminati in base a una determinata condizione. Può gestire la corrispondenza dei prefissi dei nomi oggetto. Lo screenshot riportato di seguito mostra una regola del ciclo di vita che eliminerà tutti gli oggetti con il prefisso test/
.
Analogamente alla console, l'interfaccia CLI OCI può anche specificare quali oggetti eliminare tramite la corrispondenza dei prefissi.
oci os object-lifecycle-policy put --bucket-name <test_bucket> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [],
"inclusionPrefixes": [
<some_prefix>
]
},
...
}
]'
Ad esempio, il comando CLI OCI riportato di seguito crea/aggiorna una regola del ciclo di vita che eliminerà tutti gli oggetti con il prefisso test/
. Tenere presente che l'argomento dell'opzione –-items
deve essere una lista JSON valida.
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"
}
]'
Crea una regola del ciclo di vita dell'eliminazione di massa per corrispondenza pattern (inclusioni)
Nella console OCI è possibile specificare i filtri dei nomi oggetto per eliminare gli oggetti in base alla corrispondenza di pattern (inclusioni). Lo screenshot riportato di seguito mostra una regola del ciclo di vita che eliminerà tutti i tipi di file .doc
.
È anche possibile eseguire l'eliminazione dei soli file che corrispondono a un pattern specifico dall'interfaccia CLI OCI.
oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [],
"inclusionPatterns": [
<some_pattern>
],
"inclusionPrefixes": []
},
...
}
]'
Ad esempio, il comando CLI OCI riportato di seguito crea/aggiorna una regola del ciclo di vita che eliminerà tutti i tipi di file .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"
}
]'
Crea una regola del ciclo di vita dell'eliminazione di massa per corrispondenza pattern inverso (esclusioni)
Nella console OCI è possibile specificare i filtri dei nomi oggetto per eliminare gli oggetti in base alla corrispondenza pattern inverso (esclusione), ovvero eliminare tutti gli oggetti, ad eccezione di quelli che corrispondono al pattern. Lo screenshot riportato di seguito mostra una regola del ciclo di vita che eliminerà tutti gli elementi tranne i tipi di file .txt
.
È anche possibile eliminare tutti i file tranne quelli che corrispondono a un pattern particolare dall'interfaccia CLI OCI.
oci os object-lifecycle-policy put --bucket-name <bucket_name> --items '[
{
...
"objectNameFilter": {
"exclusionPatterns": [
<some_pattern>
],
"inclusionPatterns": [],
"inclusionPrefixes": []
},
...
}
]'
Ad esempio, il comando CLI OCI riportato di seguito crea/aggiorna una regola del ciclo di vita che eliminerà ogni oggetto ad eccezione dei tipi di file .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"
}
]'
Collegamenti correlati
Riconoscimenti
- Autore: Raymond Lin (ingegnere software)
Altre risorse di apprendimento
Esplora altri laboratori all'indirizzo docs.oracle.com/learn o accedi ad altri contenuti per la formazione gratuita sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione sul prodotto, visitare Oracle Help Center.
Delete objects in bulk/batch from Object Storage
F74479-01
November 2022
Copyright © 2022, Oracle and/or its affiliates.