Exemplos de configuração do S3 Lifecycle - Amazon Simple Storage Service

Exemplos de configuração do S3 Lifecycle

Esta seção fornece exemplos de configuração do ciclo de vida do S3. Cada exemplo mostra como você pode especificar o XML em cada um dos cenários de exemplo.

Exemplo 1: Especificar um filtro

Cada regra do S3 Lifecycle inclui um filtro que pode ser usado para identificar um subconjunto de objetos em seu bucket ao qual a regra do S3 Lifecycle se aplica. As configurações de ciclo de vida do S3 a seguir mostram exemplos de como você pode especificar um filtro.

  • Nesta regra de configuração do S3 Lifecycle, o filtro especifica um prefixo das chaves (tax/). Portanto, a regra aplica-se a objetos com o prefixo de nome de chave tax/, como tax/doc1.txt e tax/doc2.txt.

    A regra especifica duas ações que direcionam o Amazon S3 a fazer o seguinte:

    • Faça a transição de objetos para a classe de armazenamento S3 Glacier Flexible Retrieval 365 dias (um ano) após a criação.

    • Exclua objetos (a ação Expiration) 3.650 dias (10 anos) após a criação.

    <LifecycleConfiguration> <Rule> <ID>Transition and Expiration Rule</ID> <Filter> <Prefix>tax/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>365</Days> <StorageClass>S3 Glacier Flexible Retrieval</StorageClass> </Transition> <Expiration> <Days>3650</Days> </Expiration> </Rule> </LifecycleConfiguration>

    Em vez de especificar a idade do objeto em termos de dias após a criação, você pode especificar uma data para cada ação. No entanto, você não pode usar Date e Days na mesma regra.

  • Se você quiser que a regra do S3 Lifecycle se aplique a todos os objetos no bucket, especifique um prefixo vazio. Na configuração a seguir, a regra especifica uma ação Transition que direciona o Amazon S3 para fazer a transição de objetos para a classe de armazenamento S3 Glacier Flexible Retrieval 0 dia após a criação. Essa regra significa que os objetos estão qualificados para arquivamento no Amazon S3 Glacier à meia-noite (UTC) após a criação. Para obter mais informações sobre restrições de ciclo de vida, consulte Restrições.

    <LifecycleConfiguration> <Rule> <ID>Archive all object same-day upon creation</ID> <Filter> <Prefix></Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>0</Days> <StorageClass>S3 Glacier Flexible Retrieval</StorageClass> </Transition> </Rule> </LifecycleConfiguration>
  • Você pode especificar zero ou um prefixo de nome de chave ou zero ou mais tags de objeto em um filtro. O exemplo de código a seguir aplica a regra do S3 Lifecycle a um subconjunto de objetos com prefixo das chaves tax/ e a objetos que têm duas etiquetas com uma chave e um valor específicos. Ao especificar mais de um filtro, você deve incluir o elemento <And> conforme mostrado (o Amazon S3 aplica um elemento AND lógico para combinar as condições de filtro especificadas).

    ... <Filter> <And> <Prefix>tax/</Prefix> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> </And> </Filter> ...

  • Você pode filtrar objetos com base apenas nas tags. Por exemplo, a regra do S3 Lifecycle a seguir aplica-se a objetos que tenham duas etiquetas especificadas (não especifica nenhum prefixo).

    ... <Filter> <And> <Tag> <Key>key1</Key> <Value>value1</Value> </Tag> <Tag> <Key>key2</Key> <Value>value2</Value> </Tag> </And> </Filter> ...

Importante

Quando você tem várias regras em uma configuração do S3 Lifecycle, um objeto pode se tornar qualificado para várias ações do S3 Lifecycle. Nesses casos, o Amazon S3 segue estas regras gerais:

  • A exclusão permanente tem precedência sobre a transição.

  • A transição tem precedência sobre a criação de marcadores de exclusão.

  • Quando um objeto está qualificado para uma transição S3 Glacier Flexible Retrieval e S3 Standard – IA (ou S3 One Zone – IA), o Amazon S3 escolhe a transição do S3 Glacier Flexible Retrieval.

