Gerenciamento do ciclo de vida de objetos

Para que haja compatibilidade com casos de uso comuns relacionados a objetos, como definir um time to live (TTL), arquivar versões antigas ou "rebaixar" classes de armazenamento para gerenciar custos, o Cloud Storage oferece o recurso "Gerenciamento do ciclo de vida de objetos". Nesta página, descrevemos esse recurso e as opções que ele oferece. Para aprender a ativar o "Gerenciamento do ciclo de vida de objetos" e para ver exemplos de políticas de ciclo de vida, consulte Como gerenciar ciclos de vida.

Introdução

É possível atribuir uma configuração de gerenciamento de ciclo de vida a um intervalo. A configuração contém um conjunto de regras que se aplicam a objetos atuais e futuros do intervalo. Quando um objeto atende aos critérios de uma das regras, o Cloud Storage automaticamente executa uma ação específica no objeto. Aqui estão 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 intervalo 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, a 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 um único objeto estiver sujeito a várias ações, o Cloud Storage executará apenas uma das ações e o objeto será reavaliado antes que novas ações sejam executadas. Uma ação de exclusão tem precedência sobre uma ação de definição de classe de armazenamento (SetStorageClass). Se várias ações SetStorageClass forem especificadas, será escolhida a ação que alternar para a classe de armazenamento com menor preço de armazenamento em repouso.

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.

Ações de ciclo de vida

As ações a seguir são compatíveis com regras de ciclo de vida:

  • Delete (excluir): exclui objetos ativos e/ou arquivados. Um objeto ativo é aquele que não é de uma geração arquivada. Consulte Controle de versão de objetos para saber mais. Essa ação pode ser aplicada a objetos com e sem controle de versão. Em um intervalo com controle de versão ativado, excluir um objeto ativo faz com que ele seja arquivado, enquanto excluir um objeto arquivado faz com que ele seja excluído permanentemente.

  • SetStorageClass (definir classe de armazenamento): altera a classe de armazenamento de objetos ativos e/ou arquivados. Essa ação pode ser aplicada a objetos com e sem controle de versão. Essa ação é compatível com as seguintes transições de classe de armazenamento:

    Classe de armazenamento original Nova classe de armazenamento
    Multi-Regional Storage Nearline Storage
    Coldline Storage
    Regional Storage Nearline Storage
    Coldline Storage
    Nearline Storage Coldline Storage

Condições do ciclo de vida

As seguintes condições são compatíveis com regras de ciclo de vida:

  • Age (idade): essa condição é satisfeita 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 a hora de criação de um objeto for 2019/01/10 10:00 UTC e a condição Age for 10 dias, a condição será satisfeita para o objeto em e após 2019/01/20 10:00 UTC. Isso é verdade mesmo se o objeto for arquivado por meio da versão do objeto após sua criação.

  • CreatedBefore (criado antes de): essa condição será satisfeita quando um objeto foi criado antes da meia-noite da data especificada no horário UTC.

  • IsLive (está ativo): se o valor for true, essa condição de ciclo de vida corresponderá apenas a objetos ativos. Se o valor for false, ela corresponderá apenas a objetos arquivados. Para esta condição, objetos em intervalos sem controle de versão são considerados ativos.

  • MatchesStorageClass (corresponde à classe de armazenamento): essa condição é satisfeita quando um objeto do intervalo é armazenado como a classe de armazenamento especificada. Geralmente, para usar essa condição em objetos de Multi-Regional Storage ou Regional Storage, é necessário também incluir STANDARD e DURABLE_REDUCED_AVAILABILITY na condição para garantir que todos os objetos de classes de armazenamento similares sejam cobertos.

  • NumberOfNewerVersions (número de versões mais recentes): relevante apenas para objetos com controle de versão. Se o valor dessa condição for definido como N, ela será satisfeita por um objeto que tiver pelo menos N versões (incluindo a versão ativa) mais recentes. Para objetos ativos, o número de versões mais recentes é considerado 0. Para a versão arquivada mais recente, o número de versões mais recentes é 1 (ou 0 se não houver nenhum objeto ativo) e assim por diante.

Todas as condições são opcionais, mas é necessário que seja especificada 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.

Consulte Como gerenciar ciclos de vida de objetos para ver exemplos de uso de configurações de ciclo de vida. Para o formato geral de um arquivo de configuração de ciclo de vida, consulte a representação do recurso de intervalo para JSON ou o formato de configuração do ciclo de vida para XML.

