Políticas de ciclo de vida - Amazon ECR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Políticas de ciclo de vida

As políticas de ciclo de vida do Amazon ECR fornecem mais controle sobre o gerenciamento de ciclo de vida de imagens em um repositório privado. Uma política de ciclo de vida é um conjunto de uma ou mais regras em que cada regra define uma ação do Amazon ECR. Isso permite a automação da limpeza de imagens de suas imagens de contêiner por imagens com validade prestes a expirar baseadas em idade ou número. Você deve esperar que as imagens expirem dentro de 24 horas após atenderem aos critérios de expiração de acordo com sua política de ciclo de vida. Quando o Amazon ECR executa uma ação com base em uma política de ciclo de vida, ela é capturada como um evento no AWS CloudTrail. Para ter mais informações, consulte Registrar ações do Amazon ECR com AWS CloudTrail.

Como funcionam as políticas de ciclo

Uma política de ciclo de vida consiste em uma ou mais regras que determinam quais imagens em um repositório devem perder a validade. Ao considerar o uso de políticas de ciclo de vida, é importante usar a visualização da política de ciclo de vida para confirmar de quais imagens a política de ciclo de vida expira a validade antes de aplicá-la a um repositório. Depois que uma política de ciclo de vida é aplicada a um repositório, você deve esperar que as imagens expirem dentro de 24 horas após atenderem aos critérios de expiração. Quando o Amazon ECR executa uma ação com base em uma política de ciclo de vida, ela é capturada como um evento no AWS CloudTrail. Para ter mais informações, consulte Registrar ações do Amazon ECR com AWS CloudTrail.

nota

Se você estiver usando a replicação do Amazon ECR para fazer cópias de um repositório em diferentes regiões ou contas, tenha em mente que uma política de ciclo de vida pode realizar uma ação apenas em repositórios na região em que foi criada. Portanto, se você tiver a replicação ativada, convém criar uma política de ciclo de vida em cada região e conta para a qual estiver replicando os repositórios.

O diagrama a seguir mostra um fluxo de trabalho da política de ciclo de vida.

O diagrama mostra o processo de avaliação e aplicação de uma política de ciclo de vida.
  1. Crie uma ou mais regras de teste.

  2. Salve as regras de teste e execute a visualização.

  3. O avaliador de políticas de ciclo de vida percorre todas as regras e marca as imagens que cada regra afeta.

  4. Em seguida, o avaliador de políticas de ciclo de vida aplica as regras, com base na prioridade da regra, e exibe quais imagens no repositório estão definidas para expirar a validade.

  5. Revise os resultados do teste, certificando-se de que as imagens marcadas para expirar a validade são as que você pretendia.

  6. Aplique as regras de teste como política de ciclo de vida para o repositório.

  7. Depois que a política de ciclo de vida é criada, você deve esperar que as imagens expirem dentro de 24 horas após atenderem aos critérios de expiração.

Regras de avaliação de política de ciclo de vida

O avaliador da política de ciclo de vida é responsável por analisar o JSON de texto simples da política de ciclo de vida, avaliando todas as regras e aplicando essas regras com base na prioridade da regra às imagens no repositório. A seguir encontra-se a explicação mais detalhada da lógica do avaliador de políticas de ciclo de vida. Para ver exemplos, consulte Exemplos de políticas de ciclo de vida.

  • Todas as regras são avaliadas ao mesmo tempo, independentemente da prioridade da regra. Depois que todas as regras são avaliadas, elas são aplicadas com base na prioridade da regra.

  • Uma imagem é expirada por exatamente uma ou nenhuma regra.

  • Uma imagem que corresponde aos requisitos de marcação de uma regra não pode ser expirada por uma regra com uma prioridade inferior.

  • As regras nunca podem marcar imagens marcadas por regras de maior prioridade, mas ainda podem identificá-las como se não tivessem expirado.

  • O conjunto de regras deve conter um conjunto exclusivo de prefixos de tags.

  • Somente uma regra é permitida para selecionar imagens não marcadas.

  • Se uma imagem for referenciada por uma lista de manifestos, ela não poderá expirar sem que a lista de manifestos seja excluída primeiro.

  • A expiração é sempre solicitada por pushed_at_time e expira sempre as imagens mais antigas antes das mais novas.

  • Uma regra de política de ciclo de vida pode especificar um tagPatternList ou tagPrefixList, mas não ambos. Porém, uma política de ciclo de vida pode conter várias regras em que regras diferentes usam listas de padrões e prefixos.

  • Os parâmetros tagPatternList ou tagPrefixList apenas poderão ser usados se o tagStatus for tagged.

  • Ao usar tagPatternList, uma imagem será correspondida com êxito se corresponder ao filtro de curinga. Por exemplo, se um filtro de prod* for aplicado, ele corresponderá aos repositórios cujo nome começa com prod, como prod, prod1 ou production-team1. Da mesma maneira, se um filtro de *prod* for aplicado, ele corresponderá aos repositórios cujo nome contenha prod, como repo-production ou prod-team.

    Importante

    Existe um limite máximo de quatro curingas (*) por string. Por exemplo, ["*test*1*2*3", "test*1*2*3*"] é válido, mas ["test*1*2*3*4*5*6"] é inválido.

  • Ao usar tagPrefixList, uma imagem será correspondida com êxito se todas as tags no valor tagPrefixList corresponderem a qualquer tag da imagem.

  • O parâmetro countUnit só será usado se countType for sinceImagePushed.

  • Com countType = imageCountMoreThan, as imagens são classificadas das mais novas para as mais antigas com base em pushed_at_time e, em seguida, todas as imagens acima da contagem especificada são expiradas.

  • Com countType = sinceImagePushed, todas as imagens que tiverem o valor de pushed_at_time mais antigo do que o número de dias especificado com base em countNumber serão expiradas.

