创建组件 (Amazon CLI) - EC2 Image Builder
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

创建组件 (Amazon CLI)

在本节中,我们将介绍创建EC2 TOE组件通过使用中的 Image Builder 命令Amazon CLI.

创建 YAML 组件文档

要生成组件,您必须提供 YAML 应用程序组件文档,该文档表示用于创建组件的阶段和步骤。

我们在本节中使用的示例创建了一个构建组件,该组件调用UpdateOS中的操作模块EC2 TOE用于更新操作系统的组件管理应用程序。有关的更多信息UpdateOS操作模块,请参阅UpdateOS.

注意

Image Builder 中的组件类型基于管道工作流程。此工作流对应于构建阶段测试阶段在生成进程中。Image Builder 按如下方式确定组件类型:

  • 构建— 这是默认组件类型。任何未被归类为测试组件的东西都是构建组件。这种类型的组件在构建阶段,如果它有test阶段定义,该阶段在测试阶段.

  • 测试— 要归类为测试组件,组件文档必须只包含一个阶段,名为test. 对于与生成组件配置相关的测试,我们建议您使用test逐步处理关联的构建组件,而不是创建独立的测试组件。

有关 Image Builder 如何在构建过程中使用阶段和阶段管理组件工作流的详细信息,请参阅使用管理组件EC2 TOE.

要为示例应用程序创建 YAML 应用程序组件文档,请按照与映像操作系统匹配的选项卡上显示的步骤进行操作。

Linux

创建 YAML 组件文件

使用你最喜欢的文件编辑工具创建名为update-linux-os.yaml,该内容包含以下内容:

# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 # # Permission is hereby granted, free of charge, to any person obtaining a copy of this # software and associated documentation files (the "Software"), to deal in the Software # without restriction, including without limitation the rights to use, copy, modify, # merge, publish, distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. name: update-linux-os description: Updates Linux with the latest security updates. schemaVersion: 1 phases: - name: build steps: - name: UpdateOS action: UpdateOS # Document End
提示

在线使用这样的工具YAML 验证程序,或者在代码环境中使用 YAML lint 扩展名,以验证您的 YAML 格式是否正确。

Windows

创建 YAML 组件文件

使用你最喜欢的文件编辑工具创建名为update-windows-os.yaml,该内容包含以下内容:

# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: MIT-0 # # Permission is hereby granted, free of charge, to any person obtaining a copy of this # software and associated documentation files (the "Software"), to deal in the Software # without restriction, including without limitation the rights to use, copy, modify, # merge, publish, distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. name: update-windows-os description: Updates Windows with the latest security updates. schemaVersion: 1.0 phases: - name: build steps: - name: UpdateOS action: UpdateOS # Document End
提示

在线使用这样的工具YAML 验证程序,或者在代码环境中使用 YAML lint 扩展名,以验证您的 YAML 格式是否正确。

有关的阶段、步骤和语法的更多信息EC2 TOEYAML 应用组件文档,请参阅在中使用文档EC2 TOE.

CreateEC2 TOE使用 Image Builder 的组件 (Amazon CLI)

本节将指导您完成以下步骤以创建EC2 TOE应用程序组件,使用imagebuilder中的命令Amazon CLI:

  • 将 YAML 组件文档上传到可以从命令行引用的 S3 存储桶。

  • 创建EC2 TOE应用程序组件使用imagebuilder create-component命令。

  • 使用imagebuilder list-components带有名称过滤器的命令,以确定下一个更新版本。

创建EC2 TOE从您在上一节中创建的 YAML 文档中的应用程序组件,请按照与映像操作系统匹配的步骤进行操作。

Linux

将应用程序组件文档存储在 Amazon S3 中

您可以使用 S3 存储桶作为在上一节中创建的 YAML 应用程序组件文档的存储库。按照以下步骤存储您的EC2 TOE应用程序组件源文档:

  • 将文档上传到 Amazon S3

    如果您的文档小于 64 KB,可以跳过此步骤。大小为 64 KB 或更大的文档必须存储在 Amazon S3 中。

    aws s3 cp update-linux-os.yaml s3://my-s3-bucket/my-path/update-linux-os.yaml

