Amazon ECR
用户指南 (API Version 2015-09-21)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

生命周期策略示例

以下是生命周期策略示例,用于显示语法。

按映像存在时间筛选

下面显示了用于使超过 14 天的未标记映像过期的策略的生命周期策略语法:

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

按映像计数筛选

下面显示了用于只保留一个未标记映像而使其他所有映像均过期的策略的生命周期策略语法:

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

按多个规则筛选

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

示例 A

存储库内容:

  • Image A, Taglist: ["beta-1", "prod-1"], Pushed: 10 days ago

  • Image B, Taglist: ["beta-2", "prod-2"], Pushed: 9 days ago

  • Image C, Taglist: ["beta-3"], Pushed: 8 days ago

生命周期策略文本:

Copy
{ "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 均标记为过期。但是,映像 A 已经被规则 1 看到,而如果映像 B 过期,则违犯规则 1,因此跳过映像 B。

  • 结果:映像 A 过期。

示例 B

这是与上一示例中相同的存储库,只是改变了规则优先级顺序以阐明结果。

存储库内容:

  • Image A, Taglist: ["beta-1", "prod-1"], Pushed: 10 days ago

  • Image B, Taglist: ["beta-2", "prod-2"], Pushed: 9 days ago

  • Image C, Taglist: ["beta-3"], Pushed: 8 days ago

生命周期策略文本:

Copy
{ "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 看到,所以规则 2 不会标记额外的映像。

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

按单个规则中的多个标签筛选

以下生命周期策略示例在单个规则中指定多个标签前缀。

示例 A

在单个规则上指定多个标签前缀时,映像基本上会匹配所有列出的标签前缀。

存储库内容:

  • Image A, Taglist: ["alpha-1"], Pushed: 12 days ago

  • Image B, Taglist: ["beta-1"], Pushed: 11 days ago

  • Image C, Taglist: ["alpha-2", "beta-2"], Pushed: 10 days ago

  • Image D, Taglist: ["alpha-3"], Pushed: 4 days ago

  • Image E, Taglist: ["beta-3"], Pushed: 3 days ago

  • Image F, Taglist: ["alpha-4", "beta-4"], Pushed: 2 days ago

Copy
{ "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

以下示例阐述标签不是专用的。

存储库内容:

  • Image A, Taglist: ["alpha-1", "beta-1", "gamma-1"], Pushed: 10 days ago

  • Image B, Taglist: ["alpha-2", "beta-2"], Pushed: 9 days ago

  • Image C, Taglist: ["alpha-3", "beta-3", "gamma-2"], Pushed: 8 days ago

Copy
{ "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 过期。