生命周期策略的示例 - Amazon ECR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

生命周期策略的示例

以下是示例生命周期策略,其中显示了语法。

根据图像年龄进行过滤

以下示例显示了一个策略的生命周期策略语法,该策略使未标记的映像过期时间超过14天数:

{ "rules": [ { "rulePriority": 1, "description": "Expire images older than 14 days", "selection": { "tagStatus": "untagged", "countType": "sinceImagePushed", "countUnit": "days", "countNumber": 14 }, "action": { "type": "expire" } } ] }

根据图像计数进行过滤

以下示例显示了仅保留一个未标记映像并使所有其他映像过期的策略的生命周期策略语法:

{ "rules": [ { "rulePriority": 1, "description": "Keep only one untagged image, expire all others", "selection": { "tagStatus": "untagged", "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }

根据多个规则进行筛选

以下示例在生命周期策略中使用多条规则。提供了一个示例存储库和生命周期策略以及结果的说明。

示例 A

存储库内容:

  • 图片 A,标签列表:["β 1",“产品-1”],已推送:10 天前

  • 图片 B,标签列表:["β 2",“产品-2”],已推送:9 天前

  • 图片 C, 标签列表:["β 3"], 已推送:8 天前

生命周期策略文本:

{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPrefixList": ["prod"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } }, { "rulePriority": 2, "description": "Rule 2", "selection": { "tagStatus": "tagged", "tagPrefixList": ["beta"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }

此生命周期策略的逻辑是:

  • 规则 1 标识带有前缀的图像prod。它应该标记图像,从最早的图像开始,直到剩下一个或更少的图像匹配。它将映像 A 标记为过期。

  • 规则 2 标识带有前缀的图像beta。它应该标记图像,从最早的图像开始,直到剩下一个或更少的图像匹配。它将图像 A 和图像 B 标记为过期。但是,规则 1 已看到映像 A,如果映像 B 已过期,则会违反规则 1,因此会跳过规则。

  • 结果:映像 A 已过期。

示例 B

这与前面的示例相同,但规则优先级顺序会更改以说明结果。

存储库内容:

  • 图片 A,标签列表:["β 1",“产品-1”],已推送:10 天前

  • 图片 B,标签列表:["β 2",“产品-2”],已推送:9 天前

  • 图片 C, 标签列表:["β 3"], 已推送:8 天前

生命周期策略文本:

{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPrefixList": ["beta"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } }, { "rulePriority": 2, "description": "Rule 2", "selection": { "tagStatus": "tagged", "tagPrefixList": ["prod"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }

此生命周期策略的逻辑是:

  • 规则 1 标识了标记为beta。它应该标记图像,从最早的图像开始,直到剩下一个或更少的图像匹配。它可以看到所有三个图像,并将图像 A 和图像 B 标记为过期。

  • 规则 2 标识了标记为prod。它应该标记图像,从最早的图像开始,直到剩下一个或更少的图像匹配。它不会看到任何图像,因为所有可用图像已经被规则 1 看到,因此不会标记其他图像。

  • 结果:映像 A 和 B 已过期。

在单个规则中筛选多个标签

以下示例为单个规则中的多个标记前缀指定生命周期策略语法。提供了一个示例存储库和生命周期策略以及结果的说明。

示例 A

当在单个规则上指定多个标记前缀时,图像必须与所有列出的标记前缀匹配。

存储库内容:

  • 图片 A,标签列表:["α-1"],已推送:12 天前

  • 图片 B,标签列表:["β 1"],已推送:11 天前

  • 图片 C,标签列表:["α-2","β 2"],已推送:10 天前

  • 图片 D, 标签列表:["α-3"], 已推送:4 天前

  • 图片 E,标签列表:["β 3"],已推送:3 天前

  • 图片 F,标签列表:["α-4"," β 4"],已推送:2 天前

{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPrefixList": ["alpha", "beta"], "countType": "sinceImagePushed", "countNumber": 5, "countUnit": "days" }, "action": { "type": "expire" } } ] }

此生命周期策略的逻辑是:

  • 规则 1 标识了标记为alphabeta。它可以看到图像 C 和 F 它应该标记超过五天的图像,这将是图像 C.

  • 结果:映像 C 已过期。

示例 B

以下示例说明标签不是独占的。

存储库内容:

  • 图片 A,标签列表:["α-1","β 1"," 伽玛-1 "],已推送:10 天前

  • 图片 B,标签列表:["α-2","β 2"],已推送:9 天前

  • 图片 C,标签列表:["α-3","β 3","伽玛 2"],已推送:8 天前

{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPrefixList": ["alpha", "beta"], "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }

此生命周期策略的逻辑是:

  • 规则 1 标识了标记为alphabeta。它可以看到所有的图像。它应该标记图像,从最早的图像开始,直到剩下一个或更少的图像匹配。它将映像 A 和 B 标记为过期。

  • 结果:映像 A 和 B 已过期。

对所有图像进行过滤

以下生命周期策略示例指定具有不同筛选器的所有映像。提供了一个示例存储库和生命周期策略以及结果的说明。

示例 A

下面显示了应用于所有规则但仅保留一个映像并使所有其他映像过期的策略的生命周期策略语法。

存储库内容:

  • 图片 A,标签列表:["α-1"],已推送:4 天前

  • 图片 B,标签列表:["β 1"],已推送:3 天前

  • 图像 C,标签列表:[], 推送:2 天前

  • 图片 D,标签列表:["α-2"],已推送:1 天前

{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "any", "countType": "imageCountMoreThan", "countNumber": 1 }, "action": { "type": "expire" } } ] }

此生命周期策略的逻辑是:

  • 规则 1 标识所有图像。它看到映像 A、B、C 和 D。它应该过期除最新映像以外的所有映像。它将映像 A、B 和 C 标记为过期。

  • 结果:映像 A、B 和 C 已过期。

示例 B

以下示例说明了将所有规则类型组合在一个策略中的生命周期策略。

存储库内容:

  • 图片 A,标签列表:["α-1","β 1"],已推送:4 天前

  • 图像 B,标签列表:[], 推送:3 天前

  • 图片 C,标签列表:["α-2"],已推送:2 天前

  • 图片 D,标签列表:["git 散列"],已推送:1 天前

  • 图像 E,标签列表:[], 推送:1 天前

{ "rules": [ { "rulePriority": 1, "description": "Rule 1", "selection": { "tagStatus": "tagged", "tagPrefixList": ["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" } } ] }

此生命周期策略的逻辑是:

  • 规则 1 标识了标记为alpha。它识别映像 A 和 C。它应该保留最新映像并将其余映像标记为过期。它将映像 A 标记为过期。

  • 规则 2 标识未标记的图像。它可以识别图像 B 和 E。它应该将所有超过一天的图片标记为过期。它将映像 B 标记为过期。

  • 规则 3 标识所有图像。它识别映像 A、B、C、D 和 E。它应该保留最新映像并将其余映像标记为过期。但是,它无法标记映像 A、B、C 或 E,因为它们由优先级更高的规则识别。它将映像 D 标记为过期。

  • 结果:映像 A、B 和 D 已过期。