Elementos de configuração do ciclo de vida - Amazon Simple Storage Service

Elementos de configuração do ciclo de vida

Você especifica uma configuração do Amazon S3 Lifecycle como XML, que consiste em uma ou mais regras de ciclo de vida.

<LifecycleConfiguration> <Rule> ... </Rule> <Rule> ... </Rule> </LifecycleConfiguration>

Cada regra consiste no seguinte:

  • Metadados de regra que incluem um ID de regra e um status que indica se a regra está habilitada ou desabilitada. Se uma regra estiver desativada, o Amazon S3 não executará as ações especificadas nela.

  • Um filtro que identifica os objetos aos quais a regra se aplica. Você pode especificar um filtro usando o tamanho do objeto, o prefixo de chave do objeto, uma ou mais tags de objeto ou uma combinação de filtros.

  • Uma ou mais ações de transição ou expiração com uma data ou um período no ciclo de vida do objeto quando você deseja que o Amazon S3 realize a ação especificada.

As seções a seguir descrevem os elementos XML em uma configuração de ciclo de vida do S3. Para obter configurações de exemplo, consulte Exemplos de configuração do S3 Lifecycle.

Elemento ID

Uma configuração do ciclo de vida do S3 pode ter até 1.000 regras. Este limite não é ajustável. O elemento <ID> identifica uma regra com exclusividade. O tamanho do ID está limitado a 255 caracteres.

Elemento Status

O valor do elemento <Status> pode ser Enabled ou Disabled. Se uma regra estiver desativada, o Amazon S3 não executará as ações definidas nela.

Elemento Filter

Uma regra de ciclo de vida pode ser aplicada a todos os objetos ou a um subconjunto de objetos em um bucket com base no elemento <Filter> que você especifica na regra de ciclo de vida.

É possível filtrar objetos por prefixo das chaves, por tag de objeto ou por uma combinação dos dois (neste último caso, o Amazon S3 usa uma operação AND lógica para combinar os filtros). Considere os seguintes exemplos:

  • Especificação de um filtro usando prefixos de chave: este exemplo mostra uma regra do S3 Lifecycle que se aplica a um subconjunto de objetos com base no prefixo de nome de chave (logs/). Por exemplo, a regra de ciclo de vida se aplica aos objetos logs/mylog.txt, logs/temp1.txt e logs/test.txt. A regra não se aplica ao objeto example.jpg.

    <LifecycleConfiguration> <Rule> <Filter> <Prefix>logs/</Prefix> </Filter> transition/expiration actions ... </Rule> ... </LifecycleConfiguration>

    Caso queira aplicar uma ação de ciclo de vida a um subconjunto de objetos com base em prefixos de nome de chave diferentes, especifique regras separadas. Em cada regra, especifique um filtro com base em prefixo. Por exemplo, para descrever uma ação de ciclo de vida para objetos com prefixos de chave projectA/ e projectB/, especifique duas regras da seguinte forma:

    <LifecycleConfiguration> <Rule> <Filter> <Prefix>projectA/</Prefix> </Filter> transition/expiration actions ... </Rule> <Rule> <Filter> <Prefix>projectB/</Prefix> </Filter> transition/expiration actions ... </Rule> </LifecycleConfiguration>

    Para obter mais informações sobre chaves de objeto, consulte Criar nomes de chave de objeto.

  • Especificação de um filtro com base em tags de objeto: no exemplo a seguir, a regra de ciclo de vida especifica um filtro com base em uma tag (key) e valor (value). A regra aplica-se somente a um subconjunto de objetos com a tag específica.

    <LifecycleConfiguration> <Rule> <Filter> <Tag> <Key>key</Key> <Value>value</Value> </Tag> </Filter> transition/expiration actions ... </Rule> </LifecycleConfiguration>

    Você pode especificar um filtro com base em várias tags. Você deve encapsular as tags no elemento <And>, como mostrado no exemplo a seguir. A regra instrui o Amazon S3 a executar ações de ciclo de vida em objetos com duas tags (com a chave e o valor específicos da tag).

    <LifecycleConfiguration> <Rule> <Filter> <And> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> transition/expiration actions </Rule> </Lifecycle>

    A regra de ciclo de vida se aplica a objetos que têm ambas as tags especificadas. O Amazon S3 realiza uma operação AND lógica. Observe o seguinte:

    • Cada tag deve corresponder exatamente a ambos: à chave e ao valor. Se você especificar somente um elemento <Key> e nenhum elemento <Value>, a regra será aplicada apenas aos objetos que corresponderem à chave da tag e que não tenham um valor especificado.

    • A regra se aplica a um subconjunto de objetos que tem todas as tags especificadas na regra. Se um objeto tiver tags adicionais especificadas, a regra ainda será aplicada.

    nota

    Quando você especifica várias tags em um filtro, cada chave de tag deve ser exclusiva.

  • Especificação de um filtro com base no prefixo e em uma ou mais tags: em uma regra de ciclo de vida, você pode especificar um filtro com base no prefixo de chaves e em uma ou mais tags. Além disso, você deve incluir tudo isso no elemento <And>, como mostrado a seguir.

    <LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>key-prefix</Prefix> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> ... </And> </Filter> <Status>Enabled</Status> transition/expiration actions </Rule> </LifecycleConfiguration>

    O Amazon S3 combina esses filtros usando uma operação AND lógica. Isto é, a regra aplica-se ao subconjunto de objetos com o prefixo de chave especificado e as tags especificadas. Um filtro pode ter somente um prefixo e zero ou mais tags.

  • Você pode especificar um filtro vazio e, nesse caso, a regra se aplicará a todos os objetos do bucket.

    <LifecycleConfiguration> <Rule> <Filter> </Filter> <Status>Enabled</Status> transition/expiration actions </Rule> </LifecycleConfiguration>
  • Para filtrar uma regra por tamanho do objeto, você pode especificar um tamanho mínimo (ObjectSizeGreaterThan), um tamanho máximo (ObjectSizeLessThan) ou um intervalo de tamanhos de objeto.

    Os valores de tamanho de objeto estão em bytes. O tamanho máximo do filtro é 5 TB. Algumas classes de armazenamento têm limitações mínimas de tamanho. Para ter mais informações, consulte Comparar as classes de armazenamento do Amazon S3.

    <LifecycleConfiguration> <Rule> <Filter> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> </Filter> <Status>Enabled</Status> transition/expiration actions </Rule> </LifecycleConfiguration>

    Se você estiver especificando um intervalo de tamanho de objeto, o número inteiro ObjectSizeGreaterThan deve ser menor que o valor de ObjectSizeLessThan. Ao usar mais de um filtro, é necessário fazer a quebra dos filtros em um elemento <And>. O exemplo a seguir mostra como especificar objetos em um intervalo entre 500 e 64.000 bytes.

    <LifecycleConfiguration> <Rule> <Filter> <And> <Prefix>key-prefix</Prefix> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> <ObjectSizeLessThan>64000</ObjectSizeLessThan> </And> </Filter> <Status>Enabled</Status> transition/expiration actions </Rule> </LifecycleConfiguration>

