Gerenciamento do ciclo de vida de objetos

Acessar os exemplos

Para atender aos casos de uso comuns no armazenamento de objetos, como definir um time to live (TTL), arquivar versões não atuais ou fazer "downgrade" de classes de armazenamento para facilitar o gerenciamento dos custos, o Cloud Storage oferece o recurso Gerenciamento do ciclo de vida de objetos.

Nesta página, descrevemos este recurso e as opções que ele oferece. Veja informações sobre o formato geral do arquivo de configuração do ciclo de vida na representação de recursos de bucket para JSON ou no formato de configuração do ciclo de vida para XML.

Introdução

É possível atribuir uma configuração de gerenciamento de ciclo de vida a um bucket. A configuração contém um conjunto de regras que se aplicam a objetos atuais e futuros do bucket. Quando um objeto atende aos critérios de uma das regras, o Cloud Storage executa automaticamente uma ação específica no objeto. Veja alguns exemplos de casos de uso:

  • Rebaixar a classe de armazenamento de objetos com mais de 365 dias para Coldline Storage.
  • Excluir objetos criados antes de 1º de janeiro de 2013.
  • Manter apenas as três versões mais recentes de cada objeto de um bucket com controle de versão ativado.

Configuração do ciclo de vida

Cada configuração de gerenciamento do ciclo de vida contém um conjunto de regras. Ao definir uma regra, é possível especificar qualquer conjunto de condições para qualquer ação. Se você especificar várias condições em uma regra, o objeto precisará corresponder a todas as condições para que a ação seja executada. Se você especificar várias regras com a mesma ação, essa ação será executada quando um objeto corresponder às condições em qualquer uma das regras. Cada regra pode conter apenas uma ação.

Se várias regras tiverem as condições atendidas simultaneamente para um único objeto, o Cloud Storage executará a ação associada a apenas uma das regras, com base nas seguintes considerações:

  • A ação Delete tem precedência sobre qualquer ação SetStorageClass.
  • A ação SetStorageClass que alterna o objeto para a classe de armazenamento com o menor preço de armazenamento em repouso tem precedência.

Depois que uma ação ocorre, o objeto é reavaliado antes de qualquer ação adicional ser realizada.

Assim, por exemplo, se houver uma regra que exclui um objeto e outra que altera a classe de armazenamento do objeto, mas as duas usarem a mesma condição exata, a ação de exclusão sempre ocorrerá quando a condição for atendida. Se houver uma regra que altera a classe do objeto para Nearline Storage e outra que altera a classe do objeto para Coldline Storage, mas as duas usarem a mesma condição, a classe do objeto sempre mudará para Coldline Storage quando a condição for atendida.

Veja exemplos de configurações em Como gerenciar ciclos de vida de objetos.

Ações de ciclo de vida

Uma regra de ciclo de vida especifica uma ação Delete ou SetStorageClass.

Delete

A ação Delete exclui um objeto quando ele atende a todas as condições especificadas na regra de ciclo de vida.

Exceção: em buckets com o controle de versões de objetos ativado, a exclusão da versão ativa de um objeto faz com que ele se torne uma versão desativada, enquanto a exclusão de uma versão desativada exclui essa versão permanentemente. Consulte a configuração para excluir objetos para ver um exemplo de como usar a ação Delete junto com o controle de versão de objeto.

SetStorageClass

A ação SetStorageClass altera a classe de armazenamento de um objeto quando ele atende a todas as condições especificadas na regra de ciclo de vida.

SetStorageClass é compatível com as seguintes transições de classe de armazenamento:

Classe de armazenamento original Nova classe de armazenamento
Durable Reduced Availability (DRA) Storage Nearline Storage
Coldline Storage
Archive Storage
Multi-Regional Storage/Regional Storage1
Armazenamento padrão, Multi-Regional Storage ou Regional Storage Nearline Storage
Coldline Storage
Archive Storage
Nearline Storage Coldline Storage
Archive Storage
Coldline Storage Archive Storage

1 Para buckets localizados em uma região, a nova classe de armazenamento não pode ser Multi-Regional Storage. Já para buckets em um local birregional ou multirregional, a nova classe de armazenamento não pode ser Regional Storage.

O Cloud Storage não valida a correção da transição da classe de armazenamento. Isso significa que você pode especificar uma transição de classe de armazenamento não listada na tabela acima, mas a transição não ocorrerá. Verifique se as regras de ciclo de vida usam uma das transições de classe de armazenamento listadas.

Condições do ciclo de vida

Uma regra de ciclo de vida inclui condições que um objeto precisa atender antes que a ação definida na regra ocorra no objeto. As regras de ciclo de vida são compatíveis com as seguintes condições:

Todas as condições são opcionais, mas é obrigatório especificar pelo menos uma. Se você tentar definir uma configuração de ciclo de vida inválida, por exemplo, usando uma ação ou condição que não existe, receberá uma resposta de erro 400 Bad request e qualquer configuração de ciclo de vida atual permanecerá em vigor.

Age

