Gestione del ciclo di vita degli oggetti

Configurazione 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 facilitare la gestione dei costi, Cloud Storage offre la funzionalità Gestione del ciclo di vita degli oggetti.

In questa pagina vengono descritte 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 delle risorse dei 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 nel 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:

  • Esegui il downgrade a Coldline Storage della classe di archiviazione degli oggetti più vecchi di 365 giorni.
  • Eliminare gli oggetti creati prima del 1° gennaio 2019.
  • Conserva 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 della gestione del ciclo di vita contiene un insieme di regole. Ogni regola contiene un'azione e una o più conditions.

  • Affinché l'azione nella regola venga 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 soddisfa le condizioni di una qualsiasi regola.

  • Se le condizioni di più regole vengono soddisfatte contemporaneamente per un singolo oggetto, Cloud Storage esegue l'azione associata a una sola delle regole, in base alle seguenti considerazioni:

    • L'azione Delete ha la precedenza su qualsiasi azione SetStorageClass.
    • L'azione SetStorageClass che passa alla classe di archiviazione dell'oggetto con il prezzo di archiviazione at-rest più basso ha la precedenza.

    Ad esempio, se hai una regola che cambia la classe dell'oggetto in Nearline Storage e un'altra che modifica la classe dell'oggetto in Coldline Storage, ma entrambe le regole usano la stessa condizione, la classe dell'oggetto diventa sempre Coldline Storage quando la condizione viene soddisfatta.

  • Ti consigliamo di testare le regole del ciclo di vita sui dati di sviluppo prima di applicarle alla produzione per assicurarti che non comportino azioni in insiemi di condizioni non intenzionali. Se ciò non è possibile, dovresti eseguire il test su un piccolo sottoinsieme dei tuoi dati di produzione utilizzando le condizioni matchesPrefix o matchesSuffix nelle tue regole.

  • L'applicazione delle modifiche alla configurazione del ciclo di vita di un bucket può richiedere fino a 24 ore e in questo periodo Gestione del ciclo di vita degli oggetti potrebbe comunque eseguire azioni basate sulla configurazione precedente.

    Ad esempio, se modifichi una condizione age da 10 a 20 giorni, un oggetto risalente a 11 giorni prima potrebbe essere eliminato da Gestione del ciclo di vita degli oggetti fino a 24 ore dopo, a causa dei criteri della vecchia configurazione.

Per casi d'uso, vedi 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. Per impostazione predefinita, quando elimini un oggetto attivo, questo diventa eliminato temporaneamente e Cloud Storage lo conserva per una durata di sette giorni. Puoi ripristinare l'oggetto eliminato temporaneamente entro la durata di conservazione dell'eliminazione temporanea.

Eccezione: nei bucket in cui è abilitato il controllo delle versioni degli oggetti, l'eliminazione della versione live di un oggetto fa sì che diventi una versione non corrente, mentre l'eliminazione di una versione non corrente ne comporta l'eliminazione 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 se è presente un blocco dell'oggetto o un criterio di conservazione che non ha ancora soddisfatto. Se le condizioni nell'azione Delete rimangono soddisfatte per l'oggetto, l'azione Delete si verifica dopo la rimozione di qualsiasi blocco dell'oggetto e l' adempimento di tutti i criteri di conservazione.

SetStorageClass

L'azione SetStorageClass modifica la classe di archiviazione di un oggetto e aggiorna la data di modifica dell'oggetto quando quest'ultimo soddisfa tutte le condizioni specificate nella regola del ciclo di vita.

SetStorageClass supporta le seguenti transizioni delle classi di archiviazione:

Classe di archiviazione originale Nuova classe di archiviazione
Spazio di archiviazione DRA (Durabile Riduzione della Disponibilità) Nearline Storage
Coldline Storage
Archive Storage
Multi-Regional Storage/Regional Storage1
Standard Storage, Multi-Regional Storage o Regional Storage Nearline Storage
Coldline Storage
Archive Storage
Nearline Storage Coldline Storage
Archive Storage
Coldline Storage Archive Storage

1 Per i bucket in un'area geografica, la nuova classe di archiviazione non può essere Multi-Regional Storage. Per i bucket in una multiregione o regione doppia, la nuova classe di archiviazione non può essere Regional Storage.

Cloud Storage non convalida la correttezza della transizione delle classi di archiviazione. Ciò significa che puoi specificare una transizione della classe di archiviazione non elencata nella tabella precedente, ma la transizione non verrà effettuata. Devi verificare che le regole del ciclo di vita utilizzino una delle transizioni delle classi di archiviazione elencate.

Interrompi caricamenti multiparte incompleti

