Como o Amazon S3 lida com conflitos nas configurações do ciclo de vida
Geralmente, o ciclo de vida do Amazon S3 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 e S3 Glacier Deep Archive.
Quando você tem várias regras em uma configuração do ciclo de vida do S3, um objeto pode se tornar elegível para várias ações do ciclo de vida do S3 no mesmo dia. 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 é elegível para transição às classes S3 Glacier Flexible Retrieval e S3 Standard-IA (ou S3 One Zone-IA), o Amazon S3 escolhe a transição para a classe S3 Glacier Flexible Retrieval.
Exemplos de filtros sobrepostos e ações de ciclo de vida conflitantes
Você pode especificar uma configuração de ciclo de vida do S3 em que especifica prefixos ou ações sobrepostos. 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 configuração 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.