Para ver exemplos, consulte Exemplo 5: sobreposição de filtros, ações de ciclo de vida conflitantes e o que o Amazon S3 faz com buckets sem versionamento.

Exemplo 2: desabilitar uma regra do Lifecycle

Você pode desabilitar temporariamente uma regra do S3 Lifecycle. A configuração do S3 Lifecycle a seguir especifica duas regras:

  • Na regra 1, o Amazon S3 faz a transição de objetos com o prefixo logs/ para a classe de armazenamento S3 Glacier Flexible Retrieval logo após a criação.

  • Na regra 2, o Amazon S3 faz a transição de objetos com o prefixo documents/ para a classe de armazenamento S3 Glacier Flexible Retrieval logo após a criação.

Na política, a regra 1 é habilitada e a regra 2 é desabilitada. O Amazon S3 ignora regras desabilitadas.

<LifecycleConfiguration> <Rule> <ID>Rule1</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>0</Days> <StorageClass>S3 Glacier Flexible Retrieval</StorageClass> </Transition> </Rule> <Rule> <ID>Rule2</ID> <Prefix>documents/</Prefix> <Status>Disabled</Status> <Transition> <Days>0</Days> <StorageClass>S3 Glacier Flexible Retrieval</StorageClass> </Transition> </Rule> </LifecycleConfiguration>

Exemplo 3: Rebaixar uma classe de armazenamento pela duração do ciclo de vida de um objeto

Neste exemplo, você usa a configuração do S3 Lifecycle para rebaixar a classe de armazenamento de objetos pela sua vida útil. O rebaixamento pode ajudar a reduzir os custos de armazenamento. Para obter mais informações sobre a definição de preços, consulte Definição de preços do Amazon S3.

A configuração do S3 Lifecycle a seguir especifica uma regra que se aplica a objetos com o prefixo de nome de chave logs/. A regra especifica as seguintes ações:

  • Duas ações de transição:

    • Transição de objetos para a classe de armazenamento S3 Standard – IA 30 dias após a criação.

    • Faça a transição de objetos para a classe de armazenamento S3 Glacier Flexible Retrieval 90 dias após a criação.

  • Uma ação de expiração que leva o Amazon S3 a excluir esses objetos um ano após a criação.

<LifecycleConfiguration> <Rule> <ID>example-id</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>30</Days> <StorageClass>STANDARD_IA</StorageClass> </Transition> <Transition> <Days>90</Days> <StorageClass>GLACIER</StorageClass> </Transition> <Expiration> <Days>365</Days> </Expiration> </Rule> </LifecycleConfiguration>
nota

Você pode usar uma regra para descrever todas as ações do S3 Lifecycle se todas as ações se aplicarem ao mesmo conjunto de objetos (identificados pelo filtro). Caso contrário, você pode adicionar várias regras com cada uma especificando um filtro diferente.

Exemplo 4: Especificar várias regras

Você pode especificar várias regras se quiser diferentes ações do S3 Lifecycle de diferentes objetos. A configuração do S3 Lifecycle a seguir tem duas regras:

  • A regra 1 se aplica a objetos com prefixo de nome de chave classA/. Com ela, o Amazon S3 faz a transição de objetos para a classe de armazenamento S3 Glacier Flexible Retrieval um ano após a criação e expira esses objetos dez anos após a criação.

  • A regra 2 se aplica a objetos com prefixo de nome de chave classB/. Ela direciona o Amazon S3 para fazer a transição de objetos para a classe de armazenamento S3 Standard – IA 90 dias após a criação e excluí-los um ano após a criação.