Elementos para descrever ações de ciclo de vida

Você pode instruir o Amazon S3 a executar ações específicas no ciclo de vida de um objeto, especificando uma ou mais das seguintes ações predefinidas em uma regra de ciclo de vida do S3. O efeito dessas ações depende do estado do versionamento de seu bucket.

  • Elemento de ação Transition: você especifica a ação Transition para fazer a transição de objetos de uma classe de armazenamento para outra. Para obter mais informações sobre transição de objetos, consulte Transições com suporte e limitações relacionadas. Quando uma data ou um período especificado no ciclo de vida do objeto é atingido, o Amazon S3 executa a transição.

    Para um bucket com versões (versionamento ativado ou suspenso no bucket), a ação Transition aplica-se à versão do objeto atual. Para gerenciar versões desatualizadas, o Amazon S3 define a ação NoncurrentVersionTransition (descrita posteriormente neste tópico).

  • Elemento de ação Expiration: a ação Expiration descontinua objetos identificados na regra e se aplica a objetos qualificados em qualquer uma das classes de armazenamento do Amazon S3. Para obter mais informações sobre classes de armazenamento, consulte Uso de classes de armazenamento do Amazon S3. O Amazon S3 deixa todos os objetos expirados indisponíveis. A remoção permanente dos objetos depende do estado de versionamento do bucket.

    • Bucket sem versionamento: a ação Expiration resulta na remoção permanente do objeto pelo Amazon S3.

    • Bucket com versão: para um bucket com versão (ou seja, versionamento ativado ou suspenso), há várias considerações que orientam como o Amazon S3 trata a ação Expiration. Para buckets com versionamento habilitado ou suspenso, o seguinte se aplica:

      • A ação Expiration se aplica somente à versão atual (não afeta versões não atuais do objeto).

      • O Amazon S3 não realizará ações se houver uma ou mais versões de objeto e se o marcador de exclusão estiver na versão atual.

      • Se a versão atual do objeto for a única versão do objeto e também houver um marcador de exclusão (também chamado de marcador de exclusão de objeto expirado, onde todas as versões do objeto são excluídas e você tem somente um marcador de exclusão restante), o Amazon S3 removerá o marcador de exclusão de objeto expirado. Você também pode usar a ação de expiração para instruir o Amazon S3 a remover os marcadores de exclusão do objeto expirado. Para ver um exemplo, consulte Exemplo 7: Remover marcadores de exclusão de objetos expirados.

      Para ter mais informações, consulte Usando o versionamento em buckets do S3.

      Ao configurar o Amazon S3 para gerenciar a expiração, considere também:

      • Bucket com versionamento ativado

        Se a versão atual do objeto não for um marcador de exclusão, o Amazon S3 adicionará um com um ID exclusivo de versão. Isso torna a versão atual desatualizada, e o marcador de exclusão se torna a versão atual.

      • Bucket com versionamento suspenso

        Em um bucket com versionamento suspenso, a ação de expiração faz com que o Amazon S3 crie um marcador de exclusão com null como ID de versão. Esse marcador de exclusão substitui qualquer versão de objeto por um ID de versão nulo na hierarquia de versões, que exclui o objeto.

