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

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

创建和更新 AMI 分配配置

本节介绍如何创建和更新 Image Builder AMI 的分配配置。

SSM 输出参数的先决条件

在创建用于设置 Amazon Systems Manager 参数存储参数(SSM 参数)的新 AMI 分发配置之前,请确保满足以下先决条件。

执行角色

在中创建管道或使用 create-image 命令时 Amazon CLI,只能指定一个 Image Builder 执行角色。如果您定义了 Image Builder 工作流程执行角色,则需要向该角色添加任何其他功能权限。否则,您将创建一个包含所需权限的新自定义角色。

  • 要在分发期间将输出 AMI ID 存储在 SSM 参数中,您必须在 Image Builder 执行角色中指定ssm:PutParameter操作,并将该参数列为资源。

  • 当您将参数数据类型设置为AWS EC2 Image以向 Systems Manager 发出信号,要求其将参数值作为 AMI ID 进行验证时,还必须添加ec2:DescribeImages操作。

创建 AMI 分发配置

分发配置包括输出 AMI 名称、用于加密的特定区域设置、启动权限以及可以启动输出 AMI 的组织和组织单位 (OUs) 以及许可证配置。 Amazon Web Services 账户

分布配置允许您指定输出 AMI 的名称和描述,授权其他 Amazon Web Services 账户 人启动 AMI,将 AMI 复制到其他账户,以及将 AMI 复制到其他 Amazon 区域。它还允许你将 AMI 导出到亚马逊简单存储服务 (Amazon S3),或者为输出 Windows EC2 配置快速启动。AMIs要公开 AMI,请将启动许可授权账户设置为 all。有关公开 AMI 的示例,请访问以下网址 EC2 ModifyImageAttribute

Console

按照以下步骤在中创建新的 AMI 分发配置 Amazon Web Services Management Console:

  1. 打开 EC2 Image Builder 控制台,网址为https://console.aws.amazon.com/imagebuilder/

  2. 从导航窗格中,选择分配设置。这将显示在您的账户下创建的分配配置的列表。

  3. 选择分配设置面板顶部附近的创建分配设置

  4. 映像类型部分,选择 Amazon Machine Image (AMI) 输出类型。

  5. 常规部分,输入分配配置的名称和可选描述。

  6. 区域设置部分,输入您要分配 AMI 的每个区域的以下详细信息:

    1. 默认情况下,AMI 分配到当前区域(区域 1)。区域 1 是分配的来源。区域 1 的某些设置未开放编辑功能。对于您添加的任何区域,您可以从区域下拉列表中选择一个区域。

      Kms 密钥标 Amazon KMS key 识用于加密目标区域中映像的 EBS 卷。请务必注意,这不适用于该构建在源区域(区域 1)中使用您的账户创建的原始 AMI。在该构建的分配阶段运行的加密仅适用于分配给其他账户或地区的映像。

      要对在源区域为您的账户创建的 AMI 的 EBS 卷进行加密,您必须在映像配方块设备映射(控制台中的存储(卷))中设置 KMS 密钥。

      Image Builder 将 AMI 复制到您为该区域指定的目标账户

      先决条件

      要跨账户复制映像,您必须在所有分配目标账户中创建 EC2ImageBuilderDistributionCrossAccountRole 角色,并将 Ec2ImageBuilderCrossAccountDistributionAccess policy 托管策略附加到该角色。

      输出 AMI 名称为可选项。如果您提供了名称,则最终的输出 AMI 名称会附加一个 AMI 构建时间的时间戳。如果未指定名称,Image Builder 会将构建时间戳附加到配方名称。这样可以确保每次构建的 AMI 名称都是唯一的。

      1. 通过 AMI 共享,您可以向指定的 Amazon 委托人授予从您的 AMI 启动实例的访问权限。如果展开 AMI 共享部分,则可以输入以下详细信息:

        • 启动权限 — 如果您想保持 AMI 有,请选择私有,并允许特定 Amazon 委托人访问您的私有 AMI 启动实例。如果要使 AMI 公开,请选择公开。任何 Amazon 委托人都可以从您的公有 AMI 启动实例。

        • 委托人-您可以为以下类型的 Amazon 委托人授予启动实例的访问权限:

          • Amazon 账户-授予对特定 Amazon 账户的访问权限

          • 组织单位 (OU) — 授予对 OU 及其所有子实体的访问权限。子实体包括 OUs 和 Amazon 帐户。

          • 组织-授予您 Amazon Organizations及其所有子实体的访问权限。子实体包括 OUs 和 Amazon 帐户。

            首先,选择主体类型。然后在下拉列表右侧的框中,输入要授予访问权限的 Amazon 主体的 ID。您可以输入 IDs 多种不同的类型。

      2. 您可以展开 “许可配置” 部分,将使用创建的许可配置附加 Amazon License Manager 到 Image Builder 映像。许可证配置包含基于您的企业协议条款的许可规则。Image Builder 会自动包含与您的基本 AMI 关联的许可证配置。

      3. 您可以展开 Launch 模板配置部分, EC2 指定用于从您创建的 AMI 启动实例的启动模板。

        如果您使用的是 EC2 启动模板,则可以在构建完成后指示 Image Builder 创建包含最新 AMI ID 的启动模板的新版本。要更新启动模板,请按以下方式配置设置:

        • 启动模板名称 — 选择您希望 Image Builder 更新的启动模板的名称。

        • 设置默认版本 — 选中此复选框可将启动模板的默认版本更新为新版本。

        要添加另一个启动模板配置,请选择添加启动模板配置。您在每个区域最多可以拥有五种启动模板配置。

      4. 您可以展开 SSM 参数配置部分来配置 SSM 参数,该参数将存储分发到目标区域的图像的输出 AMI ID。您可以选择在该地区指定一个分销账户。

        参数名称-输入参数的名称。例如 /output/image/param

        数据类型-保留默认值 (AWS EC2 Image)。这会让 Systems Manager 验证参数值以确保它是有效的 AMI ID。

    2. 要为其他区域添加分配设置,请选择添加区域

  7. 完成后,选择创建设置

