创建容器配方和版本 - 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 资源语义版本控制的更多信息,请参阅语义版本控制.

    ECR image
    • 映像操作系统 (OS)— 预先选择但可编辑。

    • 操作系统版本— 预先选择但可编辑。

    • ECR 图像 ID— 预填,但可编辑。

    Docker Hub image
    • 映像操作系统 (OS)不可编辑.

    • 操作系统版本— 预先选择但可编辑。

    • Docker 映像 ID— 预填,但可编辑。

实例配置

  • AMI ID— 预填,但可编辑。

  • 存储(卷)

    EBS 卷 1(AMI 根目录)— 预填。您无法编辑根卷设备名称快照, 和IOPS选择。但是,您可以更改所有剩余的设置,例如Size. 您还可以添加新卷。

    注意

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

工作目录

  • 工作目录路径— 预填,但可编辑。

组件

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

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

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

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

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

目标存储库

  • 目标存储库名称— 预填,但可编辑。

要创建新的容器配方版本:

  1. 在容器配方详细信息页面的顶部,选择创建新版本. 您会进入创建配方集装箱食谱的页面。

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

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

创建容器配方 (Amazon CLI)

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

先决条件

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

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

  1. 创建 CLI 输入 JSON 文件

    为了简化imagebuilder create-container-recipe中使用的命令Amazon CLI,我们创建了一个 JSON 文件,其中包含我们想传递给命令的所有配方参数。将文件另存为create-container-recipe.json,以便在imagebuilder create-container-recipe命令。

    注意

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

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

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

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

      重要

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

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

        注意

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

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

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

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

    • ContainType(字符串,必填)— 要创建的容器类型。有效值包括:“码头人"。

    • dockerfileTemplateData(字符串) — 用于构建映像的 Dockerfile 模板,作为内联数据 blob。

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

    • 描述(字符串) — 容器配方的描述。

    • ParentImage(字符串,必填)— 容器配方用作其基础环境的源(父)映像。

    • PlatforOverride(string) — 指定使用自定义基本映像时的操作系统平台。

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

    • 标签(字符串映射)— 附加到容器配方的标签。

    • 实例配置(object) — 一组可用于配置用于构建和测试容器镜像的实例的选项。

      • 图像(string) — 用作容器构建和测试实例的基本映像的 AMI ID。如果未指定,Image Builder 将使用适当的 Amazon ECS 优化 AMI 作为基础映像。

      • blockDeviceMappings(对象数组)— 定义要连接的块储存设备,以便从中指定的 Image Builder AMI 构建实例image参数。

        • DeviceName(字符串) — 应用这些映射的设备。

        • ebs(对象)— 用于管理此映射的特定于 Amazon EBS 的配置。

          • deleteOnTermination(布尔值)— 用于配置在关联设备终止时删除。

          • 加密(布尔值)— 用于配置设备加密。

          • VolumeSize(整数)— 用于覆盖设备的卷大小。

          • VolumeType(字符串)— 用于覆盖设备的卷类型。

    • TargetReory(对象,必需)— 容器映像的目标存储库。

      • 存储库名称(字符串,必需)— 存储输出容器映像的容器存储库的名称。此名称以存储库位置作为前缀。

      • 服务(字符串,必需)— 指定注册此映像的服务。

    • workingDirectory(string) — 构建和测试工作流中使用的工作目录。

    { "components": [ { "componentArn": "arn:aws:imagebuilder:us-east-1:123456789012:component/helloworldal2/x.x.x" } ], "containerType": "DOCKER", "description": "My Linux Docker container image", "dockerfileTemplateData": "FROM {{{ imagebuilder:parentImage }}}\n{{{ imagebuilder:environments }}}\n{{{ imagebuilder:components }}}", "name": "amazonlinux-container-recipe", "parentImage": "amazonlinux:latest", "platformOverride": "Linux", "semanticVersion": "1.0.2", "tags": { "sometag" : "Tag detail" }, "instanceConfiguration": { "image": "ami-1234567890", "blockDeviceMappings": [ { "deviceName": "/dev/xvda", "ebs": { "deleteOnTermination": true, "encrypted": false, "volumeSize": 8, "volumeType": "gp2" } } ] }, "targetRepository": { "repositoryName": "myrepo", "service": "ECR" }, "workingDirectory": "/tmp" }
  2. 创建配方

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

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

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