A condição Age é atendida quando um objeto atinge a idade especificada (em dias). A idade é medida a partir do horário de criação do objeto. Por exemplo, se um objeto foi criado em 10/01/2019, às 10h UTC e a condição Age for de 10 dias, ela será atendida para esse objeto a partir das 10h UTC de 20/01/2019. Isso ocorrerá mesmo que objeto se torne não atual por meio do controle de versões de objeto após a criação.

CreatedBefore

A condição CreatedBefore é atendida quando um objeto é criado antes da meia-noite da data especificada em UTC.

CustomTimeBefore

A condição CustomTimeBefore é atendida quando a parte da data dos metadados Custom-Time de um objeto é anterior à data especificada nessa condição. Essa condição é definida usando o formato de data YYYY-MM-DD. CustomTimeBefore nunca é atendido por um objeto sem conjunto de metadados Custom-Time.

DaysSinceCustomTime

A condição DaysSinceCustomTime é atendida quando o número de dias especificado tiver passado desde a data e hora especificadas no campo de metadados Custom-Time de um objeto. Por exemplo, se um Custom-Time de um objeto for 2020-05-16T10:00:00Z e a condição DaysSinceCustomTime for 10 dias, a condição será atendida para o objeto em e depois de 26/05/2020 às 10h UTC.

DaysSinceCustomTime nunca é atendido por um objeto sem conjunto de metadados Custom-Time.

DaysSinceNoncurrentTime

A condição DaysSinceNoncurrentTime normalmente é usada apenas em conjunto com o controle de versões de objeto. A condição é atendida quando o número especificado de dias tiver passado desde que o objeto se tornou inativo, porque a versão ativa foi excluída ou substituída. Por exemplo, se um objeto ficou inativo em 08/07/2020 às 15h UTC e a condição DaysSinceNoncurrentTime é de 10 dias, a condição é atendida para o objeto em e após 18/07/2020 às 15h UTC.

IsLive

A condição IsLive normalmente é usada apenas junto com o controle de versões de objeto. Quando definida como false, a condição é atendida para qualquer versão não atual de um objeto. Quando definida como true, ela é atendida para a versão ativa de um objeto. Se você não usar o controle de versões, todos os seus objetos serão considerados ativos e corresponderão quando IsLive for true.

MatchesStorageClass

A condição MatchesStorageClass é atendida quando um objeto do bucket é armazenado conforme a classe de armazenamento especificada. É possível usar os seguintes valores para MatchesStorageClass: STANDARD, NEARLINE, COLDLINE, ARCHIVE, MULTI_REGIONAL, REGIONAL e DURABLE_REDUCED_AVAILABILITY.

Em geral, se você pretende usar a condição MatchesStorageClass para objetos em Standard Storage, inclua também o seguintes parâmetros:

  • Se o bucket estiver em um local regional, inclua REGIONAL e DURABLE_REDUCED_AVAILABILITY na condição.

  • Se o bucket estiver em um local birregional ou multirregional, inclua MULTI_REGIONAL e DURABLE_REDUCED_AVAILABILITY na condição.

Ao incluir essas outras classes, você garantirá que a regra do ciclo de vida abranja os objetos mais antigos nos seus buckets, que podem estar definidos em classes de armazenamento legadas.

NoncurrentTimeBefore

A condição NoncurrentTimeBefore normalmente é usada apenas em conjunto com o controle de versões de objeto. A condição é satisfeita para objetos que se tornaram desatualizados em uma data anterior à especificada nessa condição. A condição é definida usando o formato de data YYYY-MM-DD. NoncurrentTimeBefore nunca é atendido para um objeto ativo.

NumberOfNewerVersions

A condição NumberOfNewerVersions normalmente é usada apenas em conjunto com o controle de versões de objeto. Se o valor da condição for definido como N, uma versão do objeto atenderá a condição quando houver pelo menos N versões (incluindo a ativa) mais novas. No caso de uma versão ativa do objeto, o número de versões mais novas é considerado 0. No caso da versão não atual mais recente, o número de versões mais novas é 1 (ou 0 se não houver uma versão ativa), e assim por diante.

Comportamento do ciclo de vida de objetos

  • O Cloud Storage inspeciona regularmente todos os objetos de um bucket para os quais o Gerenciamento do ciclo de vida de objetos está configurado e executa todas as ações aplicáveis de acordo com as regras do bucket. O Cloud Storage executa uma ação de maneira assíncrona. Portanto, pode haver um atraso entre o momento em que as condições são atendidas e o momento em que a ação é realizada.

    Por exemplo, se um objeto atende às condições de exclusão, talvez ele não seja excluído imediatamente. Portanto, você ainda verá o objeto até que a ação do ciclo de vida seja executada nele. As cobranças aplicáveis continuam em vigor enquanto o objeto existir. A única exceção é que os custos de armazenamento em repouso serão isentos se o objeto estiver sujeito a uma ação Delete, devido a uma regra que tem apenas uma condição Age.

  • Aa atualizações na configuração do ciclo de vida podem levar até 24 horas para entrar em vigor. Isso significa que, quando a configuração do ciclo de vida é alterada, o Gerenciamento do ciclo de vida de objetos ainda pode executar ações com base na configuração antiga por até 24 horas.

    Por exemplo, se você alterar uma condição Age de 10 para 20 dias, um objeto com 11 dias poderá ser excluído pelo gerenciamento do ciclo de vida de objetos até 24 horas depois, com base na configuração antiga.

  • Uma ação Deletede ciclo de vida não afetará um objeto enquanto ele tiver uma guarda de objeto ou uma política de retenção que ainda não tenha sido atendida. Qualquer ação Delete que era para ser executada enquanto o objeto estava sob a restrição de uma guarda ou política de retenção ocorrerá depois que as restrições não se aplicarem mais ao objeto.

  • Uma ação SetStorageClass no ciclo de vida não é afetada pela existência de políticas retenção ou contenção de objetos.