Amazon CLI

以下示例说明如何采用 Amazon CLI使用 create-distribution-configuration 命令为 AMI 创建新的分配配置。

  1. 创建 CLI 输入 JSON 文件

    使用文件编辑工具创建一个 JSON 文件,其中包含以下示例之一中显示的密钥,以及对您的环境有效的值。这些示例定义了哪些 Amazon Web Services 账户 Amazon Organizations 或哪些组织单位 (OUs) 有权启动您分发到指定区域的 AMI。对文件 create-ami-distribution-configuration.json 进行命名,以便在下一步中使用:

    示例 1:分发到 Amazon Web Services 账户

    此示例将 AMI 分配到两个区域,并指定在每个区域都拥有启动权限的 Amazon Web Services 账户 。

    { "name": "MyExampleAccountDistribution", "description": "Copies AMI to eu-west-1, and specifies accounts that can launch instances in each Region.", "distributions": [ { "region": "us-west-2", "amiDistributionConfiguration": { "name": "Name {{imagebuilder:buildDate}}", "description": "An example image name with parameter references", "amiTags": { "KeyName": "Some Value" }, "launchPermission": { "userIds": [ "987654321012" ] } } }, { "region": "eu-west-1", "amiDistributionConfiguration": { "name": "My {{imagebuilder:buildVersion}} image {{imagebuilder:buildDate}}", "amiTags": { "KeyName": "Some value" }, "launchPermission": { "userIds": [ "100000000001" ] } } } ] }
    示例 2:分发给 Organizations OUs

    此示例将 AMI 分配到源区域,并指定组织和 OU 启动权限。

    { "name": "MyExampleAWSOrganizationDistribution", "description": "Shares AMI with the Organization and OU", "distributions": [ { "region": "us-west-2", "amiDistributionConfiguration": { "name": "Name {{ imagebuilder:buildDate }}", "launchPermission": { "organizationArns": [ "arn:aws:organizations::123456789012:organization/o-myorganization123" ], "organizationalUnitArns": [ "arn:aws:organizations::123456789012:ou/o-123example/ou-1234-myorganizationalunit" ] } } } ] }
    示例 3:将输出的 AMI ID 存储在 SSM 参数中

    此示例将输出 AMI ID 存储在分布区域的 Amazon Systems Manager 参数存储参数中。

    { "name": "SSMParameterOutputAMI", "description": "Updates an SSM parameter with the output AMI ID for the distribution.", "distributions": [ { "region": "us-west-2", "amiDistributionConfiguration": { "name": "Name {{ imagebuilder:buildDate }}" }, "ssmParameterConfigurations": [ { "amiAccountId": "111122223333", "parameterName": "/output/image/param", "dataType": "aws:ec2:image" } ] } ] }
  2. 使用创建的文件作为输入,运行以下命令。
    aws imagebuilder create-distribution-configuration --cli-input-json file://create-ami-distribution-configuration.json
    注意
    • JSON 文件路径开头必须包含 file:// 符号。

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

    有关更多详细信息,请参阅 Amazon CLI 命令参考中的 create-distribution-configuration

