使用 Image Builder 设置跨账户 AMI 分配 - EC2 Image Builder
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 Image Builder 设置跨账户 AMI 分配

本节介绍如何配置分发设置以将 Image Builder AMI 交付给您指定的其他账户。

然后,目标账户可以根据需要启动或修改 AMI。

注意

Amazon CLI本部分的命令示例假定您之前创建映像配方和基础设施配置 JSON 文件。要为映像配方创建 JSON 文件,请参阅创建映像配方(Amazon CLI). 要为基础设施配置创建 JSON 文件,请参阅创建基础设施配置(Amazon CLI).

Prerequisites

为确保目标账户可以从 Image Builder 映像成功启动实例,您必须为所有区域中的所有目标账户配置适当的权限。

如果您使用Amazon Key Management Service(Amazon KMS),您必须配置Amazon KMS key适用于用于加密新映像的帐户。

当 Image Builder 对加密 AMI 执行跨账户分发时,源账户中的映像将被解密并推送到目标区域,在那里使用该区域的指定密钥对其进行重新加密。由于 Image Builder 代表目标账户行事,并使用您在目标区域中创建的 IAM 角色,因此该账户必须具有来源区域和目标区域中的密钥的访问权限。

加密密密钥

如果您的映像使用Amazon KMS. 下一部分将介绍 IAM 先决条件。

源账户要求

  • 在您构建和分发 AMI 的所有区域中,在账户中创建 KMS 密钥。您也可以使用现有密钥。

  • 更新所有这些密钥的密钥策略,以允许目标帐户使用您的密钥。

目的地账户要求

  • 将内联策略添加到EC2ImageBuilderDistributionCrossAccountRole这允许角色执行分发加密 AMI 所需的操作。有关 IAM 配置步骤,请参阅IAM 策略先决条件部分。

有关跨账户访问的更多信息Amazon KMS,请参阅允许其他账户中的用户使用 KMS 密钥中的Amazon Key Management Service开发人员指南.

在镜像配方中指定加密密钥,如下所示:

  • 如果您使用的是 Image Builder 控制台,请从加密(KMS 别名)中的下拉列表存储(卷)你食谱的部分。

  • 如果您正在使用CreateImageRecipeAPI 操作,或create-image-recipe中的命令Amazon CLI,请在ebs在部分blockDeviceMappings在你的 JSON 输入中。

    以下 JSON 片段显示了图像配方的加密设置。除了提供加密之外,还必须设置encrypted标志到true.

    { ... "blockDeviceMappings": [ { "deviceName": "Example root volume", "ebs": { "deleteOnTermination": true, "encrypted": true, "iops": 100, "kmsKeyId": "image-owner-key-id", ... }, ... } ], ... }

IAM 策略

要在中配置跨账户分配权Amazon Identity and Access Management(IAM),请按照以下步骤操作:

  1. 要使用跨账户分布的 Image Builder AMI,目标账户所有者必须在其账户中创建一个名为的新 IAM 角色EC2ImageBuilderDistributionCrossAccountRole.

  2. 他们必须附上EC2ImageBuilderCrossAccountDistributionAccess政策转到角色以启用跨账户分配。有关托管策略的更多信息,请参阅托管策略与内联策略中的Amazon Identity and Access Management用户指南.

  3. 验证源账户 ID 是否已添加到附加到目标账户的 IAM 角色的信任策略中。有关信任策略的更多信息,请参阅基于资源的策略中的Amazon Identity and Access Management用户指南.

  4. 如果您分发的 AMI 已加密,则目标账户所有者必须将以下内联策略添加到EC2ImageBuilderDistributionCrossAccountRole在他们的账户中,以便他们可以使用你的 KMS 密钥。这些区域有:Principal部分包含他们的账号。这使 Image Builder 能够在使用时代表他们采取行动Amazon KMS以便使用每个区域的适当密钥加密和解密 AMI。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Allow the role to perform Amazon KMS operations on behalf of the destination account", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*" } ] }

    有关内联策略的更多信息,请参阅内联策略中的Amazon Identity and Access Management用户指南.

  5. 如果您正在使用launchTemplateConfigurations要指定 Amazon EC2 启动模板,还必须将以下策略添加到EC2ImageBuilderDistributionCrossAccountRole在每个目标账户中。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateLaunchTemplateVersion", "ec2:ModifyLaunchTemplate" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/CreatedBy": "EC2 Image Builder" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeLaunchTemplates" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:launch-template/*", "Condition": { "StringEquals": { "aws:RequestTag/CreatedBy": "EC2 Image Builder" } } } ] }