Vantagens de custo do SetStorageClass

Ao contrário da alteração manual da classe de armazenamento de um objeto, o Gerenciamento do ciclo de vida de objetos não grava novamente um objeto quando essa opção é alterada. Isso dá algumas vantagens de preço ao Gerenciamento do ciclo de vida de objetos:

  • Não há taxas de recuperação ou taxas de exclusão antecipada associadas à alteração da classe de armazenamento, mesmo quando o objeto está definido originalmente como Nearline Storage ou Coldline Storage.

  • O tempo decorrido do objeto definido na classe de armazenamento original conta como qualquer duração de armazenamento mínima que se aplica à nova classe de armazenamento.

Por exemplo, imagine que você fez o upload de um objeto como Nearline Storage e, 20 dias depois, a configuração do ciclo de vida alterou a classe de armazenamento do objeto para Coldline Storage. Essa alteração não gera taxas de recuperação e nem de exclusão antecipada. Se você excluir o objeto 60 dias após a alteração da classe de armazenamento, haverá apenas uma cobrança por exclusão antecipada de 10 dias, porque o Coldline Storage tem uma duração de armazenamento mínima de 90 dias e o objeto existiu por um total de 80 dias.

Para comparar, digamos que você fez o upload de um objeto como Nearline Storage e, 20 dias depois, alterou a classe de armazenamento usando uma regravação (novamente para Coldline Storage). Essa alteração gera uma taxa de recuperação e uma cobrança de exclusão antecipada de 10 dias. Se você excluir o objeto 60 dias após a regravação, haverá uma cobrança por exclusão antecipada de 30 dias.

Metadados de prazo de validade

Se uma ação Delete é especificada para um bloco com a condição Age (e não há outras condições além de matchesStorageClass), alguns objetos poderão ser marcados com metadados de prazo de validade. O prazo de validade de um objeto indica quando o objeto se torna qualificado para exclusão pelo Gerenciamento do ciclo de vida de objetos. O prazo de validade pode mudar de acordo com as alterações na configuração do ciclo de vida ou na política de retenção do intervalo.

A ausência de metadados de prazo de validade não significa necessariamente que o objeto não será excluído, mas sim que não há informações suficientes disponíveis para determinar quando ou se ele será excluído. Por exemplo, se um objeto foi criado em 10/01/2020, às 10h UTC e a condição Age for definida como 10 dias, o prazo de validade do objeto será às 10h UTC de 20/01/2020. No entanto, o prazo de validade não estará disponível para o objeto se:

  • houver outras condições especificadas na regra Delete, com exceção de matchesStorageClass;

  • você usar uma condição matchesStorageClass que não inclui a classe de armazenamento do objeto.

  • O objeto está contido, porque o Cloud Storage não sabe quando essa contenção será removida.

O armazenamento após o prazo de validade do objeto não é faturado, mesmo que o objeto não seja excluído imediatamente. É possível continuar acessando o objeto antes de ele ser excluído e outras cobranças continuam sendo válidas (solicitação, largura de banda da rede). Se algum objeto não tiver hora de expiração disponível, o armazenamento desse objeto será cobrado até a hora em que ele for excluído.

Quando você usar prazos de validade, lembre-se disto:

  • Se o bucket tiver uma política de retenção, o prazo de validade será posterior ao da condição Age do Gerenciamento do ciclo de vida de objetos e à hora em que o objeto atender ao período de armazenamento especificado pela política de retenção.

  • Se houver vários tempos de expiração conflitantes aplicáveis a um mesmo objeto devido a diferentes regras de gerenciamento do ciclo de vida, será usado o prazo de validade aplicável mais próximo.

Opções para rastrear ações do ciclo de vida

Use uma das opções a seguir para rastrear as ações de gerenciamento do ciclo de vida realizadas pelo Cloud Storage:

  • Use os registros de uso do Cloud Storage. Esse recurso registra a ação e quem a executou. Um valor de GCS Lifecycle Management no campo cs_user_agent da entrada de registro indica que a ação foi realizada pelo Cloud Storage, de acordo com uma configuração de ciclo de vida.

  • Ative as Notificações do Pub/Sub para o Cloud Storage no bucket. Esse recurso enviará notificações para o tópico do Pub/Sub de sua escolha quando ocorrerem ações específicas. Esse recurso não registra quem executou as ações.

A seguir