Exemplos de políticas de ciclo de vida no Amazon ECR
Veja a seguir exemplos de políticas de ciclo de vida mostrando a sintaxe.
Para ver mais informações sobre as propriedades da política, consulte Propriedades da política de ciclo de vida no Amazon ECR. Para obter instruções sobre como criar uma política de ciclo de vida usando a AWS CLI, consulte Como criar uma política de ciclo de vida (AWS CLI).
Modelo de política do ciclo de vida
O conteúdo da 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.
{
"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"
}
}
]
}
Filtrar pela idade da imagem
O exemplo a seguir mostra a sintaxe da política de ciclo de vida de uma política que expira imagens com uma etiqueta que começa com prod
usando um tagPatternList
de prod*
que também tenha mais de 14
dias.
{ "rules": [ { "rulePriority": 1, "description": "Expire images older than 14 days", "selection": { "tagStatus": "tagged", "tagPatternList": ["prod*"], "countType": "sinceImagePushed", "countUnit": "days", "countNumber": 14 }, "action": { "type": "expire" } } ] }
Filtrar pela contagem da imagem
O exemplo a seguir mostra a sintaxe de política de ciclo de vida para uma política que mantém apenas uma imagem não marcada e expira todas as outras.
{ "rules": [ { "rulePriority": 1, "description": "Keep only one untagged image, expire all others", "selection": { "tagStatus": "untagged", "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
Filtrar por várias regras
Os exemplos a seguir usam várias regras em uma política de ciclo de vida. São fornecidos um repositório e uma política de ciclo de vida de exemplo com uma explicação do resultado.
Exemplo A
Conteúdo do repositório:
-
Imagem A, Taglist: ["beta-1", "prod-1"], Enviada: 10 dias atrás
-
Imagem B, Taglist: ["beta-2", "prod-2"], Enviada: 9 dias atrás
-
Imagem C, Taglist: ["beta-3"], Enviada: 8 dias atrás
Texto da política de ciclo de vida:
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPatternList": ["prod*"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } }, { "rulePriority": 2, "description": "Rule 2", "selection": { "tagStatus": "tagged", "tagPatternList": ["beta*"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
A lógica dessa política de ciclo de vida seria:
-
A regra 1 identifica as imagens marcadas com o prefixo
prod
. Ela deve marcar imagens, começando com a mais antiga, até que haja uma ou menos imagem restante correspondente. Ela marca a imagem A para expiração. -
A regra 2 identifica as imagens marcadas com o prefixo
beta
. Ela deve marcar imagens, começando com a mais antiga, até que haja uma ou menos imagem restante correspondente. Ela marca as imagens A e B para expiração. No entanto, a imagem A já foi vista pela Regra 1 e se a imagem B fosse expirada, ela violaria a Regra. Portanto, é ignorada. -
Resultado: a imagem A é expirada.
Exemplo B
Este é o mesmo repositório do exemplo anterior mas a solicitação de prioridade de regra é alterada para ilustrar o resultado.
Conteúdo do repositório:
-
Imagem A, Taglist: ["beta-1", "prod-1"], Enviada: 10 dias atrás
-
Imagem B, Taglist: ["beta-2", "prod-2"], Enviada: 9 dias atrás
-
Imagem C, Taglist: ["beta-3"], Enviada: 8 dias atrás
Texto da política de ciclo de vida:
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPatternList": ["beta*"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } }, { "rulePriority": 2, "description": "Rule 2", "selection": { "tagStatus": "tagged", "tagPatternList": ["prod*"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
A lógica dessa política de ciclo de vida seria:
-
A regra 1 identifica as imagens marcadas com o prefixo
beta
. Ela deve marcar imagens, começando com a mais antiga, até que haja uma ou menos imagem restante correspondente. Ela vê todas as três imagens e marcaria as imagens A e B para expiração. -
A regra 2 identifica as imagens marcadas com o prefixo
prod
. Ela deve marcar imagens, começando com a mais antiga, até que haja uma ou menos imagem restante correspondente. A Regra 2 não veria nenhuma imagem porque todas as imagens disponíveis já teriam sido vistas pela Regra 1. Portanto, nenhuma imagem adicional seria marcada. -
Resultado: as imagens A e B são expiradas.
Filtrar por várias tags em uma única regra
Os seguintes exemplos especificam a sintaxe de política de ciclo de vida para vários padrões de etiqueta em uma única regra. São fornecidos um repositório e uma política de ciclo de vida de exemplo com uma explicação do resultado.
Exemplo A
Quando vários padrões de etiquetas são especificados em uma única regra, as imagens devem corresponder a todos os padrões de etiquetas listados.
Conteúdo do repositório:
-
Imagem A, Taglist: ["alpha-1"], Enviada: 12 dias atrás
-
Imagem B, Taglist: ["beta-1"], Enviada: 11 dias atrás
-
Imagem C, Taglist: ["alpha-2", "beta-2"], Enviada: 10 dias atrás
-
Imagem D, Taglist: ["alpha-3"], Enviada: 4 dias atrás
-
Imagem E, Taglist: ["beta-3"], Enviada: 3 dias atrás
-
Imagem F, Taglist: ["alpha-4", "beta-4"], Enviada: 2 dias atrás
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPatternList": ["alpha*", "beta*"], "countType": "sinceImagePushed", "countNumber": 5, "countUnit": "days" }, "action": { "type": "expire" } } ] }
A lógica dessa política de ciclo de vida seria:
-
A regra 1 identifica as imagens marcadas com o prefixo
alpha
ebeta
. Ela vê as imagens C e F. A Regra 1 deve marcar imagens que têm mais de cinco dias, que seria a imagem C. -
Resultado: a imagem C é expirada.
Exemplo B
O exemplo a seguir ilustra as tags que não são exclusivas.
Conteúdo do repositório:
-
Imagem A, Taglist: ["alpha-1", "beta-1", "gamma-1"], Enviada: 10 dias atrás
-
Imagem B, Taglist: ["alpha-2", "beta-2"], Enviada: 9 dias atrás
-
Imagem C, Taglist: ["alpha-3", "beta-3", "gamma-2"], Enviada: 8 dias atrás
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPatternList": ["alpha*", "beta*"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
A lógica dessa política de ciclo de vida seria:
-
A regra 1 identifica as imagens marcadas com o prefixo
alpha
ebeta
. Ela vê todas as imagens. Ela deve marcar imagens, começando com a mais antiga, até que haja uma ou menos imagem restante correspondente. E marca as imagens A e B para expiração. -
Resultado: as imagens A e B são expiradas.
Filtrar todas as imagens
Os exemplos de política de ciclo de vida a seguir especificam todas as imagens com filtros diferentes. São fornecidos um repositório e uma política de ciclo de vida de exemplo com uma explicação do resultado.
Exemplo A
O exemplo a seguir mostra a sintaxe de política de ciclo de vida para uma política que é aplicada a todas as regras, mas mantém apenas uma imagem e expira todas as outras.
Conteúdo do repositório:
-
Imagem A, Taglist: ["alpha-1"], Enviada: 4 dias atrás
-
Imagem B, Taglist: ["beta-1"], Enviada: 3 dias atrás
-
Imagem C, Taglist: [], Enviada: 2 dias atrás
-
Imagem D, Taglist: ["alpha-2"], Enviada: 1 dia atrás
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "any", "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
A lógica dessa política de ciclo de vida seria:
-
A regra 1 identifica todas as imagens. Ela visualiza as imagens A, B, C e. D. Deve expirar todas as imagens, exceto a mais recente. E marca as imagens A, B e C para expiração.
-
Resultado: as imagens A, B e C são expiradas.
Exemplo B
O exemplo a seguir ilustra uma política de ciclo de vida que combina todos os tipos de regra em uma única política.
Conteúdo do repositório:
-
Imagem A, Taglist: ["alpha-", "beta-1", "-1"], Enviada: 4 dias atrás
-
Imagem B, Taglist: [], Enviada: 3 dias atrás
-
Imagem C, Taglist: ["alpha-2"], Enviada: 2 dias atrás
-
Imagem D, Taglist: ["git hash"], Enviada: 1 dia atrás
-
Imagem E, Taglist: [], Enviada: 1 dia atrás
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPatternList": ["alpha*"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } }, { "rulePriority": 2, "description": "Rule 2", "selection": { "tagStatus": "untagged", "countType": "sinceImagePushed", "countUnit": "days", "countNumber": 1 }, "action": { "type": "expire" } }, { "rulePriority": 3, "description": "Rule 3", "selection": { "tagStatus": "any", "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
A lógica dessa política de ciclo de vida seria:
-
A regra 1 identifica as imagens marcadas com o prefixo
alpha
. Ela identifica as imagens A e C. Deve manter a imagem mais recente e marcar o restante para expiração. Ela marca a imagem A para expiração. -
A regra 2 identifica as imagens não marcadas. Ela identifica as imagens B e E. Deve marcar todas as imagens com mais de um dia para expiração. E marca a imagem B para expiração.
-
A regra 3 identifica todas as imagens. Ela identifica as imagens A, B, C, D e E. Deve manter a imagem mais recente e marcar o restante para expiração. No entanto, ela não pode marcar as imagens A, B, C ou E, pois elas foram identificadas por regras de maior prioridade. E marca a imagem D para expiração.
-
Resultado: as imagens A, B e D são expiradas.