Além disso, o Amazon S3 fornece as seguintes ações que você pode usar para gerenciar versões de objeto não atuais em um bucket com versão (isto é, buckets com versionamento ativado e suspenso).

  • Elemento de ação NoncurrentVersionTransition: use essa ação para especificar quando o Amazon S3 deve realizar a transição de objetos para a classe de armazenamento especificada. Esse prazo de validade pode se basear em determinado número de dias desde o momento em que os objetos se tornam desatualizados. Além do número de dias, você também pode fornecer um número máximo de versões desatualizadas que devem ser retidas (até cem). Esse valor determina quantas versões desatualizadas mais recentes devem existir antes que o Amazon S3 possa executar a ação associada em determinada versão. O Amazon S3 fará a transição de qualquer versão adicional não atual que ultrapasse o número especificado para reter.

    Para especificar o número máximo de versões não atuais, também é necessário fornecer um elemento Filter. Se não especificar um elemento Filter, o Amazon S3 gerará um erro InvalidRequest quando você fornecer um número máximo de versões não atuais.

    Para obter mais informações sobre transição de objetos, consulte Transições com suporte e limitações relacionadas. Para obter detalhes sobre como o Amazon S3 calcula a data para especificar o número de dias na ação NoncurrentVersionTransition, consulte Regras de ciclo de vida: com base na idade de um objeto.

  • Elemento de ação NoncurrentVersionExpiration: use essa ação para especificar que o Amazon S3 exclua permanentemente versões de objetos não atuais. Esses objetos excluídos não podem ser recuperados. Esse prazo de validade pode se basear em determinado número de dias desde o momento em que os objetos se tornam desatualizados. Além do número de dias, você também pode fornecer um número máximo de versões desatualizadas que devem ser retidas (até cem). Esse valor especifica quantas versões desatualizadas mais recentes devem existir antes que o Amazon S3 possa executar a ação associada em uma determinada versão. O Amazon S3 excluirá permanentemente qualquer versão adicional não atual que ultrapasse o número especificado para reter.

    Para especificar o número máximo de versões não atuais, também é necessário fornecer um elemento Filter. Se não especificar um elemento Filter, o Amazon S3 gerará um erro InvalidRequest quando você fornecer um número máximo de versões não atuais.

    A remoção atrasada de objetos não atuais pode ser útil quando é necessário corrigir exclusões ou substituições acidentais. Por exemplo, você pode configurar uma regra de expiração para excluir versões não atuais cinco dias após ficarem nesse estado. Por exemplo, imagine que, em 1.º/1/2014, às 10h30 UTC, você crie um objeto denominado photo.gif (ID de versão 111111). Em 2/1/2014, às 11h30 UTC, você exclui acidentalmente photo.gif (ID de versão 111111), o que cria um marcador de exclusão com um novo ID de versão (como ID de versão 4857693). Agora você tem cinco dias para recuperar a versão original de photo.gif (ID de versão 111111) até que a exclusão seja permanente. Em 8/1/2014, à 0h UTC, a regra de ciclo de vida para expiração executa e exclui permanentemente photo.gif (ID de versão 111111), cinco dias depois de se tornar uma versão não atual.

    Para obter detalhes sobre como o Amazon S3 calcula a data para especificar o número de dias em uma ação NoncurrentVersionExpiration, consulte Regras de ciclo de vida: com base na idade de um objeto.

    nota

    As configurações de ciclo de vida de expiração do objeto não removem carregamentos fracionados incompletos. Para remover carregamentos fracionados incompletos, você deve usar a ação de configuração de ciclo de vida AbortIncompleteMultipartUpload, que é descrita posteriormente nesta seção.

