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

生命周期策略

Amazon ECR 生命周期策略提供了对私有存储库中镜像的生命周期管理的更多控制。生命周期策略是一组规则,其中的每个规则为 Amazon ECR 定义一个操作。这提供了一种自动清理未使用镜像的方法,例如根据使用期限或计数过期的镜像。创建生命周期策略后,受影响的镜像会在 24 小时内过期。

生命周期策略工作原理

生命周期策略由一条或多条规则组成,这些规则确定存储库中的哪些镜像应过期。在考虑使用生命周期策略时,务必使用生命周期策略预览来确认生命周期策略视为过期的镜像,然后再将其应用到存储库。将生命周期策略应用到存储库后,您应发现受影响的镜像将在 24 小时内过期。

下图显示了生命周期策略工作流程。


                该图使用 Fargate 启动类型显示 Amazon ECS 环境的架构。
  1. 创建一个或多个测试规则。

  2. 保存测试规则并运行预览。

  3. 生命周期策略评估程序遍历所有规则,并标记每个规则影响的镜像。

  4. 然后,生命周期策略评估程序根据规则优先级应用规则,并显示存储库中的哪些镜像设置为过期。

  5. 查看测试结果,确保标记为过期的镜像符合您预期的要求。

  6. 将测试规则应用为存储库的生命周期策略。

  7. 创建生命周期策略后,受影响的镜像将在 24 小时内过期。

生命周期策略评估规则

生命周期策略评估器负责解析生命周期策略的明文 JSON,评估所有规则,然后根据规则优先级将这些规则应用于存储库中的镜像。下文更详细地解释了生命周期策略评估器采用的逻辑。有关示例,请参阅 生命周期策略的示例

  • 无论规则优先级如何,评估器都会同时评估所有规则。评估所有规则后,将根据规则优先级应用这些规则。

  • 镜像由一条或零条规则设为过期。

  • 与规则的标记要求匹配的镜像不能被优先级较低的规则设为过期。

  • 规则永远不能标记已由较高优先级规则标记的镜像,但仍然可以将其识别为未过期。

  • 规则集必须包含一组唯一的标签前缀。

  • 只允许一个规则选择未标记的镜像。

  • 过期始终按 pushed_at_time 排序,并且始终是较早的镜像在较新的镜像之前过期。

  • 使用 tagPrefixList 时,如果 tagPrefixList 值中的全部标签均与任何镜像的标签相符,则该镜像成功匹配。

  • 使用 countType = imageCountMoreThan,镜像基于 pushed_at_time 从最新到早排序,然后所有大于指定计数的镜像都将过期。

  • 使用 countType = sinceImagePushed,其 pushed_at_time 早于指定天数 (基于 countNumber) 的所有镜像均会过期。

生命周期策略模板

在与存储库关联之前评估生命周期策略的内容。以下是生命周期策略的 JSON 语法模板。有关生命周期策略示例,请参阅 生命周期策略的示例

{ "rules": [ { "rulePriority": integer, "description": "string", "selection": { "tagStatus": "tagged"|"untagged"|"any", "tagPrefixList": list<string>, "countType": "imageCountMoreThan"|"sinceImagePushed", "countUnit": "string", "countNumber": integer }, "action": { "type": "expire" } } ] }
注意

仅当 tagStatustagged 时,才能使用 tagPrefixList 参数。仅当 countTypesinceImagePushed 时,才能使用 countUnit 参数。

生命周期策略参数

生命周期策略分为以下几个部分:

规则优先级

rulePriority

类型:整数

必需:是

设置应用规则的顺序,从低到高。优先级为 1 的生命周期策略规则将首先应用,优先级为 2 的规则将下一个应用,依此类推。当您向某个生命周期策略添加规则时,必须为每个规则赋予一个唯一的 rulePriority 值。但是,在策略中的各规则之间,值不需要顺序。具有 tagStatusany 的规则必须具有最大的 rulePriority 值并且最后被评估。

说明

description

类型:字符串。

必需:否

(可选) 描述生命周期策略中规则的用途。

标签状态

tagStatus

类型:字符串

必需:是

确定要添加的生命周期策略规则是否为镜像指定标签。可接受的选项包括 taggeduntaggedany。如果您指定 any,则所有镜像都会根据它们评估规则。如果指定 tagged,还必须指定 tagPrefixList 值。如果指定 untagged,那么必须省略 tagPrefixList

标签前缀列表

tagPrefixList

类型:list[string]

必需:是,仅当 tagStatus 设置为标记

仅在指定 "tagStatus": "tagged" 时使用。您必须指定以逗号分隔的镜像标签前缀列表,以便根据此列表执行生命周期策略操作。例如,如果您的镜像被标记为 prodprod1prod2 等,则可以使用标签前缀 prod 以指定所有这些标签。如果指定多个标签,则仅选择具有所有指定标签的镜像。

计数类型

countType

类型:字符串

必需:是

指定要应用于镜像的计数类型。

如果 countType 设置为 imageCountMoreThan,您还可以指定 countNumber 以创建一个规则,用于设置存储库中存在的镜像数量限制。如果 countType 设置为 sinceImagePushed,您还可以指定 countUnitcountNumber,以指定存储库中存在的镜像的时间限制。

计数单位

countUnit

类型:字符串

必需:是,仅当 countType 设置为 sinceImagePushed

指定计数单位 days 作为时间单位,除此之外,还指定 countNumber 表示天数。

只有在 countTypesinceImagePushed 时才能指定;如果您在 countType 是任何其他值时指定计数单位,将发生错误。

计数

countNumber

类型:整数

必需:是

指定计数数量。可接受的值为正整数 (0 不是可接受的值)。

如果使用的 countTypeimageCountMoreThan,则该值为您希望在存储库中保留的镜像的最大数量。如果使用的 countTypesinceImagePushed,则该值为镜像的最大使用期限。

操作

type

类型:字符串

必需:是

指定操作类型。支持的值为 expire