L'azione AbortIncompleteMultipartUpload interrompe un caricamento con più parti incompleto ed elimina le parti associate quando il caricamento con più parti soddisfa le condizioni specificate nella regola del ciclo di vita.

Con questa azione possono essere utilizzate 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 le condizioni che un oggetto deve soddisfare prima che si verifichi l'azione definita nella regola sull'oggetto. Le regole del ciclo di vita supportano le seguenti condizioni:

Tutte le condizioni sono facoltative, ma è richiesta 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, ricevi una risposta di errore 400 Bad request e l'eventuale configurazione del ciclo di vita esistente rimane attiva.

age

La condizione age è soddisfatta quando una risorsa raggiunge la durata specificata (in giorni). L'età viene misurata a partire dal momento della 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 è interessata se l'oggetto diventa una versione non corrente.
  • Per i caricamenti multiparte, l'ora di creazione corrisponde all'ora in cui inizia il caricamento.

Ad esempio, se una risorsa viene creata il 10/01/2022 alle 10:00 UTC e la condizione age è 10 giorni, la condizione sarà soddisfatta per la risorsa a partire dal 20/01/2022 alle 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 è soddisfatta quando la parte della data dei metadati Custom-Time di un oggetto è precedente alla data specificata in questa condizione. Questa condizione viene impostata utilizzando il formato di data YYYY-MM-DD. customTimeBefore non viene 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 specificate 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 viene soddisfatta per l'oggetto a partire dalle 10:00 UTC del 26/05/2020.

daysSinceCustomTime non viene mai soddisfatto per un oggetto senza metadati Custom-Time impostati.

daysSinceNoncurrentTime

La condizione daysSinceNoncurrentTime in genere viene utilizzata solo in combinazione con il controllo delle versioni degli oggetti. La condizione è soddisfatta quando è trascorso 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 aggiornato alle 15:00 UTC del 08/07/2020 e la condizione daysSinceNoncurrentTime è 10 giorni, la condizione dell'oggetto viene soddisfatta a partire dalle 15:00 UTC del 18/07/2020.

isLive

La condizione isLive in genere viene 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 sono soddisfatte quando l'inizio o la fine del nome dell'oggetto è una corrispondenza esatta, sensibile alle maiuscole e con il prefisso o il suffisso specificato. Puoi specificare più stringhe come elenco (ad esempio, "matchesSuffix": [".jpg", ".png"]).

Quando utilizzi matchesPrefix, non includere il nome del bucket o l'elemento / che precede i nomi degli oggetti nella maggior parte dei percorsi di richiesta. 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 una corrispondenza con l'oggetto, devi utilizzare una condizione come "matchesPrefix":["pictures/paris_"].

Puoi specificare fino a 50 prefissi e 50 suffissi 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 genere, se intendi utilizzare la condizione matchesStorageClass per gli oggetti Standard Storage, devi includere anche quanto segue:

  • Se il bucket si trova in una regione, includi REGIONAL e DURABLE_REDUCED_AVAILABILITY nella condizione.

  • Se il bucket si trova in una località a più regioni o a due regioni, includi MULTI_REGIONAL e DURABLE_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 in genere viene 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 di data YYYY-MM-DD. noncurrentTimeBefore non è mai soddisfatto per un oggetto attivo.

numNewerVersions

La condizione numNewerVersions in genere viene 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 esistono almeno N versioni (inclusa la versione live) più recenti. Per una versione dell'oggetto live, il numero di versioni più recenti è considerato 0. Per la versione non corrente più recente, il numero delle versioni più recenti è 1 (o 0 se non è presente una versione dell'oggetto attiva) e così via.

Comportamento del ciclo di vita degli oggetti

Cloud Storage ispeziona regolarmente tutti gli oggetti in un bucket per il quale è 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ò intercorrere un certo periodo di tempo tra il momento in cui le condizioni sono soddisfatte e il momento in cui viene eseguita l'azione. Le applicazioni non devono fare affidamento su azioni del ciclo di vita che si verificano entro un certo periodo di tempo dopo il raggiungimento di una condizione del ciclo di vita.

Ad esempio, se un oggetto soddisfa le condizioni per l'eliminazione, potrebbe non essere eliminato immediatamente e l'oggetto potrebbe essere visualizzato finché non viene eseguita l'azione del ciclo di vita sull'oggetto. Nei bucket in cui è abilitato il controllo delle versioni degli oggetti, ciò significa che un oggetto attivo esisterà in uno stato non corrente per un certo periodo di tempo, anche se la versione non corrente dell'oggetto soddisfa le condizioni della regola di eliminazione.