Além das ações de transição e expiração, você pode usar as ações de configuração de ciclo de vida a seguir para instruir o Amazon S3 a interromper carregamentos fracionados incompletos.

  • Elemento de açãoAbortIncompleteMultipartUpload: use esse elemento para definir o tempo máximo (em dias) em que você deseja permitir que os carregamentos fracionados continuem em andamento. Se os carregamentos fracionados aplicáveis (determinados pelo prefix de nome de chave especificado na regra de ciclo de vida) não forem concluídos no período predefinido, o Amazon S3 interromperá os carregamentos fracionados incompletos. Para ter mais informações, consulte Abortar um multipart upload.

    nota

    Não é possível especificar essa ação de ciclo de vida em uma regra que tenha um filtro que use tags de objeto.

  • Elemento de ação ExpiredObjectDeleteMarker: em um bucket com versionamento habilitado, um marcador de exclusão sem versões não atuais é chamado de marcador de exclusão de objeto expirado. Você pode usar essa ação de ciclo de vida para instruir o Amazon S3 a remover marcadores de exclusão de objeto expirado. Para ver um exemplo, consulte Exemplo 7: Remover marcadores de exclusão de objetos expirados.

    nota

    Não é possível especificar essa ação de ciclo de vida em uma regra que tenha um filtro que use tags de objeto.

Como o Amazon S3 calcula quanto tempo um objeto ficou desatualizado

Em um bucket com versionamento habilitado, é possível ter várias versões de um objeto. Há sempre uma versão atual e zero ou mais versões desatualizadas. Sempre que você faz upload de um objeto, a versão atual é retida como a versão não atual e a versão recém-adicionada, a sucessora, se torna a versão atual. Para determinar o número de dias que um objeto fica desatualizado, o Amazon S3 observa quando o sucessor foi criado. O Amazon S3 usa o número de dias desde que o sucessor foi criado como o número de dias que um objeto fica desatualizado.

Restaurar versões anteriores de um objeto ao usar configurações do S3 Lifecycle

Como explicado em Restaurar versões anteriores, você pode usar qualquer um dos dois métodos seguintes para recuperar versões anteriores de um objeto:

  • Método 1: copiar uma versão não atual do objeto no mesmo bucket. O objeto copiado torna-se a versão atual desse objeto e todas as versões são preservadas.

  • Método 2: excluir permanentemente a versão atual do objeto. Ao excluir a versão atual do objeto, você acaba transformando a versão não atual na versão atual do objeto.

Quando você estiver usando regras de configuração do S3 Lifecycle com buckets habilitados para versionamento, a prática recomendada é usar o método 1.

O S3 Lifecycle opera sob um modelo de consistência final. Existe a possibilidade de uma versão atual excluída permanentemente não desaparecer enquanto as alterações não forem propagadas para todos os sistemas do Amazon S3. (Por isso, temporariamente, o Amazon S3 pode não perceber essa exclusão.) Entretanto, a regra de ciclo de vida configurada para a validade de objetos desatualizados pode remover permanentemente objetos desatualizados, inclusive aquele que você deseja restaurar. Portanto, copiar a versão antiga, como recomendado no método 1, é uma alternativa mais confiável.

A tabela a seguir resume o comportamento das ações de regra de configuração do S3 Lifecycle em objetos com relação ao estado do versionamento do bucket que contém o objeto.

Ações de ciclo de vida e estado de versionamento do bucket
Ação Bucket sem versão (versionamento não ativado) Bucket com versionamento ativado Bucket com versionamento suspenso

Transition

Quando uma data ou um período especificado no ciclo de vida do objeto é atingido.

O Amazon S3 faz a transição do objeto para a classe de armazenamento especificada. O Amazon S3 faz a transição da versão atual do objeto para a classe de armazenamento especificada. Mesmo comportamento que um bucket com versionamento ativado.

Expiration

Quando uma data ou um período especificado no ciclo de vida do objeto é atingido.

A ação Expiration exclui o objeto e o objeto excluído não pode ser recuperado. Se a versão atual não for um marcador de exclusão, o Amazon S3 criará um marcador de exclusão, que passará a ser a versão atual, e a versão atual será retida como uma versão não atual. A ação de ciclo de vida cria um marcador de exclusão com o ID de versão null, que se transforma na versão atual. Se o ID da versão atual do objeto for null, a ação Expiration excluirá permanentemente essa versão. Caso contrário, a versão atual será retida como uma versão não atual.

