Configurazione Esempi di configurazione
Per supportare casi d'uso comuni come l'impostazione di una durata (TTL) per gli oggetti, la conservazione delle versioni non correnti degli oggetti o il "downgrade" di archiviazione di Kubernetes per facilitare la gestione dei costi, Cloud Storage offre funzionalità di gestione del ciclo di vita.
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 della risorsa del bucket per JSON o il formato di 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 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 della gestione del ciclo di vita contiene un insieme di regole. Ogni regola contiene un'azione e una o più condizioni.
Affinché l'azione della regola venga eseguita, un oggetto deve corrispondere a tutte le condizioni specificate in una regola.
Se specifichi più regole che contengono la stessa azione, l'azione viene su un oggetto quando quest'ultimo soddisfa le condizioni in uno qualsiasi dei le regole del caso.
Se più regole vengono soddisfatte contemporaneamente per un'unica regola, , Cloud Storage esegue l'azione associata a un solo oggetto del regolamento sulla base delle seguenti considerazioni:
- L'azione
Delete
ha la precedenza su qualsiasi azioneSetStorageClass
. - L'azione
SetStorageClass
che passa l'oggetto alla classe di archiviazione con 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 la stessa condizione, cambia sempre in Coldline Storage se la condizione è sono soddisfatte determinate condizioni.
- L'azione
Dovresti testare le regole del ciclo di vita sui dati di sviluppo prima di applicarle alle per garantire che le regole non eseguano azioni in insiemi indesiderati le condizioni di traffico. Se ciò non è possibile, dovresti eseguire il test su un piccolo sottoinsieme del tuo di produzione utilizzando Condizioni
matchesPrefix
omatchesSuffix
nelle regole.Le modifiche alla configurazione del ciclo di vita di un bucket possono richiedere fino a 24 ore prima di diventare effettive 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 a 20 giorni, viene l'oggetto vecchio 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 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 soddisfa tutte le condizioni
specificate nella regola del ciclo di vita. Per impostazione predefinita, quando
un oggetto attivo, diventa eliminato temporaneamente e Cloud Storage
lo conserva per una durata 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 ne fa una versione non corrente, mentre l'eliminazione di una versione non corrente comporta l'eliminazione della versione dal bucket. Consulta le
per l'eliminazione degli oggetti per un esempio dell'utilizzo di Delete
insieme al controllo delle versioni degli oggetti.
L'azione Delete
non ha effetto su un oggetto se quest'ultimo ha un
blocco dell'oggetto o un criterio di conservazione a cui non è ancora stato applicato
completato. Finché le condizioni nell'azione Delete
rimangono soddisfatte per l'oggetto, l'azione Delete
viene eseguita dopo la rimozione di eventuali blocchi degli oggetti e il rispetto di eventuali criteri 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 tutti
in base alle 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 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 una regione, 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 classe di archiviazione una transizione. Ciò significa che puoi specificare una transizione della classe di archiviazione elencati nella tabella riportata sopra, ma la transizione non verrà effettuata. Devi verificare che le regole del ciclo di vita utilizzino una delle transizioni delle classi di archiviazione elencate.
Interrompere i caricamenti multiparte incompleti
L'azione AbortIncompleteMultipartUpload
interrompe un'azione incompleta
caricamento multiparte ed elimina le parti associate quando
il caricamento soddisfi le condizioni specificate nella regola del ciclo di vita.
Con questa azione possono essere utilizzate solo le seguenti condizioni del ciclo di vita:
Tentativo di creare una regola che utilizza AbortIncompleteMultipartUpload
azione 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 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
tentare di impostare una configurazione del ciclo di vita non valida, ad esempio utilizzando un'azione o
condizione inesistente, ricevi una risposta di errore 400 Bad request
,
e l'eventuale configurazione esistente del ciclo di vita rimane attiva.
age
La condizione age
è soddisfatta quando una risorsa raggiunge l'età specificata (in
giorni). L'età viene misurata dalla data e dall'ora di creazione della risorsa.
Per gli oggetti, l'ora di creazione è l'ora in cui l'oggetto viene correttamente vengono scritte nel bucket, ad esempio al termine di un caricamento.
- L'età di un oggetto non è influenzata dal fatto che l'oggetto diventi un non corrente.
Per i caricamenti multiparte, l'ora di creazione corrisponde all'ora in cui viene effettuato il caricamento viene avviata.
Ad esempio, se una risorsa viene creata il 10/01/2022 alle 10:00 UTC e l'age
è 10 giorni, la condizione è soddisfatta per la risorsa e
dopo le 10:00 UTC del 20/01/2022.
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 relativa alla data di un
I metadati Custom-Time
dell'oggetto sono precedenti 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 Custom-Time
di metadati.
daysSinceCustomTime
La condizione daysSinceCustomTime
è soddisfatta quando il numero specificato di
giorni sono trascorsi dalla data e dall'ora specificate nel campo
Campo di metadati Custom-Time
. Ad esempio, se il valore Custom-Time
di un oggetto è
2020-05-16T10:00:00Z
e la condizione daysSinceCustomTime
è 10 giorni, poi
la condizione è soddisfatta per l'oggetto a partire dalle 10:00 UTC del 26/05/2020.
daysSinceCustomTime
non è mai soddisfatto per un oggetto senza un 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 è soddisfatta quando il valore
è trascorso un numero di giorni da quando l'oggetto è diventato non corrente, perché
la versione live è stata eliminata o sostituita. Ad esempio, se un oggetto è diventato non aggiornato alle ore 15:00 UTC del 08/07/2020 e la condizione daysSinceNoncurrentTime
è 10 giorni, la condizione è 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 impostato su false
, questa condizione è soddisfatta per qualsiasi
versione non corrente di un oggetto. Se impostato su true
, questa condizione è soddisfatta
per la versione live di un oggetto. Se non utilizzi il controllo delle versioni, tutti gli oggetti vengono considerati pubblicati 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, con sensibilità alle maiuscole, al prefisso o al suffisso specificato. Puoi specificare più stringhe come elenco (ad es. "matchesSuffix": [".jpg", ".png"]
).
Quando usi 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, nel
Google Cloud CLI, il percorso di un oggetto in un bucket denominato my_bucket
ha un oggetto
simile a gs://my_bucket/pictures/paris_2022.jpg
. Per far corrispondere l'oggetto,
puoi 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 può essere utilizzato due volte in una singola condizione.
matchesStorageClass
La condizione matchesStorageClass
è soddisfatta quando un oggetto nel bucket viene
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
su
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 copra gli oggetti meno recenti nei tuoi bucket, che potrebbero essere impostati su classi di archiviazione precedenti.
noncurrentTimeBefore
La condizione noncurrentTimeBefore
in genere viene utilizzata solo insieme
con il controllo delle versioni degli oggetti. La condizione è soddisfatta per gli oggetti che sono diventati
non corrente 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 in tempo reale.
numNewerVersions
In genere, la condizione numNewerVersions
viene utilizzata solo insieme a
Controllo delle versioni degli oggetti: Se il valore di questa condizione è impostato su N, viene generato un oggetto
soddisfa la condizione quando esistono almeno N versioni (tra cui
la versione live) più recente di questa versione. Per una versione dell'oggetto attiva, il numero di versioni più recenti è considerato pari a 0. Per la versione non corrente più recente,
il numero delle versioni più recenti è 1 (o 0 se non esiste una versione attiva dell'oggetto) e quindi
attiva.
Comportamento del ciclo di vita degli oggetti
Cloud Storage ispeziona regolarmente tutti gli oggetti di 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ò esserci un certo ritardo tra il momento in cui le condizioni sono soddisfatte e il momento in cui viene intrapresa un'azione. Le applicazioni non devono fare affidamento su azioni del ciclo di vita che si verificano entro un certo periodo di tempo dal raggiungimento di una condizione del ciclo di vita.
Ad esempio, se un oggetto soddisfa le condizioni per l'eliminazione, non vengano eliminati immediatamente e l'oggetto viene visualizzato finché l'azione del ciclo di vita eseguite sull'oggetto. Nei bucket in cui è abilitato il controllo delle versioni degli oggetti, significa che un oggetto attivo esisterà in uno stato non corrente per un certo anche se anche la versione non corrente dell'oggetto soddisfa il le condizioni della regola.
Gli addebiti applicabili continuano a essere applicati finché l'oggetto rimane nel suo stato originale, con un'eccezione: i costi di archiviazione a riposo vengono waived se l'oggettosoddisfa tutti i seguenti criteri:
- L'oggetto si trova in un bucket con l'eliminazione temporanea disattivata
- 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, utilizzando
SetStorageClass
viene conteggiato come un'operazione di classe A e viene fatturata in base alla tariffa
determinato dalla classe di archiviazione di destinazione.
A differenza della modifica manuale della classe di archiviazione di un oggetto, l'uso di SetStorageClass
non riscrivere un oggetto. Questo offre a Gestione del ciclo di vita degli oggetti alcuni vantaggi di prezzo:
Non sono mai previsti costi di replica tra regioni, tariffe di recupero, o le tariffe per l'eliminazione anticipata associate alla modifica della classe di archiviazione.
Il tempo trascorso dell'oggetto impostato nella classe di archiviazione originale viene conteggiato ai fini del calcolo di qualsiasi minima di archiviazione applicabile alla nuova classe di archiviazione.
Ad esempio, supponi di caricare un oggetto come Nearline Storage e 20 giorni dopo la configurazione del ciclo di vita cambia la classe di archiviazione dell'oggetto Coldline Storage. Questa modifica non comporta costi di recupero o eliminazione anticipata. Se poi elimini l'oggetto 60 giorni dopo la modifica della classe di archiviazione, ti verrà addebitato solo un costo di eliminazione anticipata di 10 giorni, poiché Coldline Storage ha una durata minima di archiviazione di 90 giorni e l'oggetto è esistito per un totale di 80 giorni.
In confronto, supponiamo che tu carichi un oggetto come Nearline Storage e 20 giorni in seguito modificare la classe di archiviazione con una riscrittura in Coldline Storage). Questa modifica prevede una tariffa di recupero e una il costo dell'eliminazione anticipata. Se poi elimini l'oggetto 60 giorni dopo la riscrittura, ti verrà addebitato un costo di eliminazione anticipata di 30 giorni.
In entrambi gli esempi, se l'eliminazione temporanea è abilitata sul bucket, i costi di archiviazione aumentano, mentre quelli per l'eliminazione anticipata si riducono in base la durata del periodo di conservazione dell'eliminazione temporanea.
Data/ora creazione oggetto
In molti casi, il caricamento di un oggetto viene completato poco dopo l'inizio. Tuttavia, per i caricamenti che avvengono tramite più richieste, ad esempio i caricamenti riavviabili, 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 termine del caricamento.
- L'ora di creazione di un oggetto si basa sul momento in cui viene completato il caricamento. Ciò influisce
le condizioni del ciclo di vita
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, il valoreCustom-Time
potrebbe essere molto precedente all'ora di creazione dell'oggetto. Questo influisce sulle condizioni del ciclo di vitacustomTimeBefore
edaysSinceCustomTime
.
Metadati relativi alla scadenza
Se viene specificata un'azione Delete
per un bucket con la condizione age
(e nessuna
altre condizioni oltre a matchesStorageClass
), alcuni oggetti potrebbero essere
con metadati relativi alla data e all'ora di scadenza. La scadenza di un oggetto indica
momento in cui l'oggetto diventa (o diventa) idoneo per l'eliminazione da parte di
Gestione del ciclo di vita degli oggetti. La scadenza potrebbe cambiare poiché
alla configurazione del ciclo di vita o ai criteri di conservazione.
Tieni presente che l'assenza di metadati relativi all'ora di scadenza non significa necessariamente
l'oggetto non verrà eliminato, ma che le informazioni non saranno
disponibili per stabilire quando
e se verrà eliminato. Ad esempio, se l'oggetto
l'ora di creazione è 10/01/2020 10:00 UTC e la condizione age
è impostata
a 10 giorni, la scadenza dell'oggetto è 20/01/2020 alle 10:00 UTC. Tuttavia,
la data e l'ora di scadenza non sono disponibili 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 è sottoposto a blocco, perché Cloud Storage non può sapere quando il blocco verrà rimosso.
L'eliminazione temporanea è abilitata sul tuo bucket.
Non ti viene addebitato alcun costo per lo spazio di archiviazione dopo la data e l'ora di scadenza dell'oggetto, anche se l'oggetto non viene eliminato immediatamente. Puoi continuare ad accedere all'oggetto prima viene eliminato e sono responsabili di altri addebiti (richiesta, larghezza di banda larga). Se la scadenza non è disponibile per , l'archiviazione viene addebitata fino al momento in cui viene eliminato.
Quando utilizzi le date di scadenza, tieni presente quanto segue:
Se il bucket ha un criterio di conservazione, la data e l'ora di scadenza sono quelle più recenti tra la 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 sono presenti più date di scadenza in conflitto applicabili a un oggetto a causa di regole di gestione del ciclo di vita diverse, viene utilizzata la data di scadenza meno imminente.
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 pari a
GCS Lifecycle Management
nel campocs_user_agent
della voce di log indica è stata intrapresa da Cloud Storage in base a un ciclo di vita configurazione.
- Attiva le notifiche Pub/Sub per Cloud Storage per il tuo bucket. Questa funzionalità invia notifiche a un argomento Pub/Sub scelto da te quando si verificano azioni specifiche. 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.
- Rivedi il formato generale della configurazione di un ciclo di vita in Richieste API JSON e richieste API XML.