Gli addebiti applicabili continuano a essere applicati finché l'oggetto rimane nello stato originale, con una sola eccezione: i costi dell'archiviazione at-rest vengono esclusi se l'oggetto soddisfa tutti i seguenti criteri:

  • L'oggetto si trova in un bucket con l'eliminazione temporanea disabilitata
  • L'oggetto è soggetto a una regola con un'azione Delete
  • L'unica condizione per la regola è una condizione age
  • 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 conta come un'operazione di classe A e viene fatturata in base 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 alcuni vantaggi in termini di prezzo della Gestione del ciclo di vita degli oggetti:

Ad esempio, supponiamo che tu carichi un oggetto come Nearline Storage e che 20 giorni dopo la configurazione del ciclo di vita modifichi la classe di archiviazione dell'oggetto in Coldline Storage. Questa modifica non comporta costi di recupero o eliminazione anticipata. Se elimini l'oggetto 60 giorni dopo la modifica della classe di archiviazione, viene applicato solo un addebito per l'eliminazione anticipata di 10 giorni, poiché Coldline Storage ha una durata minima di archiviazione di 90 giorni e l'oggetto è rimasto per un totale di 80 giorni.

In confronto, supponiamo che tu carichi un oggetto come Nearline Storage e che 20 giorni dopo modifichi la classe di archiviazione utilizzando una riscrittura (di nuovo a Coldline Storage). Questa modifica comporta sia una tariffa per il recupero sia un addebito per l'eliminazione anticipata di 10 giorni. Se elimini l'oggetto 60 giorni dopo la riscrittura, ti verrà addebitato un costo di eliminazione anticipata di 30 giorni.

In entrambi gli esempi, se nel bucket è abilitata l'eliminazione temporanea, i costi di archiviazione aumentano, ma quelli per l'eliminazione anticipata si riducono in base alla durata del periodo di conservazione dell'eliminazione temporanea.

Data/ora creazione oggetto

In molti casi, il caricamento di un oggetto viene completato subito dopo l'inizio. Tuttavia, per i caricamenti che avvengono su più richieste, ad esempio 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 suo caricamento.
  • L'ora di creazione di un oggetto si basa sul momento in cui viene completato il caricamento. Questo influisce sulle condizioni del ciclo di vita age e createdBefore.
  • Quando imposti un Custom-Time per l'oggetto, puoi farlo all'inizio del caricamento. Se imposti Custom-Time in base all'ora della richiesta, Custom-Time potrebbe essere molto precedente alla data di creazione dell'oggetto. Questo ha impatto sulle condizioni del ciclo di vita customTimeBefore e daysSinceCustomTime.

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 taggati con metadati relativi all'ora di scadenza. La 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 a causa della modifica della configurazione del ciclo di vita del bucket o del criterio di conservazione.

Tieni presente che l'assenza dei 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 è 10/01/2020 alle 10:00 UTC e la condizione age è impostata su 10 giorni, la scadenza dell'oggetto sarà 20/01/2020 alle 10:00 UTC. Tuttavia, la data di scadenza non è disponibile per l'oggetto se:

  • Esistono altre condizioni specificate nella regola Delete, ad eccezione di matchesStorageClass.

  • Utilizzi una condizione matchesStorageClass che non include la classe di archiviazione dell'oggetto.

  • L'oggetto è sottoposto a un blocco, perché Cloud Storage non può sapere quando verrà rimosso.

  • L'eliminazione temporanea è abilitata sul tuo bucket.

Non viene addebitato alcun costo per l'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 della rete). Se la scadenza non è disponibile, l'oggetto viene addebitato per l'archiviazione fino al momento in cui viene eliminato.

Quando lavori con le scadenze, tieni presente quanto segue:

  • Se il bucket ha un criterio di conservazione, la scadenza corrisponde a quella successiva alla condizione age di Gestione del ciclo di vita degli oggetti e al momento 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 scadenza applicabile.

Opzioni per il monitoraggio delle azioni del ciclo di vita

Per monitorare le azioni di gestione del ciclo di vita intraprese da Cloud Storage, utilizza una delle seguenti opzioni:

  • Utilizza i log di utilizzo di Cloud Storage. Questa funzionalità registra sia l'azione sia chi l'ha eseguita. Un valore GCS Lifecycle Management nel campo cs_user_agent della voce di log indica che l'azione è stata eseguita da Cloud Storage in base a una configurazione del ciclo di vita.
  • Abilita Notifiche Pub/Sub per Cloud Storage per il tuo bucket. Questa funzionalità invia notifiche a un argomento Pub/Sub di tua scelta quando si verificano azioni specificate. Tieni presente che questa funzionalità non registra chi ha eseguito le azioni.

Passaggi successivi