<LifecycleConfiguration> <Rule> <ID>ClassADocRule</ID> <Filter> <Prefix>classA/</Prefix> </Filter> <Status>Enabled</Status> <Transition>       <Days>365</Days>       <StorageClass>GLACIER</StorageClass>     </Transition> <Expiration> <Days>3650</Days> </Expiration> </Rule> <Rule> <ID>ClassBDocRule</ID> <Filter> <Prefix>classB/</Prefix> </Filter> <Status>Enabled</Status> <Transition>       <Days>90</Days>       <StorageClass>STANDARD_IA</StorageClass>     </Transition> <Expiration> <Days>365</Days> </Expiration> </Rule> </LifecycleConfiguration>

Exemplo 5: sobreposição de filtros, ações de ciclo de vida conflitantes e o que o Amazon S3 faz com buckets sem versionamento

Você pode especificar uma configuração de ciclo de vida do S3 em que especifica prefixos ou ações sobrepostos.

Geralmente, o S3 Lifecycle otimiza o custo. Por exemplo, se duas políticas de expiração se sobrepuserem, a mais curta será honrada para que os dados não sejam armazenados por mais tempo do que o esperado. Do mesmo modo, se duas políticas de transição se sobrepuserem, o ciclo de vida do S3 irá fazer a transição dos seus objetos para a classe de armazenamento de menor custo.

Nos dois casos, o ciclo de vida do S3 tenta escolher o caminho com menos custo para você. Uma exceção a essa regra geral é com a classe de armazenamento S3 Intelligent-Tiering. O S3 Intelligent-Tiering é favorecido pelo ciclo de vida do S3 em qualquer classe de armazenamento, além das classes de armazenamento S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive.

Os exemplos a seguir mostram como o Amazon S3 resolve possíveis conflitos.

exemplo 1: prefixos sobrepostos (nenhum conflito)

O exemplo de configuração a seguir tem duas regras especificando prefixos sobrepostos da seguinte maneira:

  • A primeira regra especifica um filtro vazio, indicando todos os objetos no bucket.

  • A segunda regra especifica um prefixo de nome de chave (logs/) indicando somente um subconjunto de objetos.

A Regra 1 solicita que o Amazon S3 exclua todos os objetos um ano após a criação. A Regra 2 solicita que o Amazon S3 faça a transição de um subconjunto de objetos para a classe de armazenamento do S3 Standard – IA 30 dias após a criação.

<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> </Filter> <Status>Enabled</Status> <Expiration> <Days>365</Days> </Expiration> </Rule> <Rule> <ID>Rule 2</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>STANDARD_IA<StorageClass> <Days>30</Days> </Transition> </Rule> </LifecycleConfiguration>

Como não há conflito nesse caso, o Amazon S3 fará a transição dos objetos com o prefixo logs/ para a classe de armazenamento S3 Standard – IA 30 dias após a criação. Ao atingir um ano após a criação, qualquer objeto será excluído.

exemplo 2: ações de ciclo de vida conflitantes

Nesta configuração de exemplo, há duas regras que levam o Amazon S3 a executar ao mesmo tempo duas diferentes ações no mesmo conjunto de objetos na vida útil do objeto:

  • Ambas as regras especificam o mesmo prefixo de nome de chave, de modo que ambas as regras se aplicam ao mesmo conjunto de objetos.

  • Ambas as regras especificam os mesmos 365 dias após a criação de objeto quando as regras se aplicam.

  • Uma regra leva o Amazon S3 a fazer a transição de objetos para a classe de armazenamento S3 Standard – IA e outra regra quer que o Amazon S3 expire os objetos ao mesmo tempo.

<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Expiration> <Days>365</Days> </Expiration> </Rule> <Rule> <ID>Rule 2</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>STANDARD_IA<StorageClass> <Days>365</Days> </Transition> </Rule> </LifecycleConfiguration>

