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 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 la 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 corrispondere a tutte le condizioni specificate in una regola affinché venga eseguita l'azione nella regola.
Se specifichi più regole che contengono la stessa azione, l'azione viene intrapresa su un oggetto quando questo corrisponde alle condizioni di una qualsiasi delle regole.
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 azioneSetStorageClass
. - L'azione
SetStorageClass
che sposta l'oggetto nella classe di archiviazione con il prezzo di archiviazione a riposo più basso ha la precedenza.
Ad esempio, se hai una regola che modifica la classe dell'oggetto in Nearline Storage e un'altra regola che modifica la classe dell'oggetto in Coldline Storage, ma entrambe le regole utilizzano esattamente la stessa condizione, la classe dell'oggetto viene sempre modificata 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 base a insiemi di condizioni non previsti. Se non è possibile, devi eseguire il test su un piccolo sottoinsieme dei 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 Gestione del ciclo di vita degli oggetti potrebbe comunque eseguire azioni basate sulla vecchia configurazione durante questo periodo.
Ad esempio, se modifichi una condizione
age
da 10 giorni a 20 giorni, un oggetto di 11 giorni potrebbe essere eliminato da Gestione del ciclo di vita degli oggetti fino a 24 ore dopo, a causa dei criteri della vecchia configurazione.
Per i 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 questo soddisfa tutte le condizioni specificate nella regola del ciclo di vita. Per impostazione predefinita, quando elimini un oggetto attivo, questo viene eliminato temporaneamente e Cloud Storage lo conserva per un periodo di sette giorni. Puoi ripristinare questo oggetto eliminato temporaneamente
entro la durata della conservazione dell'eliminazione temporanea.
Eccezione: nei bucket con il controllo delle versioni degli oggetti abilitato, l'eliminazione della versione live di un oggetto lo rende una versione non corrente, mentre l'eliminazione di una versione non corrente elimina 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 è attivo un blocco oggetto o una policy di conservazione che non è ancora stata rispettata. 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 policy 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 di classe di archiviazione:
Classe di archiviazione originale | Nuova classe di archiviazione |
---|---|
Durable Reduced Availability (DRA) Storage | 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 una regione, la nuova classe di archiviazione non può essere Multi-Regional Storage. Per i bucket in una multiregione o in una regione doppia, la nuova classe di archiviazione non può essere Regional 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 di classe di archiviazione elencate.
Interrompere i caricamenti multiparte 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 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 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:
age
createdBefore
customTimeBefore
daysSinceCustomTime
daysSinceNoncurrentTime
isLive
matchesStorageClass
matchesPrefix
ematchesSuffix
noncurrentTimeBefore
numNewerVersions
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 la configurazione del ciclo di vita esistente rimane invariata.
age
La condizione age
viene soddisfatta quando una risorsa raggiunge l'età specificata (in giorni). L'età viene misurata a partire dalla data 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 multiparte, l'ora di 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 viene soddisfatta per la risorsa a partire dal 20/01/2022 alle 10:00 UTC.
createdBefore
La condizione createdBefore
viene soddisfatta quando un oggetto viene creato prima di 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 set di metadati Custom-Time
.
daysSinceCustomTime
La condizione daysSinceCustomTime
viene soddisfatta quando è trascorso il numero specificato di giorni dalla data e dall'ora specificate nel campo dei 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
è 10 giorni, allora
la condizione è soddisfatta per l'oggetto a partire dalle ore 10:00 UTC del 26/05/2020.
daysSinceCustomTime
non è mai soddisfatto per un oggetto senza set di metadati Custom-Time
.
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 giorno 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 giorno 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 corrispondono 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 e in modo sensibile alle 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 Google Cloud console, 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
, ARCHIVE
,
MULTI_REGIONAL
, REGIONAL
e DURABLE_REDUCED_AVAILABILITY
.
In genere, se intendi utilizzare la condizione matchesStorageClass
sugli oggetti
Standard, devi includere anche quanto segue:
Se il bucket si trova in una regione, includi
REGIONAL
eDURABLE_REDUCED_AVAILABILITY
nella condizione.Se il bucket si trova in una multiregione o in una doppia regione, 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 in genere 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 è impostata utilizzando il formato di 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 attiva) 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 live dell'oggetto) e così via.
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, quindi 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 una condizione del ciclo di vita è soddisfatta.
Ad esempio, se un oggetto soddisfa le condizioni per l'eliminazione, potrebbe non essere eliminato immediatamente e lo vedrai finché l'azione del ciclo di vita non viene eseguita sull'oggetto.
Vengono comunque applicati addebiti mentre l'oggetto rimane nel suo stato originale, ad eccezione dei costi di archiviazione dei dati inattivi, che vengono azzerati 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
o una combinazione delle condizioniage
ematchesStorageClass
.La condizione
age
è soddisfatta per l'oggetto nelle regole con solo la condizione età. Entrambe le condizioniage
ematchesStorageClass
devono essere soddisfatte per l'oggetto se la regola di eliminazione le prevede entrambe.L'oggetto non ha blocchi.
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 live eliminato in base alle regole del ciclo di vita esisterà in uno stato non corrente per un determinato periodo di tempo. Se anche la versione non corrente dell'oggetto soddisfa le condizioni della regola di eliminazione, anche la versione non corrente dell'oggetto verrà eliminata dopo il periodo di tempo trascorso.
Ad esempio, supponiamo che esista una regola del ciclo di vita che elimina gli oggetti più vecchi di 180 giorni. Se un oggetto attivo ha 200 giorni, viene eliminato e diventa non corrente. L'oggetto non corrente è ancora più vecchio di 180 giorni, quindi anche l'oggetto non corrente viene eliminato dopo un po' di tempo.
SetStorageClass
considerazioni sui costi
Analogamente alla modifica manuale della classe di archiviazione di un oggetto, l'utilizzo di
SetStorageClass
viene conteggiato come operazione di classe A e viene fatturato 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. In questo modo, Gestione del ciclo di vita degli oggetti offre alcuni vantaggi
in termini di prezzi:
Non sono mai previsti costi di replica tra regioni, costi di recupero o costi di eliminazione anticipata associati alla modifica della classe di archiviazione.
Il tempo trascorso dell'oggetto impostato nella classe di archiviazione originale viene conteggiato ai fini di qualsiasi durata minima di archiviazione applicabile alla nuova classe di archiviazione.
Ad esempio, supponiamo che tu carichi un oggetto come archiviazione Nearline e 20 giorni dopo la configurazione del ciclo di vita modifichi la classe di archiviazione dell'oggetto in Coldline Storage. Questa modifica non comporta costi per il recupero o l'eliminazione anticipata. Se poi elimini l'oggetto 60 giorni dopo la modifica della classe di archiviazione, viene addebitato un costo di eliminazione anticipata di soli 10 giorni, poiché l'archiviazione Coldline ha una durata minima di archiviazione di 90 giorni e l'oggetto è esistito per un totale di 80 giorni.
Al contrario, supponiamo che tu carichi un oggetto come Nearline Storage e 20 giorni dopo modifiche la classe di archiviazione utilizzando una riscrittura (di nuovo in Coldline Storage). Questa modifica comporta sia una tariffa di recupero sia un addebito per l'eliminazione anticipata di 10 giorni. Se poi elimini l'oggetto 60 giorni dopo la riscrittura, viene addebitato un costo per l'eliminazione anticipata di 30 giorni.
In entrambi questi esempi, se l'eliminazione temporanea è abilitata nel bucket, i costi di archiviazione aumentano, ma i costi di eliminazione anticipata si riducono in base alla durata del periodo di conservazione dell'eliminazione temporanea.
Ora di creazione dell'oggetto
In molti casi, il caricamento di un oggetto viene completato poco dopo l'inizio. Tuttavia, per i caricamenti che avvengono in più richieste, come i caricamenti ripristinabili, possono passare 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
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, ilCustom-Time
potrebbe essere molto precedente all'ora di creazione dell'oggetto. Ciò influisce sulle condizioni del ciclo di vita dicustomTimeBefore
edaysSinceCustomTime
.
Metadati dell'ora di 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 al tempo di scadenza. L'ora di scadenza di un oggetto indica il momento in cui l'oggetto diventa (o è diventato) idoneo all'eliminazione da parte di Gestione del ciclo di vita degli oggetti. Il tempo di scadenza potrebbe cambiare in base alla configurazione del ciclo di vita del bucket o alla normativa di conservazione.
Tieni presente che l'assenza di metadati relativi al tempo 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
è 2020/01/10 10:00 UTC e la condizione age
è impostata
su 10 giorni, l'ora di scadenza dell'oggetto è 2020/01/20 10:00 UTC. Tuttavia,
il tempo di scadenza non è disponibile per l'oggetto se:
Esistono altre condizioni specificate nella regola
Delete
, ad eccezione dimatchesStorageClass
.Utilizzi una condizione
matchesStorageClass
che non include la classe di archiviazione dell'oggetto.L'oggetto è soggetto a una conservazione, perché Cloud Storage non può sapere quando verrà rimossa.
L'eliminazione temporanea è abilitata nel bucket.
Non ti viene addebitato alcun costo per l'archiviazione dopo l'ora di 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 il tempo di scadenza non è disponibile per un oggetto, lo spazio di archiviazione viene addebitato fino al momento dell'eliminazione dell'oggetto.
Quando lavori con i tempi di scadenza, tieni presente quanto segue:
Se il bucket ha un criterio di conservazione, l'ora di scadenza è la successiva tra la condizione
age
di Gestione del ciclo di vita degli oggetti e il momento in cui l'oggetto soddisfa il periodo di conservazione specificato dal criterio 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 meno imminente.
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:
- Utilizza i log di utilizzo di Cloud Storage. Questa funzionalità registra sia l'azione sia chi l'ha eseguita. Un valore di
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. 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.