更新 AMI 分发配置

您可以更改 AMI 分发配置。但是,所做的更改不适用于 Image Builder 已经分配的任何资源。例如,如果您已将 AMI 分配到某个区域,但随后又将其从分配中移除,则在您手动将其移除之前,已分配的 AMI 将保留在该区域中。

Amazon Web Services Management Console

按照以下步骤进行 AMI 分发配置 Amazon Web Services Management Console:

  1. 打开 EC2 Image Builder 控制台,网址为https://console.aws.amazon.com/imagebuilder/

  2. 从导航窗格中,选择分配设置。这将显示在您的账户下创建的分配配置的列表。

  3. 要查看详细信息或更新分配配置,请选择配置名称链接。这将打开分配设置的详细视图。

    注意

    您也可以选中配置名称旁边的框,然后选择查看详细信息

  4. 要编辑分配配置,请从分配详细信息部分的右上角选择编辑。某些字段已锁定,例如分配配置的名称和显示为区域 1 的默认区域。有关分配配置设置的更多信息,请参阅 创建 AMI 分发配置

  5. 完成后,选择 Save changes(保存更改)。

Amazon CLI

以下示例说明如何通过 Amazon CLI使用 update-distribution-configuration 命令为您的 AMI 更新分配配置。

  1. 创建 CLI 输入 JSON 文件

    使用文件编辑工具创建 JSON 文件,其中包含以下示例中显示的密钥以及对您的环境有效的值。此示例使用名为 update-ami-distribution-configuration.json 的文件。

    { "distributionConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/update-ami-distribution-configuration.json", "description": "Copies AMI to eu-west-2, and specifies accounts that can launch instances in each Region.", "distributions": [ { "region": "us-west-2", "amiDistributionConfiguration": { "name": "Name {{imagebuilder:buildDate}}", "description": "An example image name with parameter references", "launchPermissions": { "userIds": [ "987654321012" ] } } }, { "region": "eu-west-2", "amiDistributionConfiguration": { "name": "My {{imagebuilder:buildVersion}} image {{imagebuilder:buildDate}}", "tags": { "KeyName": "Some value" }, "launchPermissions": { "userIds": [ "100000000001" ] } } } ] }
  2. 使用创建的文件作为输入,运行以下命令。
    aws imagebuilder update-distribution-configuration --cli-input-json file://update-ami-distribution-configuration.json
    注意
    • JSON 文件路径开头必须包含 file:// 符号。

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

    有关更多详细信息,请参阅 Amazon CLI 命令参考中的 update-distribution-configuration。要更新分配配置资源的标签,请参阅 标记资源 一节。

创建分发设置以启用输出的 “ EC2 快速启动” AMIs

以下示例说明如何使用create-distribution-configuration命令从中创建已为您的 AMI 配置了 EC2 快速启动的分发设置 Amazon CLI。

注意