Nesse caso, como você deseja que os objetos percam a validade (sejam removidos), não faz sentido mudar a classe de armazenamento, então o Amazon S3 simplesmente escolhe a ação de validade desses objetos.

exemplo 3: prefixos sobrepostos que resultam em ações de ciclo de vida conflitantes

Neste exemplo, a configuração tem duas regras, que especificam prefixos sobrepostos da seguinte maneira:

  • A regra 1 especifica um prefixo vazio (indicando todos os objetos).

  • A regra 2 especifica um prefixo de nome de chave (logs/) que identifica um subconjunto de todos os objetos.

Para o subconjunto de objetos com o prefixo de nome de chave logs/, as ações do S3 Lifecycle em ambas as regras se aplicam. Uma regra direciona o Amazon S3 a fazer a transição de objetos dez dias após a criação, e outra regra direciona o Amazon S3 a fazer a transição de objetos 365 dias após a criação.

<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> <Prefix></Prefix> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>STANDARD_IA<StorageClass> <Days>10</Days> </Transition> </Rule> <Rule> <ID>Rule 2</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>STANDARD_IA<StorageClass> <Days>365</Days> </Transition> </Rule> </LifecycleConfiguration>

Nesse caso, o Amazon S3 escolhe fazer a transição dos objetos 10 dias após a criação.

exemplo 4: filtragem baseada em tags e ações de ciclo de vida conflitantes resultantes

Suponha que você tenha a seguinte política de ciclo de vida do S3 que tem duas regras, cada uma especificando um filtro de tag:

  • A regra 1 especifica um filtro baseado em tag (tag1/value1). Essa regra direciona o Amazon S3 para fazer a transição de objetos para a classe de armazenamento S3 Glacier Flexible Retrieval 365 dias após a criação.

  • A regra 2 especifica um filtro baseado em tag (tag2/value2). Essa regra leva o Amazon S3 a expirar objetos 14 dias após a criação.

A configuração do S3 Lifecycle é apresentada como a seguir.

<LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> <Tag> <Key>tag1</Key> <Value>value1</Value> </Tag> </Filter> <Status>Enabled</Status> <Transition> <StorageClass>GLACIER<StorageClass> <Days>365</Days> </Transition> </Rule> <Rule> <ID>Rule 2</ID> <Filter> <Tag> <Key>tag2</Key> <Value>value2</Value> </Tag> </Filter> <Status>Enabled</Status> <Expiration> <Days>14</Days> </Expiration> </Rule> </LifecycleConfiguration>

Se um objeto tiver as duas etiquetas, o Amazon S3 precisará decidir qual regra seguir. Nesse caso, o Amazon S3 expira o objeto 14 dias após a criação. O objeto é removido e, portanto, a ação de transição não é aplicada.

Exemplo 6: Especificar uma regra de ciclo de vida para um bucket com versionamento habilitado

Suponha que você tenha um bucket com versionamento habilitado, ou seja, para cada objeto, há uma versão atual e zero ou mais versões desatualizadas. (Para obter mais informações sobre o versionamento do S3, consulte Usando o versionamento em buckets do S3.) Neste exemplo, você deseja manter o equivalente a um ano de histórico e excluir as versões desatualizadas. As configurações do S3 Lifecycle permitem manter de 1 a 100 versões de qualquer objeto.

Para economizar em custos de armazenamento, você deseja migrar as versões desatualizadas para o S3 Glacier Flexible Retrieval 30 dias depois de se tornarem desatualizadas (supondo que sejam dados frios, que você não precisa acessar em tempo real). Além disso, você espera que a frequência de acesso das versões atuais diminua 90 dias após a criação, podendo optar por mover esses objetos para a classe de armazenamento S3 Standard – IA.

