本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建和更新AMI分发配置
本节介绍如何创建和更新 Image Builder 的分发配置AMI。
内容
从控制台创建AMI分发配置
分发配置包括输出AMI名称、用于加密的特定区域设置、启动权限以及可以启动输出的AMI组织和组织单位 (OUs) 以及许可证配置。 AWS 账户
要创建新的AMI分发配置,请执行以下操作:
-
打开 EC2 Image Builder 控制台,网址为https://console.aws.amazon.com/imagebuilder/
。 -
从导航窗格中,选择分配设置。这将显示在您的账户下创建的分配配置的列表。
-
选择分配设置面板顶部附近的创建分配设置。
-
在 “图像类型” 部分,选择 Amazon 系统映像 (AMI) 输出类型。
-
在常规部分,输入分配配置的名称和可选描述。
-
在区域设置部分,输入您要分发的每个地区的以下详细信息AMI:
-
默认情况下,会分发到当前区域(区域 1)。AMI区域 1 是分配的来源。区域 1 的某些设置未开放编辑功能。对于您添加的任何区域,您可以从区域下拉列表中选择一个区域。
Kms 密钥标识用于加密目标区域中映像EBS卷的。 AWS KMS key 请务必注意,这不适用于AMI该版本在源区域(区域 1)中使用您的账户创建的原始版本。在该构建的分配阶段运行的加密仅适用于分配给其他账户或地区的映像。
要加密在源区域为您的账户创建的EBS卷,您必须在映像配方块设备映射(控制台中的存储(卷))中设置KMS密钥。AMI
Image Builder 会将其复制AMI到您为该区域指定的目标账户。
先决条件
要跨账户复制映像,您必须在所有分配目标账户中创建
EC2ImageBuilderDistributionCrossAccountRole
角色,并将 Ec2ImageBuilderCrossAccountDistributionAccess policy 托管策略附加到该角色。输出AMI名称是可选的。如果您提供名称,则最终输出AMI名称会附加一个生成时间的时间戳。AMI如果未指定名称,Image Builder 会将构建时间戳附加到配方名称。这样可以确保每个版本的AMI名称都是唯一的。
-
通过共AMI享,您可以向指定的 AWS 委托人授予从您的AMI启动实例的访问权限。如果展开AMI共享部分,则可以输入以下详细信息:
-
启动权限-如果您想保持私有状态,请选择AMI私有,并允许特定 AWS 委托人访问您的私有AMI启动实例。如果要将其公开,请选择 “AMI公开”。任何 AWS 委托人都可以从您的公共场所启动实例AMI。
-
委托人-您可以为以下类型的 AWS 委托人授予启动实例的访问权限:
-
AWS 账户-授予对特定 AWS 账户的访问权限
-
组织单位 (OU) — 授予对 OU 及其所有子实体的访问权限。子实体包括OUs和 AWS 帐户。
-
组织-授予您 AWS Organizations及其所有子实体的访问权限。子实体包括OUs和 AWS 帐户。
首先,选择主体类型。然后在下拉列表右侧的框中,输入要授予访问权限的 AWS 主体的 ID。您可以输入IDs多种不同的类型。
-
-
-
您可以展开许可配置部分,将使用创建的许可配置附加 AWS License Manager 到您的 Image Builder 映像。许可证配置包含基于您的企业协议条款的许可规则。Image Builder 会自动包含与您的基础相关的许可配置AMI。
-
您可以展开 “启动模板配置” 部分,指定用于EC2启动AMI您创建的实例的启动模板。
如果您使用的是EC2启动模板,则可以在构建完成后指示 Image Builder 创建包含最新 AMI ID 的启动模板的新版本。要更新启动模板,请按以下方式配置设置:
-
启动模板名称 — 选择您希望 Image Builder 更新的启动模板的名称。
-
设置默认版本 — 选中此复选框可将启动模板的默认版本更新为新版本。
要添加另一个启动模板配置,请选择添加启动模板配置。您在每个区域最多可以拥有五种启动模板配置。
-
-
-
要为其他区域添加分配设置,请选择添加区域。
-
-
完成后,选择创建设置。
为AMIs来自的输出创建分布设置 AWS CLI
分发配置允许您指定输出的名称和描述AMI,授权其他人启动AMI, AWS 账户 将其复制AMI到其他账户,然后将其复制AMI到其他 AWS 区域。它还允许您将导出AMI到亚马逊简单存储服务 (Amazon S3),或者为输出 Windows EC2 配置快速启动。AMIs要AMI公开,请将启动权限授权账户设置为all
。有关AMI公开的示例,请访问EC2ModifyImageAttribute。
以下示例说明如何使用create-distribution-configuration命令为您AMI创建新的分发配置 AWS CLI。
-
创建CLI输入JSON文件
使用文件编辑工具创建一个JSON文件,其密钥如以下示例之一所示,以及对您的环境有效的值。这些示例定义了哪些 AWS 账户 AWS Organizations 或哪些组织单位 (OUs) 有权发布AMI您分发到指定区域的内容。对文件
create-ami-distribution-configuration.json
进行命名,以便在下一步中使用: -
使用创建的文件作为输入,运行以下命令。
aws imagebuilder create-distribution-configuration --cli-input-json file://
create-ami-distribution-configuration.json
注意
-
您必须在JSON文件路径的开头添加
file://
符号。 -
该JSON文件的路径应遵循运行该命令的基本操作系统的相应约定。例如,Windows 使用反斜杠 (\) 引用目录路径,而 Linux 和 macOS 使用正斜杠 (/)。
有关更多详细信息,请参阅 AWS CLI 命令参考中的 create-distribution-configuration
。 -
从控制台更新AMI分发设置
您可以使用 Image Builder 控制台更改AMI分发设置。更新后的分配设置将用于以后的所有自动和手动管道部署。但是,所做的更改不适用于 Image Builder 已经分配的任何资源。例如,如果您已AMI将一个分发给某个区域,但随后又将其从分配中删除,则在您手动将其移除之前,已经分发的将保留在该区域中。AMI
更新AMI分发配置
-
打开 EC2 Image Builder 控制台,网址为https://console.aws.amazon.com/imagebuilder/
。 -
从导航窗格中,选择分配设置。这将显示在您的账户下创建的分配配置的列表。
-
要查看详细信息或更新分配配置,请选择配置名称链接。这将打开分配设置的详细视图。
注意
您也可以选中配置名称旁边的框,然后选择查看详细信息。
-
要编辑分配配置,请从分配详细信息部分的右上角选择编辑。某些字段已锁定,例如分配配置的名称和显示为区域 1 的默认区域。有关分配配置设置的更多信息,请参阅 从控制台创建AMI分发配置。
-
完成后,选择 Save changes(保存更改)。
创建分发设置以启用输出的 “EC2快速启动” AMIs
以下示例说明如何使用create-distribution-configuration
注意
在预先启用EC2快速启动的情况下,Image Builder 不支持跨账户分发。AMIs EC2必须从目标账户启用快速启动。
-
创建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。 -
使用创建的文件作为输入,运行以下命令。
aws imagebuilder create-distribution-configuration --cli-input-json file://
ami-dist-config-win-fast-launch.json
注意
-
您必须在JSON文件路径的开头添加
file://
符号。 -
该JSON文件的路径应遵循运行该命令的基本操作系统的相应约定。例如,Windows 使用反斜杠 (\) 引用目录路径,而 Linux 和 macOS 使用正斜杠 (/)。
有关更多详细信息,请参阅 AWS CLI 命令参考中的 create-distribution-configuration
。 -
为来自的输出 VM 磁盘创建分发设置 AWS CLI
以下示例说明如何使用 create-distribution-configuration 命令创建分配设置,以便在每次构建映像时将 VM 映像磁盘导出到 Amazon S3。
-
创建CLI输入JSON文件
您可以简化在 AWS CLI中使用的 create-distribution-configuration 命令。为此,请创建一个JSON文件,其中包含要传递到命令中的所有导出配置。
注意
JSON文件中数据值的命名约定遵循为 Image Builder API 操作请求参数指定的模式。要查看API命令请求参数,请参阅 Im EC2age Builder API 参考中的CreateDistributionConfiguration命令。
要将数据值作为命令行参数提供,请参阅 AWS CLI 命令参考中指定的参数名,将 create-distribution-configuration 命令作为选项。
以下是我们在
s3ExportConfiguration
JSON对象中为本示例指定的参数的摘要:-
roleName(字符串,必填)-授予虚拟机导入/导出权限以将图像导出到您的 S3 存储桶的角色名称。
-
diskImageFormat(字符串,必填)-将更新的磁盘映像导出为以下支持的格式之一:
-
虚拟硬盘 (VHD) — 兼容 Citrix Xen 和微软 Hyper-V 虚拟化产品。
-
流优化的ESX虚拟机磁盘 (VMDK)-与VMware vSphere 版本 4、5 VMware ESX 和 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" }
-
-
使用创建的文件作为输入,运行以下命令。
aws imagebuilder create-distribution-configuration --cli-input-json file://
export-vm-disks.json
注意
-
您必须在JSON文件路径的开头添加
file://
符号。 -
该JSON文件的路径应遵循运行该命令的基本操作系统的相应约定。例如,Windows 使用反斜杠 (\) 引用目录路径,而 Linux 和 macOS 使用正斜杠 (/)。
有关更多详细信息,请参阅 AWS CLI 命令参考中的 create-distribution-configuration
。 -
从更新AMI分发设置 AWS CLI
以下示例说明如何使用update-distribution-configuration
-
创建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" ] } } } ] }
-
使用创建的文件作为输入,运行以下命令。
aws imagebuilder update-distribution-configuration --cli-input-json file://
update-ami-distribution-configuration.json
注意
-
您必须在JSON文件路径的开头添加
file://
符号。 -
该JSON文件的路径应遵循运行该命令的基本操作系统的相应约定。例如,Windows 使用反斜杠 (\) 引用目录路径,而 Linux 和 macOS 使用正斜杠 (/)。
有关更多详细信息,请参阅 AWS CLI 命令参考中的 update-distribution-configuration
。要更新分配配置资源的标签,请参阅 标记资源 一节。 -