在预先启用 EC2 快速启动的情况下,Image Builder 不支持跨账户分发。 AMIs EC2 必须从目标账户启用快速启动。

  1. 创建 CLI 输入 JSON 文件

    使用文件编辑工具创建一个 JSON 文件,其中包含以下示例中显示的密钥,以及对您的环境有效的值。

    此示例同时启动其所有目标资源的实例,因为并行启动的最大数量大于目标资源数量。该文件在下一步所示的命令示例中被命名为 ami-dist-config-win-fast-launch.json

    { "name": "WinFastLaunchDistribution", "description": "An example of Windows AMI EC2 Fast Launch settings in the distribution configuration.", "distributions": [ { "region": "us-west-2", "amiDistributionConfiguration": { "name": "Name {{imagebuilder:buildDate}}", "description": "Includes Windows AMI EC2 Fast Launch settings.", "amiTags": { "KeyName": "Some Value" } }, "fastLaunchConfigurations": [{ "enabled": true, "snapshotConfiguration": { "targetResourceCount": 5 }, "maxParallelLaunches": 6, "launchTemplate": { "launchTemplateId": "lt-0ab1234c56d789012", "launchTemplateVersion": "1" } }], "launchTemplateConfigurations": [{ "launchTemplateId": "lt-0ab1234c56d789012", "setDefaultVersion": true }] }] }
    注意

    您可以指定 launchTemplateName 而非 launchTemplate 部分中的 launchTemplateId,但不能同时指定名称和 ID。

  2. 使用创建的文件作为输入,运行以下命令。
    aws imagebuilder create-distribution-configuration --cli-input-json file://ami-dist-config-win-fast-launch.json
    注意
    • JSON 文件路径开头必须包含 file:// 符号。

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

    有关更多详细信息,请参阅 Amazon CLI 命令参考中的 create-distribution-configuration

为来自的输出 VM 磁盘创建分发设置 Amazon CLI

以下示例说明如何使用 create-distribution-configuration 命令创建分配设置,以便在每次构建映像时将 VM 映像磁盘导出到 Amazon S3。

  1. 创建 CLI 输入 JSON 文件

    您可以简化在 Amazon CLI中使用的 create-distribution-configuration 命令。为此,请创建一个 JSON 文件,其中包含要传递到命令中的所有导出配置。

    注意

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

    要将数据值作为命令行参数提供,请参阅 Amazon CLI 命令参考中指定的参数名,将 create-distribution-configuration 命令作为选项。

    以下是我们在本示例的 s3ExportConfiguration JSON 对象中指定的参数摘要:

    • roleName(字符串,必填)— 授予 VM Import/Export 权限以将映像导出到 S3 存储桶的角色名称。

    • diskImageFormat(字符串,必填)-将更新的磁盘映像导出为以下支持的格式之一:

      • 虚拟硬盘 (VHD)— 可与 Citrix Xen 和 Microsoft Hyper-V 虚拟化产品兼容。

      • 流优化的 ESX 虚拟机磁盘 (VMDK) — 兼容 ESX VMware 和 VMware vSphere 版本 4、5 和 6。

      • 原始 — 原始格式。

    • s3Bucket(字符串,必填)— 用于存储 VM 的输出磁盘映像的 S3 存储桶。

    将该文件保存为 export-vm-disks.json。在 create-distribution-configuration 命令中使用文件名。

    { "name": "example-distribution-configuration-with-vm-export", "description": "example", "distributions": [ { "region": "us-west-2", "amiDistributionConfiguration": { "description": "example-with-vm-export" }, "s3ExportConfiguration": { "roleName": "vmimport", "diskImageFormat": "RAW", "s3Bucket": "vm-bucket-export" } }], "clientToken": "abc123def4567ab" }
  2. 使用创建的文件作为输入,运行以下命令。
    aws imagebuilder create-distribution-configuration --cli-input-json file://export-vm-disks.json
    注意
    • JSON 文件路径开头必须包含 file:// 符号。

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

    有关更多详细信息,请参阅 Amazon CLI 命令参考中的 create-distribution-configuration