View a markdown version of this page

创建基础设施配置 - EC2 Image Builder

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

创建基础设施配置

本节介绍如何使用映像生成器控制台或中的imagebuilder命令 AWS CLI 来创建基础架构配置。

Console

要从 Image Builder 控制台创建基础设施配置资源,请执行以下步骤:

  1. 在以下位置打开 EC2 映像生成器控制台https://console.aws.amazon.com/imagebuilder/

  2. 从导航窗格中选择基础设施配置

  3. 选择创建基础设施配置

  4. 概述 部分中,输入以下必要信息:

    • 输入基础设施配置资源的名称

    • 选择希望与构建和测试实例上的组件权限实例配置文件关联的 IAM 角色。Image Builder 使用这些权限下载和运行您的组件 CloudWatch、将日志上传到并执行配方中组件指定的任何其他操作。

  5. AWS 基础架构面板中,配置其余基础架构设置。输入以下必要信息:

    • 实例类型:您可以为此构建指定一个或多个实例类型。映像生成器根据可用性选择其中一种实例类型。

      注意

      Mac 实例运行于专属主机上的 .metal 实例类型。您的实例类型必须与为运行它的主机定义的类型之一相匹配。有关 Mac 实例的更多信息以及原生支持 macOS 操作系统的实例类型列表,请参阅《Amazon EC2 用户指南》中的 Amazon EC2 Mac 实例

    • SNS 主题(可选) - 选择一个 SNS 主题来接收来自 EC2 Image Builder 的通知和提醒。

    如果您没有为以下设置提供值,则这些设置将使用特定于服务的默认值(如适用)。

    • VPC、子网和安全组:Image Builder 将使用默认 VPC 和子网。有关配置 VPC 接口端点的更多信息,请参阅 Image Builder 和 AWS PrivateLink 接口 VPC 终端节点

    • 在 “故障排除设置” 部分中,配置以下值:

      • 默认情况下,失败时终止实例复选框为选中状态。但是,当构建失败时,您可以连接到 Amazon EC2 实例进行故障排除。如果您希望实例在构建失败后继续运行,请清除该复选框。

      • 密钥对 — 如果您的 Amazon EC2 实例在构建失败后继续运行,您可以创建密钥对或使用现有密钥对连接到该实例并进行故障排除。

      • 日志 — 您可以指定 Amazon S3 存储桶,Image Builder 可以在其中写入应用程序日志,以帮助对构建和测试进行故障排除。如果您未指定 Amazon S3 存储桶,映像生成器会将应用程序日志写入实例。

    • 实例元数据设置部分中,配置以下值以应用于映像生成器用于构建和测试映像的 Amazon EC2 实例:

      • 选择元数据版本以确定 Amazon EC2 是否需要签名的令牌标头来处理实例元数据检索请求。

        • V1 和 V2(令牌可选):如果您未选择任何内容,则为默认值。

        • V2(令牌必填)

        注意

        我们建议,将 Image Builder 从管道版本中启动的所有 EC2 实例配置为使用 Imdsv2,这样实例元数据检索请求将需要签名令牌标头。

      • 元数据标记响应跃点限制 – 元数据令牌可以传输的网络跃点数。有效范围:1—64。如果您未设置值,映像生成器将应用跳数限制 2。

    • 实例放置设置部分中,配置以下值以应用于映像生成器用于构建和测试映像的 Amazon EC2 实例:

      • 您可以选择 Image Builder 在创建映像期间启动实例的可用区

      • (可选)为运行您启动的实例的服务器选择租赁。默认情况下,Amazon EC2 实例在共享租赁硬件上运行。这表示多个 AWS 账户 可能会共享相同物理硬件。具有 dedicated 租期的实例在单租户硬件上运行。具有 host 租期的实例在专属主机上运行。

        在构建自定义映像之前,Mac 实例需要一台作为先决条件创建的专属主机。为您的 macOS 映像选择 host。然后,您可以选择目标主机或主机资源组来启动实例,但如果您的专属主机启用了自动置放功能,则不需要这样做。有关更多信息,请参阅 Amazon EC2 用户指南Auto-placement中的内容

        • 租赁主机 ID - 运行实例的专属主机的 ID。

        • 租赁主机资源组 - 要在其中启动实例的主机资源组的 Amazon 资源名称 (ARN)。

  6. 基础设施标签部分(可选)中,您可以将元数据标签分配给 Image Builder 在构建过程中启动的 Amazon EC2 实例。以键值对的形式输入标签。

  7. 标签部分(可选)中,您可以将元数据标签分配给 Image Builder 作为输出创建的基础设施配置资源。以键值对的形式输入标签。

AWS CLI

