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

Elementos de configuração do ciclo de vida

Especifique uma configuração de ciclo de vida do S3 como XML, consistindo 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 o status que indica se a regra está ativada ou desativada. Se uma regra estiver desativada, o Amazon S3 não executará as ações especificadas nela.

  • Filtro que identifica os objetos aos quais a regra se aplica. Você pode especificar um filtro usando um prefixo das chaves de objeto, uma ou mais etiquetas 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 de elemento <Status> pode ser Ativado ou Desativado. 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 chaves: este exemplo mostra uma regra de ciclo de vida do S3 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 chaves 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 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 (chave) e valor (valor). 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 fazer uma quebra de etiquetas no elemento <And> 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 à chave e ao valor.

    • 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 quebrar 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 chaves específico e as tags específicas. 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 é de 5 TB. Algumas classes de armazenamento têm limitações mínimas de tamanho de objeto. Para obter 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 64000 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 da ação Transição: 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 de expiração: a ação Expiration expira 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.

    Importante

    As políticas de ciclo de vida de expiração do objeto não removem multipart uploads incompletos. Para remover os multipart uploads incompletos, você deve usar a ação de configuração de ciclo de vida AbortIncompleteMultipartUpload que é descrita posteriormente nesta seção.

    • Bucket sem versão: 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 obter mais informações, consulte Usando o versionamento em buckets do S3. Independentemente do estado do versionamento, o seguinte é aplicado:

      • 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.

      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 ID de versão nulo. 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 esta ação para especificar quando fazer com que o Amazon S3 execute a transição de objetos para a classe de armazenamento especificada. Essa expiração pode se basear em um determinado número de dias desde o momento em que os objetos se tornam não atuais. Além do número de dias, você também pode fornecer um número máximo de versões não atuais para reter. Você também precisa fornecer um elemento Filter para especificar o número máximo de versões não atuais. Se não especificar um elemento Filter, o Simple Storage Service (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 esta ação para especificar quando o Amazon S3 deve remover permanentemente objetos desatualizados. Esses objetos excluídos não poderão ser recuperados. Essa expiração pode se basear em um determinado número de dias desde o momento em que os objetos se tornam não atuais. Além do número de dias, você também pode fornecer um número máximo de versões não atuais para reter. Você também precisa fornecer um elemento Filter para especificar o número máximo de versões não atuais. Se não especificar um elemento Filter, o Simple Storage Service (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 10:30 AM UTC, você crie um objeto denominado photo.gif (ID de versão 111111). Em 1/2/2014 11:30 AM 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 1/8/2014 00:00 UTC, a regra de ciclo de vida para expiração executa e exclui permanentemente photo.gif (ID de versão 111111), cinco dias depois que ele passa a ser 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.

    Importante

    As políticas de ciclo de vida de validade do objeto não removem carregamentos fracionados incompletos. Para remover os multipart uploads 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 a ação de configuração de ciclo de vida a seguir para instruir o Amazon S3 a parar multipart uploads incompletos.

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

    nota

    Você não pode especificar essa ação de ciclo de vida em uma regra que especifica um filtro com base em tags de objeto.

  • Elemento de ação ExpiredObjectDeleteMarker: em um bucket com versionamento ativado, 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 S3 a remover os marcadores de exclusão de objeto expirado. Para ver um exemplo, consulte Exemplo 7: Remover marcadores de exclusão de objetos expirados.

    nota

    Você não pode especificar essa ação de ciclo de vida em uma regra que especifica um filtro com base em 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 detalhes no tópico Restaurar versões anteriores, você pode usar qualquer um dos dois métodos seguintes para recuperar versões anteriores de um objeto:

  1. Copiando 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.

  2. Excluindo 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 ciclo de vida do S3 com buckets habilitados para versionamento, recomendamos como prática recomendada que você use o primeiro método.

O S3 Lifecycle opera sob um modelo de consistência final. Uma versão atual que você excluiu permanentemente pode não desaparecer até que as alterações sejam propagadas (talvez o Amazon S3 não esteja ciente dessa 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. Assim, copiar a versão antiga, como recomendado no primeiro método, é uma alternativa mais confiável.

A tabela a seguir resume o comportamento das ações de regra de configuração de ciclo de vida do S3 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 expiração 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 existente será retida como uma versão não atual. O 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 de expiração 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. NoncurrentVersionExpirationA ação exclui 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) dos objetos, no qual o Amazon S3 pode realizar a ação.

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:

  • Trata-se do número de dias desde a criação de objeto quando a ação ocorrerá.

  • 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 1/15/2014 10:30 AM UTC e você especificar 3 dias em uma regra de transição, a data de transição do objeto será calculada como 1/19/2014 00:00 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 Last Modified (Última modificação) no painel Properties (Propriedades) do objeto. Quando você cria inicialmente um novo objeto, essa data reflete a data em que o objeto é criado. Se você substituir o objeto, a data será alterada conforme necessário. Assim, o termo data de criação é sinônimo do termo 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 número de dias a partir do momento em que a versão do objeto se torna desatualizada (ou seja, quando o objeto é sobrescrito ou excluído) que o Amazon S3 executará a ação no objeto ou 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 01/01/2014, 10:30 AM UTC. Se a nova versão do objeto que substitui a atual tiver sido criada em 15/01/2014, 10:30 AM UTC, e você especificar uma regra de transição de três dias, a data de transição do objeto será calculada como 19/01/2014, 00:00 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 de ciclo de vida do S3 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 de 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 S3 também continuará expirando todos os objetos novos que você criar no bucket. Para parar a ação de ciclo de vida, você deve remover a ação da configuração 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

Você não pode criar regras de ciclo de vida com base em data usando o console do Amazon S3, mas pode visualizar, desativar ou excluir essas regras.