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

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

创建容器食谱的新版本

本节说明了如何创建容器食谱的新版本。

使用控制台创建新的容器食谱版本

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

食谱详情
  • 名称不可编辑

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

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

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

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

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

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

      重要

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

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

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

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

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

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

    • Docker 镜像 ID — 已预先填充,但可编辑。

实例配置
  • AMI ID — 已预先填写,但可编辑。

  • 存储(卷)

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

    注意

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

工作目录
  • 工作目录路径-已预先填充,但可编辑。

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

    注意

    生成和测试组件列表根据组件所有者类型显示可用组件。要为您的食谱添加或更新组件,请为要查找的组件选择所有者类型。例如,如果您要添加与您订阅的基本图像关联的组件,请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参数存储

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

目标存储库
  • 目标存储库名称 — 如果您的管道分发配置中没有为管道运行的区域(区域 1)指定其他存储库,则存储输出映像的 Amazon ECR 存储库。

要创建新的容器食谱版本,请执行以下操作:
  1. 在容器食谱详细信息页面顶部,选择 Create New Very(创建新版本)。您将进入容器配方的 “创建配方” 页面。

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

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

使用以下创建容器食谱Amazon CLI

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

先决条件

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

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

  1. 创建 CLI 输入 JSON 文件

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

    注意

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

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

    以下是此示例中参数的摘要:

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

      注意

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

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

        提示

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

      • 参数(对象数组)-包含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使用默认值。

    • ContainerType(字符串,必填)— 要创建的容器类型。包括下列有效值DOCKER

    • dockerfileTemplateData(字符串)— 用于构建映像的 Dockerfile 模板,以行内数据块表示。

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

    • 描述(字符串)—容器食谱的描述。

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

    • PlatformOverRid e(字符串)— 指定使用自定义基本映像时的操作系统平台。

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

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

    • InstanceConfiguration(对象)— 一组可用于配置实例以构建和测试容器映像的选项。

      • 映像(字符串)— 用作容器构建和测试实例基本映像的 AMI ID。如果您未指定此值,Image Builder 将使用相应的 Amazon ECS 优化型 AMI 作为基本映像。

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

        • 设备名称(字符串)— 这些映射适用的设备。

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

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

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

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

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

    • targetRepository(对象,必需)— 如果您的管道分发配置中没有为管道运行的区域(区域 1)指定其他存储库,则为容器映像的目标存储库。

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

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

    • wor kingDirectory kingDiretory(字符串)—构建和测试工作流中使用的工作目录。

    { "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. 创建配方

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

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

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