Comportamento do ciclo de vida de objetos

  • O Cloud Storage inspeciona regularmente todos os objetos de um intervalo com gerenciamento do ciclo de vida e executa todas as ações aplicáveis de acordo com as regras do intervalo.

    Por exemplo, se um objeto atende às condições de exclusão, ele pode não ser excluído imediatamente. Você continuará vendo o objeto até que a ação do ciclo de vida seja executada nele. O armazenamento do objeto não é cobrado, mas o acesso ao objeto é cobrado de acordo com os custos operacionais e de largura de banda aplicáveis, conforme descrito em Preços.

  • 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 pode ser excluído pelo "Gerenciamento do ciclo de vida de objetos" até 24 horas depois, devido aos critérios da configuração antiga.

  • Uma ação de Delete de ciclo de vida não terá efeito sobre um objeto enquanto ele tiver uma retenção de objeto ou uma política de retenção que ainda não tenha sido atendida. Qualquer ação de Delete que ocorreria enquanto um objeto tivesse uma retenção ou política retenção ocorrerá depois que as restrições não se aplicarem mais ao objeto.

  • Ações SetStorageClass não são afetadas por retenções de objetos ou políticas de retenção.

Exclusão antecipada de objetos em Nearline Storage e Coldline Storage

O "Gerenciamento do ciclo de vida de objetos" não grava o objeto novamente quando altera sua classe de armazenamento. Isso significa que, quando um objeto é transferido para Nearline Storage ou Coldline Storage usando o recurso SetStorageClass, qualquer exclusão antecipada subsequente e cobranças associadas serão baseadas na hora da criação original do objeto, independentemente de quando a classe de armazenamento foi alterada.

Por exemplo, digamos que você fez o upload de um objeto como Regional Storage e, 20 dias depois, a configuração do seu ciclo de vida alterou a classe de armazenamento desse objeto para Nearline Storage. Se você excluir o objeto imediatamente, haverá uma cobrança por exclusão antecipada de 10 dias, já que o objeto existiu por 20 dias. Se você excluir o objeto 10 dias após alterar a classe de armazenamento dele para Nearline Storage, não haverá cobrança por exclusão antecipada, porque o objeto existiu por 30 dias.

Para comparar, digamos que você fez o upload de um objeto como Regional Storage e, 20 dias depois, alterou a classe de armazenamento usando uma regravação (novamente para Nearline Storage). Se excluir o objeto imediatamente depois, você receberá uma cobrança por exclusão antecipada de 30 dias, já que o tempo de regravação se tornou o novo horário de criação. Da mesma forma, se você esperasse 10 dias após a reconfiguração para excluir o objeto, receberia uma cobrança por exclusão antecipada de 20 dias.

Metadados de tempo de expiração

Se uma ação Delete for especificada para um intervalo com a condição Age (e nenhuma condição NumberOfNewerVersions), alguns objetos poderão ser marcados com metadados de tempo de expiração. O tempo de expiração de um objeto indica a hora em que o objeto se torna (ou se tornou) elegível para exclusão pelo "Gerenciamento do ciclo de vida de objetos". O tempo de expiração 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 tempo de expiração 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 a hora de criação do objeto for 10/01/2013, 10h (UTC), e a condição Age estiver definida como 10 dias, o tempo de expiração do objeto será 20/01/2013, 10h (UTC). No entanto, a hora de expiração não estará disponível para o objeto nestes casos:

  • A condição NumberOfNewerVersions também é especificada. Nesse caso, versões mais antigas do objeto poderão ser excluídas se forem adicionadas novas versões.

  • A condição CreatedBefore também é especificada e definida como “2013-01-01”, porque o objeto não atenderá essa condição.

  • O objeto está em retenção, porque o Cloud Storage não sabe quando a retenção será removida.

O armazenamento após o tempo de expiração do objeto não é cobrado, 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.

O tempo de expiração de um objeto (se houver) pode ser visto nos metadados. A API REST retorna o tempo de expiração do objeto no cabeçalho de resposta x-goog-expiration.

Quando for trabalhar com tempos de expiração, lembre-se disto:

  • Se o intervalo tiver uma política de retenção, o tempo de expiração será o que for mais tarde: a condição de idade do "Gerenciamento do ciclo de vida de objetos" ou a hora em que o objeto atender ao período de retenção 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 tempo de expiração aplicável mais próximo.

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

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

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

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

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.