创建图片配方和版本 - EC2 Image Builder
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

创建图片配方和版本

本节介绍创建新的图片配方和配方版本。

创建新的映像配方版本 (控制台)

创建新版本与创建新配方几乎相同。不同之处在于,在大多数情况下,某些细节是预先选择的,以匹配基本配方。以下列表描述了创建新配方和创建现有配方的新版本之间的区别。

新版本中的基本食谱详细信息

  • 名称不可编辑.

  • 版本— 必需。它没有预先填充当前版本或任何类型的序列。使用格式输入要创建的版本号Major.Mor.patch. 如果版本已存在,您将遇到错误。

  • 这些区域有:选择 Select image选项 — 预先选择,但你可以对其进行编辑。如果您更改了对基础图片来源的选择,则可能会丢失取决于您选择的原始选项的其他详细信息。

    要查看与基本图像选择相关联的详细信息,请选择与您的选择匹配的选项卡。

    Managed images
    • 映像操作系统 (OS)不可编辑.

    • 映像名称— 根据您为现有配方所做的基本图片选择的组合预先选择。但是,如果更改选择 Select image选项,你会丢失预先选择的映像名称.

    • 自动版本控制选项— 是的匹配你的基本食谱。默认值为使用选定的操作系统选项。

      重要

      如果您使用语义版本控制来启动管道构建,请确保将此值更改为使用最新可用的 OS 版本. 要了解有关 Image Builder 资源语义版本控制的更多信息,请参阅语义版本控制.

    Custom AMI
    • AMI ID— 必需。但是,它没有预先填写你的原始作品。您必须为基础映像输入 AMI ID。

  • 实例配置— 已预先选择设置,但您可以对其进行编辑。

    • Systems Manager 代理— 您可以选中或清除此复选框以控制在新映像上安装 Systems Manager 代理程序。默认情况下,该复选框处于清除状态,以便在新映像中包含 Systems Manager 代理。要从最终映像中删除 Systems Manager 代理,以便它不会包含在 AMI 中,请选中该复选框。

    • 用户数据— 您可以使用此区域提供命令,或者在启动构建实例时运行的命令脚本。但是,它会替换 Image Builder 为确保安装 Systems Manager 而可能添加的任何命令,包括 Image Builder 在创建新映像之前通常为 Linux 映像运行的清理脚本。

      重要
      • 如果输入用户数据,请确保 Systems Manager 代理已预装在基础映像上,或者在用户数据中包含安装。

      • 对于 Linux 映像,请通过包含命令来创建名为的空文件来运行清理步骤perform_cleanup在用户数据脚本中。Image Builder 会检测到此文件,然后在创建新映像之前运行清理脚本。有关更多信息和示例脚本,请参阅EC2 Image Builder 的安全最佳实践.

  • 工作目录— 预先选择,但你可以对其进行编辑。

  • 组件— 配方中已包含的组件显示在选定的组件部分位于每个组件列表(构建和测试)末尾。您可以删除或重新排序选定组件以满足要求。

    您可以为所选组件配置以下设置:

    • 版本控制选项— 预选,但您可以更改它们。我们建议您选择使用最新的可用组件版本选项,以确保映像构建始终选择组件的最新版本。如果您需要在配方中使用特定组件版本,您可以选择指定组件版本,然后在组件版本显示的框。

    • 输入参数— 显示组件接受的输入参数。这些区域有:已预先填充了前一版本配方的价值。如果在此配方中首次使用此组件,并且已为组件定义了默认值,则默认值将显示在框中带有灰显的文本。如果没有输入其他值,EC2 TOE使用默认值。

    扩展版本控制选项要么输入参数设置,您可以选择设置名称旁边的箭头,也可以切换设置名称旁边的箭头。全部展开关闭和开启以展开所有选定组件的所有设置。

  • 存储(卷)— 已预先填写。根卷设备名称快照, 和IOPS选择不可编辑。但是,您可以更改所有剩余的设置,例如Size. 您还可以添加新卷。

    注意

    如果您指定了从另一个账户与您共享的基本 AMI,则指定的任何辅助卷的快照也必须与您的账户共享。

要创建新的映像配方版本:

  1. 在配方详细信息页面的顶部,选择创建新版本. 这会将您带到创建镜像配方页.

  2. 要创建新版本,请进行更改,然后选择创建镜像配方.

有关在创建映像管道的上下文中创建图像配方的详细信息,请参阅第 2 步:选择配方中的试用本指南的部分。

创建映像配方(Amazon CLI)

