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

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

创建图像配方的新版本

本小节介绍如何创建映像食谱的新版本。

创建新的映像食谱版本(控制台)

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

新版本中的基本配方详细信息
  • 名称-不可编辑

  • 版本-必需。此基本细节未预先填充当前版本或任何类型的序列。以格式输入要创建的版本号<major>。 <minor>。 <patch>。如果版本已经存在,则会遇到错误。

  • 选择图像选项 — 已预先选择,但您可以对其进行编辑。如果您更改对基础图像来源的选择,则可能会丢失取决于您选择的原始选项的其他细节。

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

    Managed image
    • 映像操作系统 (OS)-不可编辑

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

    • 自动版本控制选项-与您的基本配方匹配。此图像选项默认为 “使用选定的操作系统版本” 选项。

      重要

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

    Amazon Web Services Marketplace image
    • 订阅 — 此选项卡应处于打开状态,并且Amazon Web Services Marketplace应预先选择订阅的图片以匹配您的基本配方。如果您更改食谱用作基础图像的图像,则可能会丢失取决于您选择的原始图像的其他细节。

    有关Amazon Web Services Marketplace产品的更多信息,请参阅《Amazon Web Services Marketplace家指南》中的购买产品

    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

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

  • 组件-已包含在配方中的组件显示在每个组件列表(生成和测试)末尾的 “选定组件” 部分中。您可以删除或重新排序所选组件以满足您的需要。

    注意

    生成和测试组件列表根据组件所有者类型显示可用组件。要为您的食谱添加或更新组件,请为要查找的组件选择所有者类型。例如,如果您要添加与您订阅的基本图像关联的组件,请Third party managed从搜索栏旁边的所有者类型列表中Amazon Web Services Marketplace进行选择。

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

    • 版本控制选项-已预先选择,但您可以对其进行更改。我们建议您选择 “使用最新的可用组件版本” 选项,以确保您的映像版本始终采用组件的最新版本。如果您需要在配方中使用特定的组件版本,则可以选择指定组件版本,然后在出现的组件版本框中输入该版本

    • 输入参数-显示组件接受的输入参数。该是预先填充配方先前版本的值的。如果您在此配方中首次使用此组件,并且已为该组件定义了默认值,则默认值将显示在 “” 框中,文本为灰色。如果未输入其他值,则EC2 TOE使用默认值。

      重要

      组件参数是纯文本值,已登录Amazon CloudTrail。我们建议您使用Amazon Secrets Manager或Amazon Systems Manager参数存储来存储您的密钥。有关 Secrets Manager 的更多信息,请参阅什么是Secrets Manager? Amazon Secrets Manager用户指南中。有关Amazon Systems Manager参数存储的更多信息,请参阅Amazon Systems Manager用户指南中的Amazon Systems Manager参数存储

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

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

    注意

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

要创建新的映像食谱版本,请执行以下操作:
  1. 在配方详细信息页面顶部,选择 Create New very(创建新版本)。这将带您进入创建图像配方页面。

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

有关在创建图像管道时如何创建图像配方的更多信息,请参阅步骤 2:选择配方本指南的入门部分。

使用创建映像食谱Amazon CLI

要使用中的 Image Buildercreate-image-recipe 命令创建图像配方Amazon CLI,请执行以下步骤:

先决条件

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

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

  1. 创建 CLI 输入 JSON 文件

    您可以使用行内命令参数为create-image-recipe命令提供所有输入。但是,生成的命令可能很长。为了简化命令,您可以改为提供包含所有配方设置的 JSON 文件。

    注意

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

    要将数据值作为命令行参数提供,请参阅《Amazon CLI命令参考》中指定的参数名称。

    以下是这些示例指定的参数的摘要:

    • 名称(字符串,必填项)—映像食谱的名称。

    • 描述(字符串)—映像食谱的描述。

    • ParentImag e(字符串,必填)— 图像配方用作自定义图像基础的图像。值可以是基本映像 ARN 或 AMI ID。

      注意

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

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

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

      注意

      组件按照中指定的顺序安装。

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

        提示

        要使用其中一个示例创建自己的图像配方,必须将示例 ARN 替换为配方中使用的组件的 ARN。

      • 参数(对象数组)-包含ComponentParameter对象数组。

        重要

        组件参数是纯文本值,已登录Amazon CloudTrail。我们建议您使用Amazon Secrets Manager或Amazon Systems Manager参数存储来存储您的密钥。有关 Secrets Manager 的更多信息,请参阅什么是Secrets Manager? Amazon Secrets Manager用户指南中。有关Amazon Systems Manager参数存储的更多信息,请参阅Amazon Systems Manager用户指南中的Amazon Systems Manager参数存储

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

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

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

      • 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(字符串)— 提供当您启动构建实例时要运行的命令或命令脚本。

        注意

        用户数据始终采用 base 64 编码。例如,以下命令被编码为 IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg==

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

        Linux 示例使用了这个编码值。

    Linux

    以下示例中的基础映像(parentImage属性)是 AMI。使用 AMI 时,您必须有权访问 AMI,并且 AMI 必须位于 Image Builder 运行命令的同一区域。将文件另存为create-image-recipe.json,并在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": "IyEvYmluL2Jhc2gKbWtkaXIgLXAgL3Zhci9iYi8KdG91Y2ggL3Zhcg==" } }
    Windows

    以下示例引用了最新版本的 Windows Server 2016 English Full Base 映像。此示例中的 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. 创建配方

    使用以下命令创建配方。在--cli-input-json参数中提供您在上一步中创建的 JSON 文件的名称:

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

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

在控制台中导入 VM 作为基础映像

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

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

  1. 在基础图像的选择图像部分中,选择导入基础图像选项。

  2. 像往常一样选择映像操作系统 (OS) 和操作系统版本

虚拟机导入配置

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

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

导入来源

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

  1. 来源 — 这可以是 S3 存储桶或 EBS 快照。

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

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

IAM 角色

要将 IAM 角色与您的虚拟机导入配置相关联,请从 IAM 角色下拉列表中选择该角色,或选择创建新角色来创建新角色。如果您创建新角色,IAM 角色控制台页面将在单独的选项卡中打开。

高级设置-可选

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

常规
  1. 为基础图像指定唯一名称。如果您不输入值,则基础图像会继承配方名称。

  2. 指定基本映像的版本。采用以下格式:<major>.<minor>.<patch>如果您不输入值,则基础图像会继承配方版本。

  3. 您也可以输入基础图像的描述

基本映像架构

要指定虚拟机导入源的架构,请从架构列表中选择一个值。

加密

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

许可证管理

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

  • 包含许可证 — 适用于您的平台的Amazon许可证将应用于您的基础映像。

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

要将使用创建的许可证配置附加Amazon License Manager到基础映像,请从许可证配置名称列表中进行选择。有关License Manager 的更多信息,请参阅使用Amazon License Manager

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

  • Linux 仅支持 BYOL 许可证。

标签(基础图片)

标签使用键值对向您的 Image Builder 资源分配可搜索的文本。要为导入的基础图像指定标签,请在键和值框中输入对。

要添加标签,请选择 Add tag(添加标签)。要删除标签,请选择删除标签