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

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

生命周期策略

Amazon ECR 生命周期策略提供了对私有存储库中映像的生命周期管理的更多控制。生命周期策略包含一条或多条规则,其中每条规则定义 Amazon ECR 的操作。这提供了一种自动清理未使用的图像的方法,例如根据年龄或计数过期的图像。您应该期望在创建生命周期策略后,受影响的映像会在 24 小时内过期。

生命周期策略

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

下图说明了生命周期策略工作流。


                使用 Fargate 启动类型显示了 Amazon 云服务器环境的体系结构图。
  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" } } ] }
注意

这些区域有:tagPrefixList参数仅在tagStatustagged。这些区域有:countUnit参数仅在countTypesinceImagePushed。这些区域有:countNumber参数仅在countType设置为imageCountMoreThan

生命周期策略参数

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

规则优先级

rulePriority

类型:整数

必需:是

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

Description

description

类型:字符串

必需:否

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

标签状态

tagStatus

类型:字符串

必需:是

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

标签前缀列表

tagPrefixList

类型:列表 [字符串]

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

仅在指定"tagStatus": "tagged"。您必须指定以逗号分隔的映像标签前缀列表,以便对其执行生命周期策略执行操作。例如,如果您的图像被标记为prodprod1prod2,依此类推,您将使用标签前缀prod指定所有这些日志。如果指定多个标签,则仅选择具有所有指定标记的图像。

计数类型

countType

类型:字符串

必需:是

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

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

计数单位

countUnit

类型:字符串

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

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

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

计数

countNumber

类型:整数

必需:是

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

如果使用的 countTypeimageCountMoreThan,则该值为您希望在存储库中保留的映像的最大数量。如果countType使用为sinceImagePushed,则该值为图像的最大年龄限制。

Action

type

类型:字符串

必需:是

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