<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Filter> <Prefix></Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>90</Days> <StorageClass>STANDARD_IA</StorageClass> </Transition> <NoncurrentVersionTransition> <NoncurrentDays>30</NoncurrentDays> <StorageClass>S3 Glacier Flexible Retrieval</StorageClass> </NoncurrentVersionTransition> <NoncurrentVersionExpiration> <NewerNoncurrentVersions>5</NewerNoncurrentVersions> <NoncurrentDays>365</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>

Exemplo 7: Remover marcadores de exclusão de objetos expirados

Um bucket com versionamento habilitado mantém uma versão atual e nenhuma ou mais versões desatualizadas de cada objeto. Ao excluir um objeto, observe o seguinte:

  • Se você não especificar um ID de versão na solicitação de exclusão, o Amazon S3 adicionará um marcador de exclusão em vez de excluir o objeto. A versão atual do objeto se torna desatualizada, e o marcador de exclusão se torna a versão atual.

  • Se você não especificar um ID de versão na solicitação de exclusão, o Amazon S3 excluirá permanentemente a versão do objeto (um marcador de exclusão não é criado).

  • Um marcador de exclusão sem versões desatualizadas é chamado de marcador de exclusão do objeto expirado.

Este exemplo mostra um cenário que pode criar marcadores de exclusão de objetos expirados em seu bucket e como você pode usar a configuração de ciclo de vida do S3 para que o Amazon S3 remova os marcadores de exclusão de objetos expirados.

Suponha que você elabore uma política do S3 Lifecycle que use a ação NoncurrentVersionExpiration para remover as versões desatualizadas 30 dias após se tornarem desatualizadas e retenha até dez versões desatualizadas, como mostrado a seguir.

<LifecycleConfiguration> <Rule> ... <NoncurrentVersionExpiration> <NewerNoncurrentVersions>10</NewerNoncurrentVersions> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>

A ação NoncurrentVersionExpiration não se aplica às versões de objeto atuais. Ela remove apenas versões desatualizadas.

Para versões atuais do objeto, existem as opções abaixo para gerenciar o ciclo de vida. Tudo vai depender de as versões atuais seguirem um ciclo de vida bem definido:

  • As versões atuais do objeto seguem um ciclo de vida bem definido.

    Neste caso, você pode usar a política do S3 Lifecycle com a ação Expiration para que o Amazon S3 remova as versões atuais, conforme exibido no exemplo a seguir.

    <LifecycleConfiguration> <Rule> ... <Expiration> <Days>60</Days> </Expiration> <NoncurrentVersionExpiration> <NewerNoncurrentVersions>10</NewerNoncurrentVersions> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>

    Neste exemplo, o Amazon S3 remove as versões atuais 60 dias após serem criadas adicionando um marcador de exclusão para cada uma das versões atuais do objeto. Esse processo torna a versão atual do objeto desatualizada, e o marcador de exclusão torna-se a versão atual. Para mais informações, consulte Usando o versionamento em buckets do S3.

    nota

    Não é possível especificar uma etiqueta Days e uma ExpiredObjectDeleteMarker na mesma regra. Com a especificação da etiqueta Days, o Amazon S3 executará automaticamente a limpeza ExpiredObjectDeleteMarker assim que os marcadores de exclusão tiverem idade suficiente para satisfazer os critérios de idade. Para limpar marcadores de exclusão assim que eles se tornarem a única versão, crie uma regra separada contendo apenas a etiqueta ExpiredObjectDeleteMarker.

    A ação NoncurrentVersionExpiration na mesma configuração do S3 Lifecycle remove os objetos desatualizados 30 dias após se tornarem desatualizados. Assim, neste exemplo, todas as versões de objeto são permanentemente removidas 90 dias após a criação do objeto. Embora marcadores de exclusão de objetos expirados sejam criados durante esse o processo, o Amazon S3 detecta e remove os marcadores de exclusão de objetos expirados para você.

  • As versões atuais do objeto não têm um ciclo de vida bem definido.

    Neste caso, convém remover os objetos manualmente quando não forem mais necessários criando um marcador de exclusão com uma ou mais versões desatualizadas. Se a configuração do S3 Lifecycle com a ação NoncurrentVersionExpiration remover todas as versões desatualizadas, agora você terá marcadores de exclusão de objetos expirados.

    Especificamente para este cenário, a configuração do S3 Lifecycle fornece uma ação Expiration que você pode usar para remover os marcadores de exclusão de objetos expirados.

    <LifecycleConfiguration> <Rule> <ID>Rule 1</ID> <Filter> <Prefix>logs/</Prefix> </Filter> <Status>Enabled</Status> <Expiration> <ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker> </Expiration> <NoncurrentVersionExpiration> <NewerNoncurrentVersions>10</NewerNoncurrentVersions> <NoncurrentDays>30</NoncurrentDays> </NoncurrentVersionExpiration> </Rule> </LifecycleConfiguration>