以下步骤说明如何使用 AWS CLI中的 Image Builder create-infrastructure-configuration 命令为您的映像配置基础设施。步骤 2 中的命令采用您在步骤 1 中创建的文件。对于这些示例,步骤 1 中的文件称为 create-infrastructure-configuration.json

以下示例设置了常见的基础设施字段。要在构建和测试实例上要求 IMDSv2 令牌,请添加一个httpTokens设置为的instanceMetadataOptions区块。required

注意

我们建议,将 Image Builder 从管道版本中启动的所有 EC2 实例配置为使用 Imdsv2,这样实例元数据检索请求将需要签名令牌标头。

  1. 创建 CLI 输入 JSON 文件

    以下示例展示了您可能为基础设施配置创建的 JSON 文件的变体。使用文件编辑工具创建您自己的 JSON 文件。

    示例 1:用于保留编译失败后的实例的配置

    此示例指定了两种实例类型,即 m7i.largem7i.xlarge。我们建议指定多种实例类型,因为这允许 Image Builder 从具有足够容量的池中启动实例。这可以减少临时的生成失败次数。

    instanceProfileName 规定了实例配置文件,该文件用于为实例提供执行自定义活动所需的权限。例如,如果您具有一个从 Amazon S3 中检索资源的组件,则实例配置文件需要具有访问这些文件的权限。该实例配置文件还需要具备能使EC2 Image Builder 成功与实例进行通信的最低权限。有关更多信息,请参阅 准备好使用 Image Builder 构建自定义映像

    { "name": "ExampleInfraConfigDontTerminate", "description": "An example that will retain instances of failed builds", "instanceTypes": [ "m7i.large", "m7i.xlarge" ], "instanceProfileName": "myIAMInstanceProfileName", "securityGroupIds": [ "sg-12345678" ], "subnetId": "subnet-12345678", "logging": { "s3Logs": { "s3BucketName": "my-logging-bucket", "s3KeyPrefix": "my-path" } }, "keyPair": "myKeyPairName", "terminateInstanceOnFailure": false, "snsTopicArn": "arn:aws:sns:us-west-2:123456789012:MyTopic" }
    示例 2:具有自动置放功能的 macOS 配置

    此示例为专属主机启用了自动置放功能的 Mac 实例指定实例类型和置放位置。

    { "name": "macOSInfraConfigAutoPlacement", "description": "An example infrastructure configuration for macOS.", "instanceProfileName": "EC2InstanceProfileForImageBuilder", "instanceTypes": ["mac1.metal", "mac2.metal"], "terminateInstanceOnFailure": false, "placement": { "tenancy": "host" } }
    示例 3:指定了主机 ID 的 macOS 配置

    此示例为以特定专属主机为目标的 Mac 实例指定实例类型和置放位置。

    { "name": "macOSInfraConfigHostPlacement", "description": "An example infrastructure configuration for macOS.", "instanceProfileName": "EC2InstanceProfileForImageBuilder", "instanceTypes": ["mac2-m1ultra.metal"], "terminateInstanceOnFailure": false, "placement": { "tenancy": "host", "hostId" : "h-1234567890abcdef0" } }
    示例 4:使用 IMDSv2 和 Amazon S3 日志记录的自定义 VPC

    此示例在特定子网和安全组中启动实例,需要 IMDSv2 令牌,并将应用程序日志写入 Amazon S3。因为示例集合subnetId,所以它也必须设置securityGroupIds

    { "name": "VpcInfraConfigWithLogging", "description": "Build in a custom VPC with IMDSv2 and S3 logging", "instanceTypes": ["m7i.large", "m8i.large"], "instanceProfileName": "EC2InstanceProfileForImageBuilder", "subnetId": "subnet-12345678", "securityGroupIds": ["sg-12345678"], "instanceMetadataOptions": { "httpTokens": "required", "httpPutResponseHopLimit": 2 }, "logging": { "s3Logs": { "s3BucketName": "my-logging-bucket", "s3KeyPrefix": "image-builder-logs" } }, "resourceTags": { "Project": "golden-ami" }, "terminateInstanceOnFailure": true }
    示例 5:在主机资源组中放置专用主机

    此示例的目标是主机资源组,而不是特定的主机 ID。因为tenancyhost,您可以指定主机资源组 ARN。也不要指定hostId.

    { "name": "HostResourceGroupInfraConfig", "instanceProfileName": "EC2InstanceProfileForImageBuilder", "instanceTypes": ["mac2.metal"], "terminateInstanceOnFailure": false, "placement": { "tenancy": "host", "hostResourceGroupArn": "arn:aws:resource-groups:us-west-2:123456789012:group/my-host-group" } }
  2. 当您运行以下命令时,使用您作为输入而创建的文件。
    aws imagebuilder create-infrastructure-configuration --cli-input-json file://create-infrastructure-configuration.json