Ejemplos de políticas de ciclo de vida en Amazon ECR
A continuación, se muestran ejemplos de políticas de ciclo de vida con su sintaxis.
Para obtener más información acerca de las propiedades de las políticas, consulte Propiedades de la política de ciclo de vida en Amazon ECR. Para obtener instrucciones acerca de cómo crear una política de ciclo de vida mediante AWS CLI, consulte Creación de una política de ciclo de vida (AWS CLI).
Plantilla de política de ciclo de vida
El contenido de la política de ciclo de vida se evalúa antes de asociarse a un repositorio. A continuación, se muestra la plantilla de sintaxis JSON de la 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 por antigüedad de las imágenes
En el siguiente ejemplo, se muestra la sintaxis de la política de ciclo de vida de una política que crea el vencimiento de las imágenes con una etiqueta que comienza con prod
al usar una tagPatternList
de prod*
que también tienen más de 14
días.
{ "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 por el número de imágenes
En el siguiente ejemplo se muestra la sintaxis de una política de ciclo de vida que conserva solo una imagen sin etiquetar y marca para vencimiento todas las demás:
{ "rules": [ { "rulePriority": 1, "description": "Keep only one untagged image, expire all others", "selection": { "tagStatus": "untagged", "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
Filtrar por varias reglas
El siguiente ejemplo usa varias reglas en una política de ciclo de vida. Se ofrece un repositorio de ejemplo y una política de ciclo de vida con una explicación del resultado.
Ejemplo A
Contenido del repositorio:
-
Imagen A, lista de etiquetas: ["beta-1", "prod-1"], insertada: hace 10 días
-
Imagen B, lista de etiquetas: ["beta-2", "prod-2"], insertada: hace 9 días
-
Imagen C, lista de etiquetas: ["beta-3"], insertada: hace 8 días
Texto de la 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" } } ] }
La lógica de esta política de vida sería:
-
La regla 1 identifica las imágenes etiquetadas con el prefijo
prod
. Debería marcar las imágenes, empezando por la más antigua, hasta que queden una o menos imágenes. Marca la imagen A para vencimiento. -
La regla 2 identifica las imágenes etiquetadas con el prefijo
beta
. Debería marcar las imágenes, empezando por la más antigua, hasta que queden una o menos imágenes. Marca la imagen A y la imagen B para vencimiento. Sin embargo, la imagen A ya ha sido identificada por la regla 1 y, si la imagen B se marcara para vencimiento, se infringiría la regla 1, por lo que se omite. -
Resultado: la imagen A se marca para vencimiento
Ejemplo B
Este es el mismo repositorio que el del ejemplo anterior, pero se ha cambiado el orden de prioridad de las reglas para ilustrar el resultado.
Contenido del repositorio:
-
Imagen A, lista de etiquetas: ["beta-1", "prod-1"], insertada: hace 10 días
-
Imagen B, lista de etiquetas: ["beta-2", "prod-2"], insertada: hace 9 días
-
Imagen C, lista de etiquetas: ["beta-3"], insertada: hace 8 días
Texto de la 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" } } ] }
La lógica de esta política de vida sería:
-
La regla 1 identifica las imágenes etiquetadas con el prefijo
beta
. Debería marcar las imágenes, empezando por la más antigua, hasta que queden una o menos imágenes. Se identifican las tres imágenes, y la imagen A y la imagen B se marcan para vencimiento. -
La regla 2 identifica las imágenes etiquetadas con el prefijo
prod
. Debería marcar las imágenes, empezando por la más antigua, hasta que queden una o menos imágenes. No se identifica ninguna imagen porque todas las imágenes disponibles ya han sido identificadas por la regla 1, por lo que no se marcan imágenes adicionales. -
Resultado: la imagen A y la imagen B se marcan para vencimiento.
Filtrar por varias etiquetas en una sola regla
Los siguientes ejemplos especifican la sintaxis de la política de ciclo de vida para varios patrones de etiqueta en una sola regla. Se ofrece un repositorio de ejemplo y una política de ciclo de vida con una explicación del resultado.
Ejemplo A
Cuando se especifican varios patrones de etiqueta en una sola regla, las imágenes deben coincidir con todos los patrones de etiqueta especificados.
Contenido del repositorio:
-
Imagen A, lista de etiquetas: ["alpha-1"], insertada: hace 12 días
-
Imagen B, lista de etiquetas: ["beta-1"], insertada: hace 11 días
-
Imagen C, lista de etiquetas: ["alpha-2", "beta-2"], insertada: hace 10 días
-
Imagen D, lista de etiquetas: ["alpha-3"], insertada: hace 4 días
-
Imagen E, lista de etiquetas: ["beta-3"], insertada: hace 3 días
-
Imagen F, lista de etiquetas: ["alpha-4", "beta-4"], insertada: hace 2 días
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPatternList": ["alpha*", "beta*"], "countType": "sinceImagePushed", "countNumber": 5, "countUnit": "days" }, "action": { "type": "expire" } } ] }
La lógica de esta política de vida sería:
-
La regla 1 identifica las imágenes etiquetadas con el prefijo
alpha
ybeta
. Se identifican las imágenes C y F y se marcan las imágenes que tienen más de cinco días (la imagen C). -
Resultado: la imagen C se marca para vencimiento
Ejemplo B
El ejemplo siguiente ilustra que las etiquetas no son exclusivas.
Contenido del repositorio:
-
Imagen A, lista de etiquetas: ["alpha-1", "beta-1", "gamma-1"], insertada: hace 10 días
-
Imagen B, lista de etiquetas: ["alpha-2", "beta-2"], insertada: hace 9 días
-
Imagen C, lista de etiquetas: ["alpha-3", "beta-3", "gamma-2"], insertada: hace 8 días
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPatternList": ["alpha*", "beta*"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
La lógica de esta política de vida sería:
-
La regla 1 identifica las imágenes etiquetadas con el prefijo
alpha
ybeta
. Se identifican todas las imágenes. Debería marcar las imágenes, empezando por la más antigua, hasta que queden una o menos imágenes. Se marcan la imagen A y la imagen B para vencimiento. -
Resultado: la imagen A y la imagen B se marcan para vencimiento.
Filtrar por todas las imágenes
Los siguientes ejemplos de políticas de ciclo de vida especifican todas las imágenes con filtros distintos. Se ofrece un repositorio de ejemplo y una política de ciclo de vida con una explicación del resultado.
Ejemplo A
A continuación, se muestra la sintaxis de una política de ciclo de vida que se aplica a todas las reglas propiedad conserva solo una imagen sin etiquetar y marca para vencimiento todas las demás.
Contenido del repositorio:
-
Imagen A, lista de etiquetas: ["alpha-1"], insertada: hace 4 días
-
Imagen B, lista de etiquetas: ["beta-1"], insertada: hace 3 días
-
Imagen C, lista de etiquetas: [], insertada: hace 2 días
-
Imagen D, lista de etiquetas: ["alpha-2"], insertada: hace 1 día
{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "any", "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }
La lógica de esta política de vida sería:
-
La regla 1 identifica todas las imágenes. Detecta las imágenes A, B, C y D. Debe marcar para vencimiento todas las imágenes excepto la más reciente. Marca las imágenes A, B y C para vencimiento.
-
Resultado: las imágenes A, B y C están vencidas.
Ejemplo B
El siguiente ejemplo ilustra una política de ciclo de vida que combina todos los tipos de reglas en una sola política.
Contenido del repositorio:
-
Imagen A, lista de etiquetas: ["alpha-1", "beta-1"], insertada: hace 4 días
-
Imagen B, lista de etiquetas: [], insertada: hace 3 días
-
Imagen C, lista de etiquetas: ["alpha-2"], insertada: hace 2 días
-
Imagen D, lista de etiquetas: ["git hash"], insertada: hace 1 día
-
Imagen E, lista de etiquetas: [], insertada: hace 1 día
{ "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" } } ] }
La lógica de esta política de vida sería:
-
La regla 1 identifica las imágenes etiquetadas con el prefijo
alpha
. Identifica las imágenes A y C. Debe mantener la imagen más reciente y marcar el resto para vencimiento. Marca la imagen A para vencimiento. -
La regla 2 identifica las imágenes sin etiquetar. Identifica las imágenes B y E. Debe marcar todas las imágenes anteriores a un día para vencimiento. Marca la imagen B para vencimiento.
-
La regla 3 identifica todas las imágenes. Identifica las imágenes A, B, C, D y E. Debe mantener la imagen más reciente y marcar el resto para vencimiento. Sin embargo, no puede marcar las imágenes A, B, C o E porque se identificaron con reglas de mayor prioridad. Marca la imagen D para vencimiento.
-
Resultado: las imágenes A, B y D están vencidas.