跨账户分配的限制

在账户之间分发 Image Builder 映像时存在一些限制:

  • 每个目标区域的目标账户限制为 50 个并发 AMI 副本。

  • 如果要将半虚拟化 (PV) 虚拟化 AMI 复制到另一个区域,则目标区域必须支持半虚拟化 AMI。有关更多信息,请参阅 Linux AMI 虚拟化类型

  • 不能创建加密快照的未加密副本。如果您未指定Amazon Key Management Service(Amazon KMS) 客户托管密钥KmsKeyId参数中,Image Builder 使用 Amazon Elastic Block Store (Amazon EBS) 的默认密钥。有关更多信息,请参阅 。Amazon EBS 加密中的Amazon Elastic Compute Cloud 用户指南.

有关更多信息,请参阅 。创建分发配置中的EC2 Image Builder API 参考.

为 Image Builder AMI 配置跨账户分配(控制台)

本节介绍如何 Image Builder 用Amazon Web Services Management Console. 配置跨账户分配需要特定的 IAM 权限。你必须完成Prerequisites在继续操作前,请执行此部分。

要在 Image Builder 控制台中创建分配设,请执行以下步骤:

  1. 打开位于 https://console.aws.amazon.com/imagebuilder/的 EC2 Image Builder 控制台

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

  3. 在顶部分配设置页面,选择创建分配设. 这会将您带到创建分配设页.

  4. Image type部分,选择Amazon 系统映像 (AMI)作为输出类型. 这是默认设置。

  5. 普通的部分中,输入名称要创建的分配设置资源的规定的)。

  6. 区域设置部分中,输入要将 AMI 分配到的 12 位账户 ID目标账户对于所选区域,然后按Enter. 这将检查格式是否正确,然后在框下方显示您输入的账户 ID。重复此过程以添加更多账户。

    要删除您输入的帐户,请选择X显示在账户 ID 的右侧。

    输入输出 AMI 名称针对各个区域。

  7. 继续指定所需的任何其他设置,然后选择创建设置以创建新的分发设置资源。

为 Image Builder AMI 配置跨账户分配 (Amazon CLI)

本部分介绍如何配置分配设置文件并使用create-image中的命令Amazon CLI以在账户之间构建和分发 Image Builder AMI。

配置跨账户分配需要特定的 IAM 权限。你必须完成Prerequisites对于本部分,然后再运行create-image命令。

  1. 配置分发设置文件

    在使用create-image中的命令Amazon CLI要创建分配到另一个账户的 Image Builder AMI,您必须创建DistributionConfigurationJSON 结构,用于在AmiDistributionConfiguration设置。您必须指定至少一个AmiDistributionConfiguration在源地区中。

    以下示例文件,名为create-distribution-configuration.json,显示了源区域中跨账户映像分发的配置。

    { "name": "cross-account-distribution-example", "description": "Cross Account Distribution Configuration Example", "distributions": [ { "amiDistributionConfiguration": { "targetAccountIds": ["123456789012", "987654321098"], "name": "Name {{ imagebuilder:buildDate }}", "description": "ImageCopy Ami Copy Configuration" }, "region": "us-west-2" } ] }
  2. 创建分发设置

    使用创建 Image Builder 分发设置资源创建分发配置中的命令Amazon CLI,在命令中提供以下参数:

    • 在中输入分配的名称--name参数。

    • 附加您在--cli-input-json参数。

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

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

你也可以直接在命令中提供 JSON,使用--distributions参数。