Configurazione Esempi di configurazione
Per supportare casi d'uso comuni come l'impostazione di una durata (TTL) degli oggetti, il mantenimento di versioni non correnti degli oggetti o il "downgrade" delle classi di archiviazione degli oggetti per agevolare la gestione dei costi, Cloud Storage offre la funzionalità Gestione del ciclo di vita degli oggetti.
In questa pagina vengono descritte la funzione e le opzioni disponibili quando viene utilizzata. Per il formato generale di un file di configurazione del ciclo di vita, consulta la pagina relativa alla rappresentazione delle risorse dei bucket per JSON o al formato di 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 della classe di archiviazione degli oggetti più vecchi di 365 giorni a Coldline Storage.
- Elimina 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 di 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 delle regole.
Se più regole hanno le condizioni soddisfatte contemporaneamente per un singolo oggetto, Cloud Storage esegue l'azione associata a una sola regola, in base alle considerazioni seguenti:
- L'azione
Delete
ha la precedenza su qualsiasi azioneSetStorageClass
. - L'azione
SetStorageClass
che trasferisce l'oggetto alla classe di archiviazione con il prezzo di archiviazione at-rest 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 cambia la classe dell'oggetto in Coldline Storage, ma entrambe le regole utilizzano la stessa condizione, la classe dell'oggetto passa sempre in 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 le regole non eseguano azioni in insiemi di condizioni non intenzionali. Se non è possibile, devi 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 Gestione del ciclo di vita degli oggetti potrebbe eseguire azioni basate sulla vecchia configurazione.
Ad esempio, se modifichi una condizione
age
da 10 a 20 giorni, un oggetto che risale a 11 giorni fa potrebbe essere eliminato dalla Gestione del ciclo di vita degli oggetti fino a 24 ore dopo, a causa dei criteri della precedente 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 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 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 elimina la 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 se è applicato un
blocco dell'oggetto o un criterio di conservazione che non è ancora stato
soddisfatto. Se 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 la data e ora 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 |
---|---|
Archiviazione DRA (Duraable ReducedAvailability) | 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 più regioni o due regioni, 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 avverrà. Devi verificare che le regole del ciclo di vita utilizzino una delle transizioni delle classi 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 è possibile utilizzare solo le seguenti condizioni del ciclo di vita:
Se si cerca di creare una regola che utilizzi l'azione AbortIncompleteMultipartUpload
in combinazione con altre condizioni, viene restituito un errore.
Condizioni del ciclo di vita
Una regola del ciclo di vita include le condizioni che un oggetto deve soddisfare prima che venga eseguita l'azione definita nella regola. 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 qualsiasi configurazione del ciclo di vita esistente rimarrà attiva.
age
La condizione age
è soddisfatta quando una risorsa raggiunge l'età specificata (in giorni). L'età viene misurata 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 completamento di un caricamento.
- L'età di un oggetto non è influenzata dal fatto che l'oggetto diventa una versione non corrente.
Per i caricamenti multiparte, la data e l'ora di creazione corrispondono al momento 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
è 10 giorni, la condizione è 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 nel fuso orario 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 della data YYYY-MM-DD
.
customTimeBefore
non è mai soddisfatto per un oggetto senza metadati Custom-Time
impostati.
daysSinceCustomTime
La condizione daysSinceCustomTime
è soddisfatta quando sono trascorsi
il numero di giorni specificato dalla data e dall'ora specificate nel
campo dei metadati Custom-Time
di un oggetto. Ad esempio, se il 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 generalmente utilizzata solo in combinazione con il controllo delle versioni degli oggetti. La condizione è soddisfatta una volta 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 il 08/07/2020 alle 15:00 UTC e la condizione daysSinceNoncurrentTime
è di 10 giorni, la condizione è soddisfatta per l'oggetto a partire dal 18/07/2020 alle 15:00 UTC.
isLive
La condizione isLive
viene generalmente 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 il nome del bucket o l'elemento /
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 creare una corrispondenza con l'oggetto,
devi utilizzare una condizione come "matchesPrefix":["pictures/paris_"]
.
Puoi specificare fino a 50 prefissi e 50 suffissi per tutte le regole. Un prefisso o suffisso non può essere utilizzato 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
sugli oggetti di archiviazione 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 regione doppia, includi
MULTI_REGIONAL
eDURABLE_REDUCED_AVAILABILITY
nella condizione.
L'inclusione di queste classi aggiuntive garantisce che la regola del ciclo di vita includa 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 della data YYYY-MM-DD
. noncurrentTimeBefore
non è mai soddisfatto per un oggetto attivo.
numNewerVersions
La condizione numNewerVersions
viene generalmente 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, il numero di versioni
più recenti è considerato pari a 0. Per la versione non corrente più recente, il numero di versioni più recenti è 1 (o 0 se non è presente una versione attiva dell'oggetto) e così via.
Comportamento del ciclo di vita degli oggetti
Cloud Storage ispeziona regolarmente tutti gli oggetti in un bucket per 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ò intercorrere un certo periodo di tempo tra il momento in cui vengono soddisfatte le condizioni e il momento in cui viene intrapresa l'azione. Le applicazioni non devono basarsi su azioni del ciclo di vita che si verificano entro un determinato periodo di tempo dopo il completamento di una condizione del ciclo di vita.
Ad esempio, se un oggetto soddisfa le condizioni per l'eliminazione, potrebbe non essere eliminato immediatamente, ma lo vedrai 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, un oggetto attivo rimarrà in uno stato non attuale 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 mentre l'oggetto rimane nello stato originale, con un'eccezione: i costi di 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 della 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
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'uso di SetStorageClass
non riscrive un oggetto. Gestione del ciclo di vita degli oggetti offre determinati
vantaggi in termini di prezzi:
Non sono mai previsti costi di replica tra regioni, tariffe di recupero o tariffe 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 della durata minima dell'archiviazione applicabile per la nuova classe di archiviazione.
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 tariffe per il recupero o l'eliminazione anticipata. Se poi elimini l'oggetto 60 giorni dopo la modifica della classe di archiviazione, viene applicato un addebito per l'eliminazione anticipata di soli 10 giorni, poiché la classe Coldline Storage ha una durata minima di archiviazione di 90 giorni e l'oggetto esiste per un totale di 80 giorni.
In confronto, supponiamo che tu carichi un oggetto come Nearline Storage e che 20 giorni dopo modifica 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, verrà addebitato un costo per eliminazione anticipata di 30 giorni.
In entrambi gli esempi, se l'eliminazione temporanea è abilitata nel bucket, i costi di archiviazione aumentano, ma i costi per l'eliminazione anticipata si riducono in base alla durata del periodo di conservazione dell'eliminazione temporanea.
Data/ora di creazione dell'oggetto
In molti casi, il caricamento di un oggetto viene completato poco dopo l'inizio; tuttavia, in caso di caricamenti effettuati su più richieste, ad esempio caricamenti ripristinabili, potrebbero passare alcuni giorni tra l'invio della richiesta di caricamento iniziale e quella della richiesta finale. In questi casi, tieni presente quanto segue:
- Un oggetto non è soggetto alle regole del ciclo di vita fino al completamento del caricamento.
- La data e l'ora di creazione di un oggetto si basano sul completamento del caricamento. Questo influisce sulle condizioni del ciclo di vita di
age
ecreatedBefore
. - L'impostazione
Custom-Time
per l'oggetto viene effettuata all'inizio del caricamento. Se imposti un valoreCustom-Time
in base all'ora della richiesta, l'elementoCustom-Time
potrebbe essere molto precedente all'ora di creazione dell'oggetto. Ciò ha un impatto 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 diversa da matchesStorageClass
), alcuni oggetti potrebbero essere taggati con metadati relativi alla scadenza. La data di scadenza di un oggetto indica l'ora in cui l'oggetto diventa (o è diventato) idoneo per l'eliminazione da parte della gestione del ciclo di vita degli oggetti. La data di scadenza può cambiare quando cambiano la configurazione del ciclo di vita o il 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 siano 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 è 01/01/2020 10:00 UTC. Tuttavia,
la data di scadenza non è disponibile per l'oggetto se:
Sono presenti altre condizioni specificate nella regola
Delete
, ad eccezione dimatchesStorageClass
.Utilizza una condizione
matchesStorageClass
che non include la classe di archiviazione dell'oggetto.L'oggetto è sottoposto a blocco, perché Cloud Storage non può sapere quando l'archiviazione a fini legali verrà rimossa.
L'eliminazione temporanea è abilitata nel bucket.
Non ti 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 (richieste, larghezza di banda di rete). Se la data e l'ora di scadenza non è disponibile per un oggetto, l'archiviazione viene addebitata all'oggetto fino al momento in cui viene eliminato.
Quando utilizzi i tempi di scadenza, tieni presente quanto segue:
Se il bucket ha un criterio di conservazione, la data di scadenza è la data successiva alla condizione
age
di Gestione del ciclo di vita degli oggetti e l'ora in cui l'oggetto soddisfa il periodo di conservazione specificato dal criterio di conservazione.Se esistono più scadenze in conflitto applicabili per un oggetto a causa di regole di gestione del ciclo di vita diverse, viene utilizzata la data di scadenza applicabile più vicina.
Opzioni per il monitoraggio delle azioni del ciclo di vita
Per monitorare le azioni di gestione del ciclo di vita eseguite da Cloud Storage, usa una delle seguenti opzioni:
- Utilizza i log di utilizzo di Cloud Storage. Questa funzionalità registra sia l'azione
che chi l'ha eseguita. Un valore
GCS Lifecycle Management
nel campocs_user_agent
della voce di log indica che l'azione è stata intrapresa da Cloud Storage in base a una configurazione del ciclo di vita.
- Abilita 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 azioni specificate. Tieni presente che questa funzionalità non registra chi ha eseguito le azioni.
Passaggi successivi
- Attiva 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.