Modelo de política do ciclo de vida

O conteúdo da sua política de ciclo de vida é avaliado antes de ser associado a um repositório. Veja a seguir o modelo de sintaxe JSON de política de ciclo de vida. Para ver exemplos de política do ciclo de vida, consulte Exemplos de políticas de ciclo de vida.

{ "rules": [ { "rulePriority": integer, "description": "string", "selection": { "tagStatus": "tagged"|"untagged"|"any", "tagPatternList": list<string>, "tagPrefixList": list<string>, "countType": "imageCountMoreThan"|"sinceImagePushed", "countUnit": "string", "countNumber": integer }, "action": { "type": "expire" } } ] }

Parâmetros de política do ciclo de vida

As políticas de ciclo de vida são divididas nas partes a seguir:

Prioridade das regras

rulePriority

Tipo: inteiro

Obrigatório: sim

Define a ordem em que as regras são avaliadas, da menor para a maior. Uma regra de política de ciclo de vida com prioridade 1 será aplicada em primeiro lugar, uma regra com prioridade 2 será a próxima, e assim por diante. Ao adicionar regras a uma política de ciclo de vida, você deve dar a elas um valor exclusivo para rulePriority. Os valores não precisam ser sequenciais entre regras em uma política. Uma regra com um valor tagStatus de any deve ter o valor o mais alto para rulePriority e ser avaliada por último.

Descrição

description

Tipo: string

Obrigatório: não

(Opcional) Descreve a finalidade de uma regra em uma política de ciclo de vida.

Status da tag

tagStatus

Tipo: string

Obrigatório: sim

Determina se a regra da política de ciclo de vida que você está adicionando especifica uma tag para uma imagem. As opções aceitáveis são tagged, untagged ou any. Se você especificar any, todas as regras serão avaliadas segundo a regra Se você especificar tagged, você também deverá especificar um valor tagPrefixList. Se você especificar untagged, você deverá omitir tagPrefixList.

Lista de padrões de etiquetas

tagPatternList

Tipo: list[string]

Obrigatório: sim, se tagStatus estiver definido como marcado e se tagPrefixList não for especificado

Ao criar uma política de ciclo de vida para imagens marcadas, uma prática recomendada é usar um tagPatternList para especificar as etiquetas que expirarão. Você especifica uma lista separada por vírgulas de padrões de etiquetas de imagem que podem conter curingas (*) sobre os quais agir com sua política de ciclo de vida. Por exemplo, se suas imagens forem marcadas como prod, prod1, prod2 e assim por diante, você deve usar a lista de padrões de etiquetas prod* para especificá-las. Se você especificar várias tags, apenas imagens com todas as tags especificadas serão selecionadas.

Importante

Existe um limite máximo de quatro curingas (*) por string. Por exemplo, ["*test*1*2*3", "test*1*2*3*"] é válido, mas ["test*1*2*3*4*5*6"] é inválido.

Lista de prefixos de tags

tagPrefixList

Tipo: list[string]

Obrigatório: sim, se tagStatus estiver definido como marcado e se tagPatternList não for especificado

Usado somente se você tiver especificado "tagStatus": "tagged" e não estiver especificando tagPatternList. Você deve especificar uma lista separada por vírgulas de prefixos de tags de imagem na qual agir com política de ciclo de vida. Por exemplo, se suas imagens forem marcadas como prod, prod1, prod2 e assim por diante, você deve usar o prefixo de tag prod para especificá-las. Se você especificar várias tags, apenas imagens com todas as tags especificadas serão selecionadas.

Tipo de contagem

countType

Tipo: sequência

Obrigatório: sim

Especifique um tipo de contagem a ser aplicado às imagens.

Se countType for definido como imageCountMoreThan, você também especificará countNumber para criar uma regra que define um limite no número de imagens que existem no repositório. Se countType for definido como sinceImagePushed, você também especificará countUnit e countNumber para especificar um limite de tempo nas imagens que existem no repositório.

Unidade de contagem

countUnit

Tipo: sequência

Exigido: sim, somente se countType for definido como sinceImagePushed

Especifique uma unidade de contagem de days para indicar como a unidade de tempo, além de countNumber, que é o número de dias.

Isso só deverá ser especificado quando countType for sinceImagePushed; um erro ocorrerá se você especificar uma unidade de contagem quando countType for qualquer outro valor.

Contagem numérica

countNumber

Tipo: inteiro

Obrigatório: sim

Especifique um número de contagem. Os valores aceitáveis são inteiros positivos (0 não é um valor aceito).

Se o countType usado for imageCountMoreThan, o valor será o número máximo de imagens que você deseja manter no repositório. Se o countType usado for sinceImagePushed, o valor será o limite de idade máximo das imagens.

Ação

type

Tipo: string

Obrigatório: sim

Especifique um tipo de ação. O valor suportado é expire.