要创建 Image Builder 映像配方,请使用imagebuilder create-image-recipe中的命令Amazon CLI,请按照以下步骤操作:

先决条件

在运行本节中的 Image Builder 命令以创建图像配方之前,请使用Amazon CLI,您必须创建了配方将使用的组件。以下步骤中的图像配方示例指的是在创建组件 (Amazon CLI)本指南的部分。

在创建组件后,或者如果您使用的是现有组件,请记下要包含在配方中的 ARN。

  1. 创建 CLI 输入 JSON 文件

    为了简化imagebuilder create-image-recipe中使用的命令Amazon CLI,我们创建了一个 JSON 文件,其中包含我们想传递给命令的所有配方属性。

    注意

    JSON 文件中数据点的命名约定遵循为 Image Builder API 命令请求参数指定的模式。要查看 API 命令请求参数,请参阅CreateImageRecipe中的命令EC2 Image Builder API 参考.

    不要使用此命名约定将这些数据点直接提供给imagebuilder create-image-recipe命令作为选项。

    以下是我们在这些示例中指定的参数的摘要:

    • 名称(字符串,必填)— 映像配方的名称。

    • 描述(字符串) — 映像配方的描述。

    • ParentImage(字符串,必填)— 映像配方用作其基础环境的源(父)映像。该值可以是父映像 ARN 或 Image Builder AMI ID。

      注意

      Linux 示例使用 Image Builder AMI,Windows 示例使用 ARN。

    • 语义版(字符串,必填)— 图像配方的语义版本,它按以下格式指定版本,每个位置都有数值以表示特定版本:<major>。 <minor>。 <patch>。例如:1.0.0。要了解有关 Image Builder 资源语义版本控制的更多信息,请参阅语义版本控制.

    • 组件(阵列,必填)— 包含一个ComponentConfiguration对象。至少必须指定一个构建组件:

      重要

      组件是按指定顺序安装的。

      • ComponentArn(字符串,必填)— 组件 ARN。

        注意

        要使用其中一个示例来创建自己的映像配方,必须将示例 ARN 替换为用于配方的组件的 ARN,包括Amazon Web Services 区域、每个人的名称和版本号。

      • 参数(对象数组)— 包含一个ComponentParameter对象。

        • 名称(字符串,必填)— 要设置的组件参数的名称。

        • (字符串数组,必填)— 包含用于设置命名组件参数值的字符串数组。如果为组件定义了默认值,但没有提供其他值,EC2 TOE使用默认值。

    • additionalInstanceConfiguration(object) — 为构建实例指定其他设置和启动脚本。

      • systemsManagerAgent(对象)— 包含构建实例上的 Systems Manager 代理的设置。

        • uninstallAfterBuild(布尔值)— 控制在创建新 AMI 之前是否从最终构建映像中删除 Systems Manager 代理。如果将其设置为true,然后将代理程序从最终映像中删除。如果设置为false,然后将代理留在里面,以便将其包含在新 AMI 中。默认值为 false

          注意

          如果uninstallAfterBuild属性不包括在 JSON 文件中,并且满足以下条件,然后 Image Builder 将从最终映像中删除 Systems Manager 代理,因此 AMI 中不可用:

          • 这些区域有:userDataOverride是空的,或者已经被遗漏在 JSON 文件之外。

          • Image Builder 会自动在源(父)映像上预装代理的操作系统的构建实例上安装 Systems Manager 代理。

      • userDataOverride(string) — 提供要在启动构建实例时运行的命令或命令脚本。

        注意

        用户数据始终以 64 为基数编码。例如,以下命令将编码为IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhci$

        #!/bin/bash mkdir -p /var/bb/ touch /var

        Linux 示例使用这个编码值。

    Linux

    本示例中的源(父)映像是 Image Builder AMI。当您使用 Image Builder AMI 时,您必须有权访问 AMI,并且 AMI 必须位于您使用 Image Builder 的同一区域。将文件另存为create-image-recipe.json,以便在imagebuilder create-image-recipe命令。

    { "name": "BB Ubuntu Image recipe", "description": "Hello World image recipe for Linux.", "parentImage": "ami-0a01b234c5de6fabc", "semanticVersion": "1.0.0", "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/bb$" } ], "additionalInstanceConfiguration": { "systemsManagerAgent": { "uninstallAfterBuild": true }, "userDataOverride": "IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhci$ } }
    Windows

    此示例指的是 Windows Server 2016 英文版完整基本映像的最新版本。根据您指定的语义版本筛选条件,该示例中的 ARN 引用 SKU 中的最新镜像:arn:aws:imagebuilder:us-west-2:aws:image/windows-server-2016-english-full-base-x86/x.x.x.

    { "name": "MyBasicRecipe", "description": "This example image recipe creates a Windows 2016 image.", "parentImage": "arn:aws:imagebuilder:us-west-2:aws:image/windows-server-2016-english-full-base-x86/x.x.x", "semanticVersion": "1.0.0", "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/my-example-component/2019.12.02/1" }, { "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/my-imported-component/1.0.0/1" } ] }
    注意

    要了解有关 Image Builder 资源语义版本控制的更多信息,请参阅语义版本控制.

  2. 创建配方

    使用以下命令创建配方,引用您在上一步中创建的 JSON 文件的文件名:

    aws imagebuilder create-image-recipe --cli-input-json file://create-image-recipe.json
    注意
    • JSON 文件路径开头必须包含 file:// 符号。

    • JSON 文件的路径应遵循运行命令的基本操作系统的相应约定。例如,Windows 使用反斜杠 (\) 引用目录路径,Linux 则使用正斜杠 (/)。