Ao definir o elemento ExpiredObjectDeleteMarker como true na ação Expiration, você faz o Amazon S3 remover os marcadores de exclusão de objetos expirados.

nota

Ao usar a ação ExpiredObjectDeleteMarker do S3 Lifecycle, a regra não pode especificar um filtro baseado em etiqueta.

Exemplo 8: Configuração de ciclo de vida para anular multipart uploads

Você pode usar as operações de API REST de carregamento fracionado do Amazon S3 para carregar objetos grandes em partes. Para obter mais informações sobre multipart uploads, consulte Carregar e copiar objetos usando multipart upload.

Usando a configuração do S3 Lifecycle, você pode levar o Amazon S3 a interromper carregamentos fracionados incompletos (identificados pelo prefixo de nome de chave especificado na regra) se eles não forem concluídos em um número especificado de dias após a inicialização. Ao interromper um carregamento fracionado, o Amazon S3 exclui todas as partes associadas ao carregamento fracionado. Esse processo ajuda a controlar os custos de armazenamento, garantindo que você não tenha carregamentos fracionados incompletos com partes que estão armazenadas no Amazon S3.

nota

Ao usar a ação AbortIncompleteMultipartUpload do S3 Lifecycle, a regra não pode especificar um filtro baseado em etiqueta.

Veja a seguir um exemplo de configuração de ciclo de vida do S3 que especifica uma regra com a ação AbortIncompleteMultipartUpload. Essa ação solicita que o Amazon S3 interrompa carregamentos fracionados incompletos sete dias após a inicialização.

<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Filter> <Prefix>SomeKeyPrefix/</Prefix> </Filter> <Status>rule-status</Status> <AbortIncompleteMultipartUpload> <DaysAfterInitiation>7</DaysAfterInitiation> </AbortIncompleteMultipartUpload> </Rule> </LifecycleConfiguration>

Exemplo 9: configuração do ciclo de vida usando regras baseadas em tamanho

É possível criar regras que fazem a transição de objetos com base somente no tamanho. Você pode especificar um tamanho mínimo (ObjectSizeGreaterThan), um tamanho máximo (ObjectSizeLessThan) ou um intervalo de tamanhos de objeto em bytes. Ao usar mais de um filtro, como prefixo e regra de tamanho, é necessário quebrar os filtros em um elemento <And>.

<LifecycleConfiguration> <Rule> <ID>Transition with a prefix and based on size</ID> <Filter> <And> <Prefix>tax/</Prefix> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> </And> </Filter> <Status>Enabled</Status> <Transition> <Days>365</Days> <StorageClass>S3 Glacier Flexible Retrieval</StorageClass> </Transition> </Rule> </LifecycleConfiguration>

Se você especificar um intervalo usando os elementos ObjectSizeGreaterThan e ObjectSizeLessThan, o tamanho máximo do objeto deverá ser maior que o tamanho mínimo do objeto. 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> ... <And> <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan> <ObjectSizeLessThan>64000</ObjectSizeLessThan> </And> </Rule> </LifecycleConfiguration>