Elementos de configuração do ciclo de vida
Uma configuração do Ciclo de Vida do S3 consiste em regras de ciclo de vida que incluem vários elementos que descrevem as ações que o Amazon S3 realiza e a vida útil dos objetos. Você especifica uma configuração do Ciclo de Vida do Amazon S3 como XML, que é composta por uma ou mais regras do Ciclo de Vida, em que cada regra consiste em um ou mais elementos.
<LifecycleConfiguration> <Rule> <Element> </Rule> <Rule> <Element> <Element> </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.
Tópicos
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ções do Ciclo de Vida do S3.
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 do Ciclo de Vida do S3 pode ser aplicada a todos os objetos ou a um subconjunto de objetos em um bucket com base no elemento <Filter>
especificado na regra.
É 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). Consulte exemplos e mais informações sobre filtros em Como adicionar filtros a regras de ciclo de vida.
-
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 objetoslogs/mylog.txt
,logs/temp1.txt
elogs/test.txt
. A regra não se aplica ao objetoexample.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/
eprojectB/
, 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 Nomear objetos do Amazon S3.
-
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 (
) e valor (key
). A regra aplica-se somente a um subconjunto de objetos com a tag específica.value
<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. Por padrão, objetos com menos de 128 KB não serão transferidos para nenhuma classe de armazenamento, a menos que você especifique um tamanho mínimo menor (
ObjectSizeGreaterThan
) ou máximo (ObjectSizeLessThan
). Para ter mais informações, consulte Exemplo: permitir que objetos com menos de 128 KB sejam transferidos.<LifecycleConfiguration> <Rule> <Filter> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> </Filter> <Status>Enabled</Status>
transition/expiration actions
</Rule> </LifecycleConfiguration>nota
Os filtros
ObjectSizeGreaterThan
eObjectSizeLessThan
excluem os valores especificados. Por exemplo, se você definir objetos com tamanho de 128 KB a 1.024 KB para mover da classe de armazenamento S3 Standard para a classe de armazenamento S3 Standard-IA, os objetos que têm exatamente 1.024 KB e 128 KB não farão a transição para S3 Standard-IA. Em vez disso, a regra se aplicará somente a objetos maiores que 128 KB e menores que 1.024 KB de tamanho.Se você estiver especificando um intervalo de tamanho de objeto, o número inteiro
ObjectSizeGreaterThan
deve ser menor que o valor deObjectSizeLessThan
. 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çãoTransition
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 aceitas. 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çãoNoncurrentVersionTransition
(descrita posteriormente neste tópico).
-
Elemento de ação
Expiration
: a açãoExpiration
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 Compreender e gerenciar 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 Expiration para instruir o Amazon S3 a remover os marcadores de exclusão do objeto expirado. Para ver um exemplo, consulte Remover marcadores de exclusão de objetos expirados em um bucket com versionamento habilitado.
Para ter mais informações, consulte Reter várias versões de objetos com o Versionamento 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 (entre 1 e 100). 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 elementoFilter
, o Amazon S3 gerará um erroInvalidRequest
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 aceitas. 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 (entre 1 e 100). 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 elementoFilter
, o Amazon S3 gerará um erroInvalidRequest
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 acidentalmentephoto.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 dephoto.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 permanentementephoto.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ção
AbortIncompleteMultipartUpload
: 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 peloprefix
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 Remover marcadores de exclusão de objetos expirados em um bucket com versionamento habilitado.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ções de ciclo de vida e estado de versionamento do bucket
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ção | Bucket sem versão (versionamento não ativado) | Bucket com versionamento ativado | Bucket com versionamento suspenso |
---|---|---|---|
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. |
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. |
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. |
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.