将虚拟机导入作为基础映像(控制台)

在本节中,我们重点介绍如何导入虚拟机 (VM) 作为映像配方的基础映像。这里我们不介绍与创建食谱或食谱版本相关的其他步骤。有关使用 Image Builder 控制台中的管道创建向导创建新映像配方的其他步骤,请参阅创建镜像管道 (AMI). 有关创建新映像配方或配方版本的其他步骤,请参阅创建图片配方和版本.

要使用 Image Builder 控制台导入虚拟机作为映像配方的基本映像,请按照以下步骤以及任何其他必需步骤创建配方或配方版本。

  1. 选择 Select image对于基本映像的部分,选择导入基本映像选项。

  2. 选择映像操作系统 (OS)操作系统版本,正如您平常一样。

VM 导入配置

从虚拟化环境中导出虚拟机时,该过程会创建一组或多个磁盘容器文件,作为虚拟机环境、设置和数据的快照。您可以使用这些文件导入虚拟机作为映像配方的基础映像。有关在 Image Builder 中导入 VM 的更多信息,请参阅导入和导出虚拟机映像

要指定导入源的位置,请执行以下步骤:

导入来源

为要导入的第一个虚拟机映像磁盘容器或快照指定源磁盘容器 1部分。

  1. — 这可以是 S3 存储桶,也可以是 EBS 快照。

  2. 选择 S3 磁盘位置— 输入 Amazon S3 中存储磁盘映像的位置。要浏览位置,请选择浏览 S3.

  3. 要添加磁盘容器,请选择添加磁盘容器.

IAM 角色

要将 IAM 角色与 VM 导入配置关联,请从IAM 角色下拉列表,或者选择创建新角色创建一个新的。如果创建新的角色,IAM Roles 控制台页面将在单独的选项卡中打开。

高级设置 —可选的

以下设置可选。使用这些设置,您可以为导入创建的基础映像配置加密、许可、标签等。

常规

  1. 指定唯一名称对于基本映像。如果您不输入值,基本映像将继承配方名称。

  2. 指定版本对于基本映像。使用以下格式:major.minor.patch. 如果您不输入值,基本映像将继承配方版本。

  3. 您还可以输入说明对于基本映像。

基本映像架构

要指定虚拟机导入源的体系结构,请从架构列表。

加密

如果您的虚拟机磁盘映像已加密,则需要提供用于导入过程的密钥。要为导入指定 KMS 密钥,请从加密(KMS 密钥)列表。该列表包含您的账户在当前区域中有权访问的 KMS 密钥。

许可证管理

导入虚拟机时,导入过程会自动检测虚拟机操作系统并将适当的许可证应用于基础映像。根据您的操作系统平台,许可证类型如下:

  • 附带许可— 一个合适的Amazon平台的许可证将应用于您的基础映像。

  • 自带许可 (BYOL)— 保留虚拟机的许可证(如果适用)。

附加使用创建的许可证配置Amazon License Manager转到你的基础图片,从许可证配置名称列表。有关 License Manager 的更多信息,请参阅使用Amazon License Manager

注意
  • 许可证配置包含基于您的企业协议条款的许可规则。

  • Linux 只支持 BYOL 许可证。

标签(基本映像)

标签使用键值对将可搜索的文本分配给 Image Builder 资源。要为导入的基础映像指定标签,请使用密钥Box。

要添加标签,请选择添加标签。要删除标签,请选择删除标签