Configurare la gestione del ciclo di vita degli oggetti Esempi di configurazione
Per supportare casi d'uso comuni come impostare una durata (TTL) per gli oggetti, conservare le versioni non correnti degli oggetti o eseguire il "downgrade" delle classi di archiviazione degli oggetti per agevolare il controllo dei costi, Cloud Storage offre la funzionalità Gestione del ciclo di vita degli oggetti.
Questa pagina descrive la funzionalità e le opzioni disponibili quando la utilizzi. Per il formato generale di un file di configurazione del ciclo di vita, consulta la rappresentazione della risorsa 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 a Coldline Storage della classe di archiviazione degli oggetti più vecchi di 365 giorni.
- Elimina 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 per la gestione del ciclo di vita contiene un insieme di regole. Ogni regola contiene un'azione e una o più condizioni.
Un oggetto deve soddisfare tutte le condizioni specificate in una regola affinché venga eseguita l'azione prevista dalla regola.
Se specifichi più regole che contengono la stessa azione, l'azione viene eseguita su un oggetto quando questo corrisponde alle condizioni di una qualsiasi delle regole.
Se più regole soddisfano contemporaneamente le condizioni per un singolo oggetto, Cloud Storage esegue l'azione associata a una sola delle regole, in base alle seguenti considerazioni:
- L'azione
Deleteha la precedenza su qualsiasi azioneSetStorageClass. - L'azione
SetStorageClassche cambia la classe di archiviazione dell'oggetto con quella che ha i prezzi di archiviazione at-rest più bassi ha la precedenza.
Ad esempio, se hai una regola che cambia la classe dell'oggetto in Nearline Storage e un'altra regola che cambia la classe dell'oggetto in Coldline Storage, ma entrambe le regole utilizzano esattamente la stessa condizione, la classe dell'oggetto cambia sempre in Coldline Storage quando la condizione è soddisfatta.
- L'azione
Devi testare le regole del ciclo di vita sui dati di sviluppo prima di applicarle alla produzione per assicurarti che non eseguano azioni in condizioni non previste. Se non è possibile, devi eseguire il test su un piccolo sottoinsieme dei dati di produzione utilizzando le condizioni
matchesPrefixomatchesSuffixnelle regole.L'applicazione delle modifiche alla configurazione del ciclo di vita di un bucket può richiedere fino a 24 ore e, durante questo periodo, Gestione del ciclo di vita degli oggetti potrebbe comunque eseguire azioni basate sulla vecchia configurazione.
Ad esempio, se modifichi una condizione
ageda 10 a 20 giorni, un oggetto di 11 giorni potrebbe essere eliminato da Gestione del ciclo di vita degli oggetti fino a 24 ore dopo, in base ai criteri della vecchia configurazione.
Per i casi d'uso, consulta Esempi di configurazione per 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 l'oggetto soddisfa tutte le condizioni specificate nella regola del ciclo di vita. Per impostazione predefinita, quando elimini un oggetto live, questo viene eliminato temporaneamente e Cloud Storage lo conserva per un periodo di sette giorni. Puoi ripristinare questo oggetto eliminato temporaneamente entro la durata di conservazione dell'eliminazione temporanea.
Eccezione: nei bucket con il controllo delle versioni degli oggetti abilitato, l'eliminazione della versione live di un oggetto ne comporta la trasformazione in una versione non corrente, mentre l'eliminazione di una versione non corrente comporta l'eliminazione di quella versione dal bucket. Consulta la
configurazione per l'eliminazione degli oggetti per un esempio di utilizzo dell'azione Delete
insieme al controllo delle versioni degli oggetti.
L'azione Delete non ha effetto su un oggetto mentre l'oggetto è soggetto a un blocco oggetto o a una policy di conservazione non ancora soddisfatta. Finché le condizioni dell'azione Delete rimangono soddisfatte per l'oggetto, l'azione Delete si verifica dopo la rimozione di qualsiasi blocco dell'oggetto e l'adempimento di qualsiasi criterio di conservazione.
SetStorageClass
L'azione SetStorageClass modifica la classe di archiviazione di un oggetto e
aggiorna l'ora di modifica dell'oggetto quando l'oggetto soddisfa tutte le
condizioni specificate nella regola del ciclo di vita.
SetStorageClass supporta le seguenti transizioni della classe di archiviazione:
| Classe di archiviazione originale | Nuova classe di archiviazione |
|---|---|
| Standard Storage | Nearline Storage Coldline Storage Archive Storage |
| Nearline Storage | Coldline Storage Archive Storage |
| Coldline Storage | Archive 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 la transizione non verrà eseguita. Devi verificare che le regole del ciclo di vita utilizzino una delle transizioni della classe di archiviazione elencate.
Interrompi i caricamenti multiparte incompleti
L'azione AbortIncompleteMultipartUpload interrompe un caricamento multiparte incompleto ed elimina le parti associate quando il caricamento multiparte soddisfa le condizioni specificate nella regola del ciclo di vita.
Con questa azione possono essere utilizzate solo le seguenti condizioni del ciclo di vita:
Se provi a creare una regola che utilizza l'azione AbortIncompleteMultipartUpload in combinazione con altre condizioni, si verifica un errore.
Condizioni del ciclo di vita
Una regola del ciclo di vita include le condizioni che un oggetto deve soddisfare prima che l'azione definita nella regola venga eseguita sull'oggetto. Le regole del ciclo di vita supportano le seguenti condizioni:
agecreatedBeforecustomTimeBeforedaysSinceCustomTimedaysSinceNoncurrentTimeisLivematchesStorageClassmatchesPrefixematchesSuffixnoncurrentTimeBeforenumNewerVersionssizeAboveBytesesizeBelowBytes
Tutte le condizioni sono facoltative, ma è necessaria almeno una condizione. Se tenti di impostare una configurazione del ciclo di vita non valida, ad esempio utilizzando un'azione o una condizione inesistente, ricevi una risposta di errore 400 Bad request e qualsiasi configurazione del ciclo di vita esistente rimane invariata.
age
La condizione age è soddisfatta quando una risorsa raggiunge l'età specificata (in giorni). L'età viene misurata a partire dalla data e ora di creazione della risorsa.
Per gli oggetti, l'ora di creazione è l'ora in cui l'oggetto viene scritto correttamente nel bucket, ad esempio al termine di un caricamento.
- L'età di un oggetto non è influenzata dal fatto che l'oggetto diventi una versione non corrente.
Per i caricamenti in più parti, l'ora di creazione è l'ora in cui viene avviato il caricamento.
Se la condizione
ageè impostata sul valore0, la condizione viene soddisfatta a mezzanotte UTC dopo la creazione dell'oggetto.
Ad esempio, se una risorsa viene creata il 10/01/2022 alle ore 10:00 UTC e la condizione age
è di 10 giorni, la condizione viene soddisfatta per la risorsa a partire dal 20/01/2022 alle ore 10:00 UTC.
createdBefore
La condizione createdBefore è soddisfatta quando un oggetto viene creato prima della mezzanotte della data specificata in UTC.
customTimeBefore
La condizione customTimeBefore viene soddisfatta quando la parte relativa alla data dei metadati Custom-Time di un oggetto è precedente alla data specificata in questa condizione. Questa condizione è impostata utilizzando il formato della data YYYY-MM-DD.
customTimeBefore non è mai soddisfatto per un oggetto senza metadati Custom-Time impostati.
daysSinceCustomTime
La condizione daysSinceCustomTime è soddisfatta quando è trascorso il numero di giorni specificato dalla data e dall'ora indicate nel campo dei metadati Custom-Time di un oggetto. Ad esempio, se il valore Custom-Time di un oggetto è 2020-05-16T10:00:00Z e la condizione daysSinceCustomTime è 10 giorni, la condizione è soddisfatta per l'oggetto a partire dal 26/05/2020 alle 10:00 UTC.
daysSinceCustomTime non è mai soddisfatto per un oggetto senza metadati Custom-Time impostati.
daysSinceNoncurrentTime
La condizione daysSinceNoncurrentTime viene in genere utilizzata solo in combinazione
con il controllo delle versioni degli oggetti. La condizione viene soddisfatta quando sono trascorsi il numero di giorni specificato da quando l'oggetto è diventato non corrente, perché la versione live è stata eliminata o sostituita. Ad esempio, se un oggetto è diventato
non corrente alle ore 15:00 UTC del 08/07/2020 e la condizione daysSinceNoncurrentTime
è di 10 giorni, la condizione viene soddisfatta per l'oggetto a partire dalle ore 15:00 UTC del 18/07/2020.
isLive
La condizione isLive viene in genere utilizzata solo in combinazione con il controllo delle versioni degli oggetti. Se impostata su false, questa condizione viene 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 i tuoi
oggetti vengono considerati live e corrispondenti quando isLive è true.
matchesPrefix e matchesSuffix
Le condizioni matchesPrefix e matchesSuffix sono soddisfatte quando l'inizio o la fine del nome di un oggetto corrisponde esattamente, con distinzione tra maiuscole e minuscole, al prefisso o al suffisso specificato. Puoi specificare più stringhe come elenco (ad esempio "matchesSuffix": [".jpg", ".png"]).
Quando utilizzi matchesPrefix, non includere il nome del bucket o / che precede i nomi degli oggetti nella maggior parte dei percorsi delle richieste. Ad esempio, in
Google Cloud CLI, il percorso di un oggetto in un bucket denominato my_bucket ha un
formato simile a gs://my_bucket/pictures/paris_2022.jpg. Per trovare la corrispondenza con l'oggetto,
utilizzeresti una condizione come "matchesPrefix":["pictures/paris_"].
Puoi specificare fino a 1000 prefissi e suffissi in totale in tutte le regole. Nella console Google Cloud puoi copiare e incollare fino a 1000 prefissi o suffissi in totale. Un prefisso o un suffisso non può essere utilizzato due volte in una singola condizione.
matchesStorageClass
La condizione matchesStorageClass viene soddisfatta quando un oggetto nel bucket viene
memorizzato come classe di archiviazione specificata. Puoi utilizzare i seguenti valori per
matchesStorageClass: STANDARD, NEARLINE, COLDLINE e ARCHIVE.
noncurrentTimeBefore
La condizione noncurrentTimeBefore viene in genere utilizzata solo in combinazione
con il controllo delle versioni degli oggetti. La condizione è soddisfatta per gli oggetti che sono diventati non attuali in una data precedente a quella specificata in questa condizione. La condizione viene impostata utilizzando il formato della data YYYY-MM-DD. noncurrentTimeBefore non è
mai soddisfatto per un oggetto live.
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 attiva dell'oggetto, il numero di versioni più recenti è considerato 0. Per la versione non corrente più recente, il numero di versioni più recenti è 1 (o 0 se non esiste una versione dell'oggetto pubblicata) e così via.
sizeAboveBytes e sizeBelowBytes
La condizione sizeAboveBytes è soddisfatta quando le dimensioni di un oggetto sono maggiori del valore specificato. Utilizza questa condizione per definire una soglia di dimensioni minime per
le azioni del ciclo di vita.
La condizione sizeBelowBytes è soddisfatta quando le dimensioni di un oggetto sono inferiori al valore specificato. Utilizza questa condizione per definire una soglia di dimensione massima per le azioni del ciclo di vita.
Per definire un intervallo di dimensioni degli oggetti, utilizza sia la condizione sizeAboveBytes sia la condizione sizeBelowBytes nella stessa regola.
Gestione del ciclo di vita degli oggetti valuta le dimensioni dei dati di un oggetto, in byte,
ed esclude le dimensioni dei metadati dell'oggetto. Il valore massimo per sizeAboveBytes o sizeBelowBytes è 5 TiB.
Comportamento del ciclo di vita degli oggetti
Quando la gestione del ciclo di vita degli oggetti è configurata per i bucket Cloud Storage, Cloud Storage ispeziona regolarmente tutti gli oggetti ed esegue tutte le azioni applicabili in base alle regole del bucket. Cloud Storage esegue un'azione in modo asincrono, pertanto può esserci un ritardo tra il momento in cui le condizioni sono soddisfatte e quello in cui viene eseguita l'azione. Le tue applicazioni non devono fare affidamento su azioni del ciclo di vita che si verificano entro un determinato periodo di tempo dopo che è stata soddisfatta una condizione del ciclo di vita.
Ad esempio, se un oggetto soddisfa le condizioni per l'eliminazione, potrebbe non essere eliminato immediatamente e lo vedrai finché non verrà eseguita l'azione del ciclo di vita sull'oggetto.
Comportamento del ciclo di vita degli oggetti sugli oggetti sottoposti al controllo delle versioni
Nei bucket in cui è abilitato il controllo delle versioni degli oggetti, un oggetto attivo eliminato in base alle regole del ciclo di vita esisterà in uno stato non corrente per un certo periodo di tempo. Se anche la versione non corrente dell'oggetto soddisfa le condizioni della regola di eliminazione, verrà eliminata anche la versione non corrente dell'oggetto una volta trascorso il tempo.
Ad esempio, supponiamo che esista una regola del ciclo di vita che elimina gli oggetti più vecchi di 180 giorni. Se un oggetto live ha 200 giorni, viene eliminato e diventa non corrente. L'oggetto, ora non corrente, ha ancora più di 180 giorni, quindi viene eliminato anche dopo un certo periodo di tempo.
Ora di creazione dell'oggetto
In molti casi, il caricamento di un oggetto viene completato subito dopo l'inizio. Tuttavia, per i caricamenti che avvengono su più richieste, come i caricamenti ripristinabili, possono trascorrere giorni tra l'invio della richiesta di caricamento iniziale e l'invio della richiesta di caricamento finale. In questi casi, tieni presente quanto segue:
- Un oggetto non è soggetto alle regole del ciclo di vita fino al completamento del caricamento.
- L'ora di creazione di un oggetto si basa sul completamento del caricamento. Ciò influisce
sulle condizioni del ciclo di vita di
ageecreatedBefore. - Quando imposti un
Custom-Timeper l'oggetto, lo fai all'inizio del caricamento. Se imposti unCustom-Timein base all'ora della richiesta, ilCustom-Timepotrebbe essere molto precedente all'ora di creazione dell'oggetto. Questo influisce sulle condizioni del ciclo di vita dicustomTimeBeforeedaysSinceCustomTime.
Metadati dell'ora di scadenza
Se per un bucket viene specificata un'azione Delete con la condizione age (e nessun'altra condizione oltre a matchesStorageClass), alcuni oggetti potrebbero essere taggati con i metadati della data di scadenza. La data di scadenza di un oggetto indica il momento in cui l'oggetto diventa (o è diventato) idoneo per l'eliminazione da parte di Gestione del ciclo di vita degli oggetti. La data di scadenza potrebbe cambiare in base alle modifiche alla configurazione del ciclo di vita o alla policy 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 piuttosto che non sono disponibili informazioni sufficienti per determinare quando o se verrà eliminato. Ad esempio, se l'ora di creazione dell'oggetto è il 10/01/2020 alle 10:00 UTC e la condizione age è impostata su 10 giorni, l'ora di scadenza dell'oggetto è il 20/01/2020 alle 10:00 UTC. Tuttavia,
il tempo di scadenza non è disponibile per l'oggetto se:
Nella regola
Deletesono specificate altre condizioni, ad eccezione dimatchesStorageClass.Utilizzi una condizione
matchesStorageClassche non include la classe di archiviazione dell'oggetto.L'oggetto è soggetto a un blocco, perché Cloud Storage non può sapere quando verrà rimosso.
L'eliminazione temporanea è abilitata nel bucket.
Non ti verrà addebitato alcun costo per lo spazio di archiviazione dopo la scadenza dell'oggetto, anche se l'oggetto non viene eliminato immediatamente. Puoi continuare ad accedere all'oggetto prima che venga eliminato e sei responsabile di altri addebiti (richiesta, larghezza di banda di rete). Se la data di scadenza non è disponibile per un oggetto, l'oggetto viene addebitato per l'archiviazione fino al momento dell'eliminazione.
Quando utilizzi le date di scadenza, tieni presente quanto segue:
Se il bucket ha una policy di conservazione, la data di scadenza è la più recente tra la condizione
agedi Gestione del ciclo di vita degli oggetti e la data in cui l'oggetto soddisfa il periodo di conservazione specificato dalla policy di conservazione.Se per un oggetto sono applicabili più tempi di scadenza in conflitto a causa di regole di gestione del ciclo di vita diverse, viene utilizzato il tempo di scadenza applicabile più breve.
Opzioni per il monitoraggio delle azioni del ciclo di vita
Per monitorare le azioni di gestione del ciclo di vita eseguite da Cloud Storage, utilizza una delle seguenti opzioni:
- Attiva le 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. Tieni presente che questa funzionalità non registra chi ha eseguito le azioni.
Passaggi successivi
- Attiva 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 API JSON e nelle richieste API XML.
- Automatizza le configurazioni delle policy del ciclo di vita con gli assistenti di assistenza al coding AI utilizzando la competenza di base di Cloud Storage.