Per supportare casi d'uso comuni come impostare una durata (TTL) degli oggetti, conservare versioni non aggiornate degli oggetti o eseguire il "downgrade" delle classi di archiviazione degli oggetti per agevolare la gestione dei costi, Cloud Storage offre la funzionalità di gestione del ciclo di vita degli oggetti.
In questa pagina vengono descritte la funzionalità e le opzioni disponibili quando viene utilizzata. Per il formato generale di un file di configurazione del ciclo di vita, consulta la rappresentazione delle risorse del bucket per JSON o il formato della configurazione del ciclo di vita per XML.
Introduzione
Per utilizzare Gestione del ciclo di vita degli oggetti, devi definire una configurazione del ciclo di vita, che deve essere impostata su un bucket. La configurazione contiene un insieme di regole che si applicano agli oggetti attuali e futuri del bucket. Quando un oggetto soddisfa i criteri di una delle regole, Cloud Storage esegue automaticamente un'azione specificata sull'oggetto. Ecco alcuni casi d'uso di esempio:
- Eseguire il downgrade ad Cloud Storage della classe di archiviazione degli oggetti più vecchi di 365 giorni.
- Eliminare gli oggetti creati prima del 1° gennaio 2019.
- Conservare solo le 3 versioni più recenti di ciascun oggetto in un bucket con il controllo delle versioni abilitato.
Configurazione del ciclo di vita
Ogni configurazione di gestione del ciclo di vita contiene un insieme di regole. Ogni regola contiene un'azione e una o più condizioni.
Perché l'azione nella regola sia eseguita, un oggetto deve soddisfare tutte le condizioni specificate in una regola.
Se specifichi più regole che contengono la stessa azione, l'azione viene eseguita su un oggetto quando quest'ultimo corrisponde alle condizioni specificate in qualsiasi regola.
Se le condizioni di più regole vengono soddisfatte contemporaneamente per un singolo oggetto, Cloud Storage esegue l'azione associata a una sola regola, in base alle seguenti considerazioni:
- L'azione
Delete
ha la precedenza su qualsiasi azioneSetStorageClass
. - L'azione
SetStorageClass
che trasferisce l'oggetto nella classe di archiviazione con il prezzo dello spazio di archiviazione at-rest più basso.
Ad esempio, se hai una regola che modifica la classe dell'oggetto in archiviazione Nearline e un'altra regola che modifica la classe dell'oggetto in archiviazione Coldline, ma entrambe le regole utilizzano la stessa condizione, la classe dell'oggetto diventa sempre Coldline Storage quando la condizione è soddisfatta.
- L'azione
Ti consigliamo di testare le regole del ciclo di vita sui dati di sviluppo prima di applicarle alla produzione, per assicurarti che non vengano eseguite azioni in insiemi di condizioni non previsti. Se non è possibile, ti consigliamo di eseguire il test su un piccolo sottoinsieme di dati di produzione utilizzando le condizioni
matchesPrefix
omatchesSuffix
nelle regole.L'applicazione delle modifiche alla configurazione del ciclo di vita di un bucket può richiedere fino a 24 ore e durante questo periodo la gestione del ciclo di vita degli oggetti potrebbe comunque eseguire azioni basate sulla vecchia configurazione.
Ad esempio, se modifichi una condizione
age
da 10 a 20 giorni, un oggetto di 11 giorni potrebbe essere eliminato dalla Gestione del ciclo di vita degli oggetti fino a 24 ore dopo, a causa dei criteri della configurazione precedente.
Per i casi d'uso, consulta Esempi di configurazione per la gestione del ciclo di vita degli oggetti.
Azioni del ciclo di vita
Una regola del ciclo di vita specifica esattamente una delle seguenti azioni:
Elimina
L'azione Delete
elimina un oggetto quando quest'ultimo soddisfa tutte le condizioni
specificate nella regola del ciclo di vita.
Eccezione: nei bucket in cui è abilitato il controllo delle versioni degli oggetti, l'eliminazione della versione live di un oggetto ne fa una versione non corrente, mentre l'eliminazione di una versione non corrente ne elimina definitivamente la versione. Consulta la configurazione per l'eliminazione di oggetti per un esempio di come utilizzare l'azione Delete
insieme al controllo delle versioni degli oggetti.
L'azione Delete
non ha effetto su un oggetto a cui è applicato un blocco oggetti o a un criterio di conservazione non ancora completato. Se le condizioni dell'azione Delete
rimangono soddisfatte per l'oggetto, l'azione Delete
si verifica dopo la rimozione di qualsiasi blocco degli oggetti e quando qualsiasi criterio di conservazione viene soddisfatto.
SetStorageClass
L'azione SetStorageClass
modifica la classe di archiviazione di un oggetto e aggiorna il tempo di modifica di quest'ultimo quando l'oggetto soddisfa tutte le condizioni
specificate nella regola del ciclo di vita.
SetStorageClass
supporta le seguenti transizioni di classi di archiviazione:
Classe di archiviazione originale | Nuova classe di archiviazione |
---|---|
Spazio di archiviazione a riduzione della disponibilità (DRA) durevole | Storage Nearline Spazio di archiviazione Coldline Archiviazione Più spazio di archiviazione a livello di regione/archiviazione a livello di regione1 |
Standard Storage, Multi-Regional Storage o Regional Storage | Nearline Storage Coldline Storage Archive Storage |
Nearline Storage | Archiviazione Coldline Archiviazione |
Coldline Storage | Archivia spazio di archiviazione |
1 Per i bucket in un'area geografica, la nuova classe di archiviazione non può essere Multi-Regional Storage. Per i bucket in una o in più regioni, la nuova classe di archiviazione non può essere Cloud Storage.
Cloud Storage non convalida la correttezza della transizione della classe di archiviazione. Ciò significa che puoi specificare una transizione della classe di archiviazione non elencata nella tabella precedente, ma non verrà eseguita. Devi verificare che le regole del ciclo di vita utilizzino una delle transizioni della classe di archiviazione elencata.
Interrompi i caricamenti a più parti incompleti
L'azione AbortIncompleteMultipartUpload
interrompe un caricamento a più parti incompleto ed elimina le parti associate quando il caricamento a più parti soddisfa le condizioni specificate nella regola del ciclo di vita.
Con questa azione è possibile usare solo le seguenti condizioni del ciclo di vita:
Il tentativo di creare una regola che utilizza l'azione AbortIncompleteMultipartUpload
in combinazione con altre condizioni genera un errore.
Condizioni del ciclo di vita
Una regola del ciclo di vita include condizioni che un oggetto deve soddisfare prima che l'azione definita nella regola si verifichi sull'oggetto. Le regole del ciclo di vita supportano le seguenti condizioni:
age
createdBefore
customTimeBefore
daysSinceCustomTime
daysSinceNoncurrentTime
isLive
matchesStorageClass
matchesPrefix
ematchesSuffix
noncurrentTimeBefore
numNewerVersions
Tutte le condizioni sono facoltative, ma è obbligatoria almeno una condizione. Se tenti di impostare una configurazione del ciclo di vita non valida, ad esempio utilizzando un'azione o una condizione che non esiste, riceverai una risposta di errore 400 Bad request
e la configurazione esistente rimarrà invariata.
age
La condizione age
è soddisfatta quando una risorsa raggiunge l'età specificata (in giorni). L'età viene misurata in base all'ora di creazione della risorsa.
Per gli oggetti, il tempo di creazione è il momento in cui l'oggetto viene scritto correttamente nel bucket, ad esempio quando un caricamento è stato completato.
- L'età di un oggetto non è influenzata dal fatto che l'oggetto diventi una versione non corrente.
Per i caricamenti con più parti, il momento della creazione è l'ora in cui viene avviato il caricamento.
Ad esempio, se una risorsa viene creata il 10/01/2022 alle 10:00 (UTC) e la condizione age
è di 10 giorni, la condizione è soddisfatta per la risorsa entro e non oltre le 10:00 UTC del 2022/01.
createdBefore
La condizione createdBefore
è soddisfatta quando un oggetto viene creato prima di mezzanotte della data specificata in UTC.
customTimeBefore
La condizione customTimeBefore
viene soddisfatta quando la porzione di data dei Custom-Time
metadati di un oggetto è precedente alla data specificata in questa condizione. Questa condizione è impostata utilizzando il formato data YYYY-MM-DD
.
customTimeBefore
non è mai soddisfatto per un oggetto senza metadati Custom-Time
impostati.
daysSinceCustomTime
La condizione daysSinceCustomTime
viene soddisfatta quando il numero di giorni specificato è trascorso dalla data e dall'ora specificate nel campo di metadati Custom-Time
di un oggetto. Ad esempio, se il valore di Custom-Time
di un oggetto è 2020-05-16T10:00:00Z
e la condizione daysSinceCustomTime
è di 10 giorni, la condizione viene soddisfatta per l'oggetto il giorno 26/05/2020 alle ore 10:00 UTC.
daysSinceCustomTime
non è mai soddisfatto per un oggetto senza metadati Custom-Time
impostati.
daysSinceNoncurrentTime
La condizione daysSinceNoncurrentTime
viene generalmente utilizzata solo in combinazione con il controllo delle versioni degli oggetti. La condizione è soddisfatta quando il numero specificato di giorni è trascorso da quando l'oggetto è diventato non aggiornato, perché la versione pubblicata è stata eliminata o sostituita. Ad esempio, se un oggetto è diventato non aggiornato alle 15:00 UTC del 2020/07 e la condizione di daysSinceNoncurrentTime
è di 10 giorni, la condizione è soddisfatta per l'oggetto il giorno 18/07/2020 alle 15:00 UTC.
isLive
La condizione isLive
viene in genere utilizzata solo in combinazione con il controllo delle versioni degli oggetti. Se è impostata su false
, questa condizione è soddisfatta per qualsiasi versione non corrente di un oggetto. Se è impostata su true
, questa condizione è soddisfatta per la versione live di un oggetto. Se non utilizzi il controllo delle versioni, tutti gli oggetti sono considerati attivi e corrispondono quando isLive
è true
.
matchesPrefix
e matchesSuffix
Le condizioni matchesPrefix
e matchesSuffix
vengono soddisfatte quando l'inizio o la fine del nome di un oggetto è una corrispondenza esatta sensibile alle maiuscole con il prefisso o il suffisso specificato. Puoi specificare più stringhe come elenco (ad esempio, "matchesSuffix": [".jpg", ".png"]
).
Quando utilizzi matchesPrefix
, non includere /
nell'antecedente ai nomi degli oggetti nella maggior parte dei percorsi di richiesta. Ad esempio, in Google Cloud CLI, il percorso di un oggetto in un bucket ha un formato simile a gs://my_bucket/pictures/paris_2022.jpg
. Per trovare una corrispondenza per l'oggetto, utilizza una condizione come "matchesPrefix":["pictures/paris_"]
.
Il prefisso o il suffisso specificato deve soddisfare i requisiti per la denominazione degli oggetti e avere un massimo di 1024 caratteri. Puoi specificare fino a 50 prefissi e 50 suffissi specificati in tutte le regole. Un prefisso o un suffisso non possono essere utilizzati due volte in una singola condizione.
matchesStorageClass
La condizione matchesStorageClass
è soddisfatta quando un oggetto nel bucket viene archiviato come classe di archiviazione specificata. Puoi utilizzare i seguenti valori per
matchesStorageClass
: STANDARD
, NEARLINE
, COLDLINE
, ARCHIVE
,
MULTI_REGIONAL
, REGIONAL
e DURABLE_REDUCED_AVAILABILITY
.
In generale, se intendi utilizzare la condizione matchesStorageClass
negli oggetti di archiviazione Standard, devi includere anche quanto segue:
Se il bucket si trova in un'area geografica, includi
REGIONAL
eDURABLE_REDUCED_AVAILABILITY
nella condizione.Se il bucket si trova in una o più regioni, includi
MULTI_REGIONAL
eDURABLE_REDUCED_AVAILABILITY
nella condizione.
L'inclusione di queste classi aggiuntive garantisce che la regola del ciclo di vita copra gli oggetti meno recenti nei bucket che potrebbero essere impostati su classi di archiviazione legacy.
noncurrentTimeBefore
La condizione noncurrentTimeBefore
viene generalmente utilizzata solo in combinazione con il controllo delle versioni degli oggetti. La condizione è soddisfatta per gli oggetti che sono diventati non correnti in una data precedente a quella specificata in questa condizione. La condizione viene impostata utilizzando il formato data YYYY-MM-DD
. noncurrentTimeBefore
non è mai soddisfatto per un oggetto attivo.
numNewerVersions
La condizione numNewerVersions
viene in genere utilizzata solo in combinazione con il controllo delle versioni degli oggetti. Se il valore di questa condizione è impostato su N, una versione dell'oggetto soddisfa la condizione quando sono presenti almeno N versioni (inclusa la versione live) più recenti. Per una versione live degli oggetti, il numero di versioni più recenti è pari a 0. Per la versione non attuale più recente, il numero di versioni più recenti è 1 (o 0 se non è disponibile una versione degli oggetti live) e così via.
Comportamento del ciclo di vita degli oggetti
Cloud Storage ispeziona regolarmente tutti gli oggetti del bucket in cui è configurata la gestione del ciclo di vita degli oggetti ed esegue tutte le azioni applicabili in base alle regole del bucket. Cloud Storage esegue un'azione in modo asincrono, quindi può verificarsi un ritardo tra il momento in cui le condizioni vengono soddisfatte e la data in cui viene eseguita l'azione. Le tue applicazioni non dovrebbero fare affidamento sulle azioni del ciclo di vita che si verificano entro un determinato periodo di tempo dopo che una condizione del ciclo di vita è soddisfatta.
Ad esempio, se un oggetto soddisfa le condizioni per l'eliminazione, l'oggetto potrebbe non essere eliminato immediatamente e visualizzato, fino a quando non viene eseguita l'azione del ciclo di vita sull'oggetto. Nei bucket in cui è abilitato il controllo delle versioni degli oggetti, significa che un oggetto attivo esisterà in uno stato non attuale per un determinato periodo di tempo, anche se la versione non corrente dell'oggetto soddisfa anche le condizioni della regola di eliminazione.
I costi applicabili continuano a essere applicati mentre l'oggetto rimane nello stato originale, con una eccezione: i costi di archiviazione at-rest non sono soggetti se l'oggetto è soggetto a una regola con un'azione Delete
, l'unica condizione per la regola è una condizione age
e che la condizione age
è soddisfatta per l'oggetto.
SetStorageClass
considerazioni sui costi
Analogamente alla modifica manuale della classe di archiviazione di un oggetto, l'utilizzo di SetStorageClass
viene conteggiato come un'operazione di classe A e viene fatturato alla tariffa determinata dalla classe di archiviazione di destinazione.
A differenza della modifica manuale della classe di archiviazione di un oggetto, l'utilizzo di SetStorageClass
non
riscrive un oggetto. Questo offre alla gestione del ciclo di vita degli oggetti alcuni vantaggi in termini di prezzo:
Non sono previste tariffe per il recupero o tariffe per l'eliminazione anticipata associate alla modifica della classe di archiviazione, anche se l'oggetto è originariamente impostato su Nearline Storage o Coldline Storage.
Il tempo trascorso dall'oggetto impostato nella classe di archiviazione originale viene conteggiato ai fini del calcolo della durata minima di archiviazione applicabile alla nuova classe di archiviazione.
Ad esempio, supponiamo che tu carichi un oggetto come archiviazione Nearline e che 20 giorni dopo la configurazione del tuo ciclo di vita cambi la classe di archiviazione dell'oggetto in Storage coldline. Questa modifica non comporta costi di recupero o eliminazione anticipata. Se poi elimini l'oggetto 60 giorni dopo la modifica della classe di archiviazione, è previsto solo un addebito per l'eliminazione anticipata di 10 giorni, poiché la durata minima di archiviazione di Coldline Storage è di 90 giorni e l'oggetto esisteva per 80 giorni in totale.
Invece, supponi di caricare un oggetto come Nearline Storage e, 20 giorni dopo, modificare la classe di archiviazione utilizzando una riscrittura (di nuovo per l'archiviazione Coldline). Questa modifica comporta sia una tariffa di recupero che un costo per l'eliminazione anticipata di 10 giorni. Se poi elimini l'oggetto 60 giorni dopo la riscrittura, è previsto un addebito di 30 giorni per l'eliminazione.
Ora di creazione dell'oggetto
In molti casi, il caricamento di un oggetto viene completato subito dopo l'inizio; tuttavia, per i caricamenti che si verificano su più richieste, come i caricamenti ripristinabili, possono trascorrere alcuni giorni dal momento in cui viene inviata la richiesta di caricamento iniziale e da quella di caricamento finale. In questi casi, devi tenere presente quanto segue:
- Un oggetto non è soggetto alle regole del ciclo di vita fino al suo completamento del caricamento.
- Il tempo di creazione di un oggetto si basa sul completamento del caricamento. Questa operazione influisce sulle condizioni del ciclo di vita di
age
ecreatedBefore
. - Quando imposti un
Custom-Time
per l'oggetto, lo fai all'inizio del caricamento. Se imposti unCustom-Time
in base all'ora della richiesta,Custom-Time
potrebbe essere molto precedente all'ora di creazione dell'oggetto. Questa operazione influisce sulle condizioni del ciclo di vita dicustomTimeBefore
edaysSinceCustomTime
.
Metadati relativi alla scadenza
Se viene specificata un'azione Delete
per un bucket con la condizione age
(e nessun'altra condizione oltre a matchesStorageClass
), alcuni oggetti potrebbero essere contrassegnati con metadati relativi alla data di scadenza. La scadenza di un oggetto indica il momento in cui l'oggetto diventa (o diventa) idoneo per l'eliminazione dalla Gestione del ciclo di vita degli oggetti. La data di scadenza potrebbe cambiare con l'evoluzione della configurazione
del ciclo di vita o del criterio di conservazione del bucket.
Tieni presente che l'assenza di metadati relativi alla data di scadenza non significa necessariamente che l'oggetto non verrà eliminato, ma che non sono disponibili informazioni sufficienti per determinare quando o se verrà eliminato. Ad esempio, se l'ora di creazione dell'oggetto è 2020/01/10 10:00 UTC e la condizione age
è impostata su
10 giorni, la scadenza dell'oggetto è 2020/01/20 10:00 UTC. Tuttavia, la scadenza non è disponibile per l'oggetto se:
Esistono altre condizioni specificate nella regola
Delete
, ad eccezione dimatchesStorageClass
.Utilizzerai una condizione
matchesStorageClass
che non include la classe di archiviazione dell'oggetto.L'oggetto è soggetto a un'archiviazione a fini legali perché Cloud Storage non può sapere quando l'archiviazione verrà rimossa.
Lo spazio di archiviazione non viene addebitato dopo la scadenza dell'oggetto, anche se non viene eliminato immediatamente. Puoi continuare ad accedere all'oggetto prima che venga eliminato e sia responsabile di altri addebiti (richiesta, larghezza di banda di rete). Se la scadenza non è disponibile per un oggetto, l'archiviazione viene addebitata all'oggetto fino alla sua eliminazione.
Quando lavori con scadenze, tieni presente quanto segue:
Se il bucket ha un criterio di conservazione, la scadenza corrisponde alla successiva data della condizione Gestione del ciclo di vita degli oggetti
age
e al tempo in cui l'oggetto soddisfa il periodo di conservazione specificato dal criterio di conservazione.Se esistono più tempi di scadenza in conflitto applicabili a un oggetto a causa di diverse regole di gestione del ciclo di vita, viene utilizzata la prima data di scadenza applicabile.
Opzioni per il monitoraggio delle azioni del ciclo di vita
Per tenere traccia delle azioni di gestione del ciclo di vita intraprese da Cloud Storage, utilizza una delle seguenti opzioni:
Utilizzare i log di utilizzo di Cloud Storage. Questa funzionalità registra l'azione e chi ha eseguito l'azione. Un valore
GCS Lifecycle Management
nel campocs_user_agent
della voce di log indica che l'azione è stata eseguita da Cloud Storage in conformità con una configurazione del ciclo di vita.Attiva Notifiche Pub/Sub per Cloud Storage per il tuo bucket. Questa funzionalità invia notifiche a un argomento Pub/Sub a tua scelta quando si verificano le azioni specificate. Ricorda che questa funzionalità non registra chi ha eseguito le azioni.
Passaggi successivi
- Abilita la gestione del ciclo di vita degli oggetti.
- Esplora gli esempi di configurazione del ciclo di vita.
- Esamina il formato generale di una configurazione del ciclo di vita nelle richieste dell'API JSON e nelle richieste API API.