本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Image Builder 中管理配方
EC2 映像生成器配方是创建自定义计算机映像的蓝图。配方指定了三个关键元素:
-
基础映像 — 映像(AMI、容器映像或导入的虚拟机)的起点。
-
组件 -自定义映像的构建和测试步骤。组件是可选的。此设计支持测试和仅限分发的工作流程。
-
配置 -存储容量、实例设置、工作目录和其他构建时参数。
图像生成器支持两种类型的食谱:
-
映像配方生成亚马逊系统映像 (AMI),您可以使用它来启动亚马逊 EC2 实例。
-
容器配方生成存储在 Amazon ECR 存储库中的Docker容器镜像。
食谱是不可改变的。在您创建配方后,您不能再修改或替换它。要更新组件或任何其他配置,必须创建新的配方或配方版本。映像生成器保留所有以前的版本。这使您可以将图像谱系追溯到生成每个输出的确切配方。您可以将标签应用到现有配方。有关使用映像生成器命令标记资源的更多信息 AWS CLI,请参阅本指南的标记资源部分。
提示
您可以在配方中使用亚马逊托管组件,也可以开发自己的自定义组件。有关更多信息,请参阅 为 Image Builder 映像开发自定义组件。对于创建输出 AMI 的图像配方,您还可以使用 AWS Marketplace 图像产品和组件。有关与 AWS Marketplace 产品集成的更多信息,请参阅AWS Marketplace 集成到图像生成器中。
使用本节中的主题管理您的 EC2 Image Builder 配方,包括列出现有配方、查看其详细信息以及创建新的配方版本。
图像食谱与容器食谱的比较
下表比较了图像配方和容器配方的功能。
| 功能 | 映像配方 | 容器配方 |
|---|---|---|
| Output | AMI | Docker亚马逊 ECR 中的容器镜像 |
| 基础图像来源 | AMI ID、映像生成器映像 ARN、SSM 参数、产品 AWS Marketplace | Docker Hub图片、亚马逊 ECR 图片、图片、 Amazon-managed 映像生成器映像 ARN |
| Dockerfile | 不适用 | 必需(带有上下文变量的模板) |
| 目标存储库 | 不适用 | 亚马逊 ECR(必填) |
| 存储配置 | 输出 AMI 的块状设备映射 | 构建实例的区块设备映射 |
| 用户数据 | 支持(覆盖默认的 cloud-init) | 在配方级别不支持 |
| 系统管理器代理控制 | 可配置(编译后卸载) | 不可配置 |
| AWS Marketplace 组件 | 支持 | 不支持 |
| 平台覆盖 | 不适用(从 AMI 检测到) | 适用于亚马逊 ECR 和图片 Docker Hub |
食谱版本控制
<major>每个配方都使用该格式的语义版本控制。<minor>。<patch>。每个版本节点接受从 0 到 1,073,741,823 (2^30-1) 之间的值。
可以在一个位置使用通配符 (x) 来启用自动版本递增。当您使用通配符版本创建配方时,Image Builder 会将替换为该位置的下一个可用数字。x
| 模式 | 行为 | 示例序列 |
|---|---|---|
1.0.x |
增加补丁号 | 1.0.1、1.0.2、1.0.3、... |
1.x.0 |
增加次要数字 | 1.1.0、1.2.0、1.3.0、... |
x.0.0 |
增加主数字 | 1.0.0、2.0.0、3.0.0、... |
以下规则适用于通配符版本:
-
每个版本字符串只允许使用一个
x通配符。 -
通配符可以出现在任何单个位置(主要、次要或补丁)。
-
其余位置的数值必须是显式整数。
提示
在 CI/CD 自动化中使用通配符版本,这样您就不必手动跟踪和增加配方版本。每次使用相同的通配符创建配方时,Image Builder 都会解析下一个可用版本。例如,始终使用的配方1.0.x解析为1.0.11.0.2、然后依此类推。要了解有关 Image Builder 资源的语义版本控制的更多信息,请参阅Image Builder 中的语义版本控制。
配方限制和限制
在创建配方之前,请查看以下限制。
| 约束 | 限制 | 注意 |
|---|---|---|
| 每个食谱的成分 | 20(默认) | 包括构建和测试组件。您可以通过以下方式申请加薪 AWS Support。 |
| 最大配方大小 | 25 KB | 所有组件配置的累积大小,包括参数值。 |
| 每张输出图像的产品代码 | 9 | 由基础映像和 AWS Marketplace 组件组合而成。 |
| 组件的唯一性 | 每个食谱一个 | 同一个组件(无论版本如何)只能出现一次。 |
| 版本节点最大值 | 1,073,741,823 | 每个节点(主节点、次要节点或补丁节点)。 |
| 配方名称 | 无法更改 | 名称在创建后是固定的。为不同的名称创建新配方。 |
组件还必须满足以下兼容性要求:
-
组件必须与配方的平台(Linux、Windows 或 macOS)相匹配。
-
当操作系统版本元数据可用时,组件必须支持父映像的操作系统版本。
-
DISABLED状态为DEPRECATED或的组件无法添加到新配方中。 -
CIS 强化组件需要 CIS-published 父映像。
清理资源
为避免意外费用,请务必清理根据本指南中的示例创建的资源和管道。有关删除 Image Builder 中的资源的更多信息,请参阅 删除过期或未使用的 Image Builder 资源。