Amazon ECR
用户指南 (API 版本 2015-09-21)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

生命周期策略示例

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

按映像存在时间筛选

以下示例显示了用于使超过 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

存储库内容:

  • 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

生命周期策略文本:

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

生命周期策略文本:

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

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

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

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

存储库内容:

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

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

  • Image C, Taglist: [], Pushed: 2 days ago

  • Image D, Taglist: ["alpha-2"], Pushed: 1 day ago

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

以下示例介绍将所有规则类型整合到单个策略中的生命周期策略。

存储库内容:

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

  • Image B, Taglist: [], Pushed: 3 days ago

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

  • Image D, Taglist: ["git hash"], Pushed: 1 day ago

  • Image E, Taglist: [], Pushed: 1 day ago

{ "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": "day", "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。它应该将所有超过 1 天的映像标记为过期。它将映像 B 标记为过期。

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

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