NoncurrentVersionTransition

Quando o objeto tiver sido classificado como desatualizado para o número especificado de dias ou se o número máximo especificado de versões desatualizadas a serem retidas tiver sido excedido.

NoncurrentVersionTransition não tem efeito.

O Amazon S3 faz a transição das versões não atuais do objeto para a classe de armazenamento especificada.

Mesmo comportamento que um bucket com versionamento ativado.

NoncurrentVersionExpiration

Quando o objeto tiver sido classificado como desatualizado para o número especificado de dias ou se o número máximo especificado de versões desatualizadas a serem retidas tiver sido excedido.

NoncurrentVersionExpiration não tem efeito. A ação NoncurrentVersionExpiration exclui permanentemente a versão não atual do objeto e o objeto excluído não pode ser recuperado. Mesmo comportamento que um bucket com versionamento ativado.

Regras de ciclo de vida: com base na idade de um objeto

É possível especificar um período, em número de dias desde a criação (ou modificação) do objeto, no qual o Amazon S3 pode realizar a ação especificada.

Quando você especificar o número de dias nas ações Transition e Expiration em uma configuração de ciclo de vida do S3, observe o seguinte:

  • O valor que você especifica é o número de dias que devem transcorrer desde a criação do objeto para que a ação ocorra.

  • O Amazon S3 calcula o tempo, adicionando o número de dias especificado na regra ao momento de criação do objeto e arredondando o tempo resultante para a meia-noite UTC do próximo dia. Por exemplo, se um objeto foi criado em 15/1/2014, às 10h30 UTC, e você especificar três dias em uma regra de transição, a data de transição do objeto será calculada como 19/1/2014, 0h UTC.

nota

O Amazon S3 mantém apenas a data da última modificação para cada objeto. Por exemplo, o console do Amazon S3 mostra a data Última modificação no painel Propriedades do objeto. Quando você cria inicialmente um objeto, essa data reflete a data em que o objeto é criado. Se você substituir o objeto, a data será alterada conforme necessário. Portanto, a data de criação é idêntica à data da Última modificação.

Ao especificar o número de dias nas ações NoncurrentVersionTransition e NoncurrentVersionExpiration em uma configuração de ciclo de vida, observe o seguinte:

  • O valor que você especifica é o número de dias que devem transcorrer desde o momento em que a versão do objeto se torna desatualizada (ou seja, quando o objeto é sobrescrito ou excluído) para que o Amazon S3 execute a ação em um ou mais objetos especificados.

  • O Amazon S3 calcula o tempo, adicionando o número de dias especificado na regra ao momento em que a nova versão sucessora do objeto é criada e arredondando o tempo resultante para a meia-noite UTC do próximo dia. Por exemplo, no seu bucket, suponha que a versão atual de um objeto foi criada em 1º./1/2014, às 10h30 UTC. Se a nova versão do objeto que substitui a atual tiver sido criada em 15/1/2014, às 10h30 UTC, e você especificar uma regra de transição de três dias, a data de transição do objeto será calculada como 19/1/2014, 0h UTC.

Regras de ciclo de vida: com base em uma data especificada

Ao especificar uma ação em uma regra de ciclo de vida do S3, é possível especificar uma data em que deseja que o Amazon S3 realize a ação. Quando a data especificada chegar, o Amazon S3 aplicará a ação a todos os objetos qualificados (com base nos critérios de filtro).

Se você especificar uma ação do S3 Lifecycle com uma data no passado, todos os objetos qualificados estarão imediatamente qualificados para essa ação de ciclo de vida.

Importante

A ação com base em data não é uma ação única. O Amazon S3 continuará aplicando a ação com base em data mesmo após a data ter passado, contanto que o status da regra seja Enabled.

Por exemplo, imagine que você especifique uma ação Expiration com base em data para excluir todos os objetos (supondo que nenhum filtro seja especificado na regra). Na data especificada, o Amazon S3 expira todos os objetos no bucket. O Amazon S3 também continuará invalidando todos os objetos que você criar no bucket. Para interromper a ação de ciclo de vida, você deve remover a ação da regra de ciclo de vida, desabilitar a regra ou excluir a regra da configuração de ciclo de vida.

O valor de data deve estar em conformidade com o formato ISO 8601. A hora é sempre meia-noite (UTC).

nota

Não é possível criar regras de ciclo de vida com base em data usando o console do Amazon S3, mas você pode visualizar, desabilitar ou excluir essas regras.