从 YAML 文档创建组件

为了简化imagebuilder create-component在中使用的命令Amazon CLI,我们创建了一个 JSON 文件,其中包含我们想传递给命令的所有组件参数,包括update-linux-os.yaml在之前的步骤中创建的文档。这些区域有:uri键值对包含文件引用。

注意

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

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

  1. 创建 CLI 输入 JSON 文件

    使用你最喜欢的文件编辑工具创建名为create-update-linux-os-component.json,该内容包含以下内容:

    { "name": "update-linux-os", "semanticVersion": "1.1.2", "description": "An example component that updates the Linux operating system", "changeDescription": "Initial version.", "platform": "Linux", "uri": "s3://my-s3-bucket/my-path/update-linux-os.yaml", "kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c", "tags": { "MyTagKey-purpose": "security-updates" } }
    注意
    • JSON 文件路径开头必须包含 file:// 符号。

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

  2. 创建组件

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

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

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

Windows

将应用程序组件文档存储在 Amazon S3 中

您可以使用 S3 存储桶作为在上一节中创建的 YAML 应用程序组件文档的存储库。按照以下步骤存储您的EC2 TOE应用程序组件源文档:

  • 将文档上传到 Amazon S3

    如果您的文档小于 64 KB,可以跳过此步骤。大小为 64 KB 或更大的文档必须存储在 Amazon S3 中。

    aws s3 cp update-windows-os.yaml s3://my-s3-bucket/my-path/update-windows-os.yaml

从 YAML 文档创建组件

为了简化imagebuilder create-component在中使用的命令Amazon CLI,我们创建了一个 JSON 文件,其中包含我们想传递给命令的所有组件参数,包括update-windows-os.yaml在之前的步骤中创建的文档。这些区域有:uri键值对包含文件引用。

注意

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

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

  1. 创建 CLI 输入 JSON 文件

    使用你最喜欢的文件编辑工具创建名为create-update-windows-os-component.json,该内容包含以下内容:

    { "name": "update-windows-os", "semanticVersion": "1.1.2", "description": "An example component that updates the Windows operating system.", "changeDescription": "Initial version.", "platform": "Windows", "uri": "s3://my-s3-bucket/my-path/update-windows-os.yaml", "kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c", "tags": { "MyTagKey-purpose": "security-updates" } }
    注意
    • JSON 文件路径开头必须包含 file:// 符号。

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

  2. 创建组件

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

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

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

EC2 TOE用于更新的组件版本控制 (Amazon CLI)

EC2 TOE组件名称和版本嵌入在组件前缀后面的 Amazon 资源名称 (ARN) 中。组件的每个新版本都有自己独特的 ARN。创建新版本的步骤与创建新组件的步骤完全相同,只要该组件名称的语义版本是唯一的。要了解有关 Image Builder 资源语义版本控制的更多信息,请参阅语义版本控制.

为确保分配下一个逻辑版本,请首先使用imagebuilder list-components,中的命令Amazon CLI,然后按名称进行筛选。

对于此示例,我们正在筛选之前的 Linux 示例中创建的组件的名称。要列出您创建的组件,请使用name参数来自您在imagebuilder create-component命令。

aws imagebuilder list-components --filters name="name",values="update-linux-os" { "requestId": "123a4567-b890-123c-45d6-ef789ab0cd1e", "componentVersionList": [ { "arn": "arn:aws:imagebuilder:us-west-2:1234560087789012:component/update-linux-os/1.0.0", "name": "update-linux-os", "version": "1.0.0", "platform": "Linux", "type": "BUILD", "owner": "123456789012", "dateCreated": "2020-09-24T16:58:24.444Z" }, { "arn": "arn:aws:imagebuilder:us-west-2:1234560087789012:component/update-linux-os/1.0.1", "name": "update-linux-os", "version": "1.0.1", "platform": "Linux", "type": "BUILD", "owner": "123456789012", "dateCreated": "2021-07-10T03:38:46.091Z" } ] }

根据你的结果,你可以确定下一个版本应该是什么。