本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建和更新 AMI 分配配置
本节介绍如何创建和更新 Image Builder AMI 的分配配置。
SSM 输出参数的先决条件
在创建用于设置 AWS Systems Manager 参数存储参数(SSM 参数)的新 AMI 分发配置之前,请确保满足以下先决条件。
- 执行角色
-
在中创建管道或使用 create-image 命令时 AWS 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) 以及许可证配置。 AWS 账户
分配配置允许您指定输出 AMI 的名称和描述,授权其他 AWS 账户 人启动 AMI,将 AMI 复制到其他账户,以及将 AMI 复制到其他 AWS 区域。它还允许你将 AMI 导出到亚马逊简单存储服务 (Amazon S3),或者为输出 Windows EC2 配置快速启动。AMIs要公开 AMI,请将启动许可授权账户设置为 all
。有关公开 AMI 的示例,请访问以下网址 EC2 ModifyImageAttribute。
更新 AMI 分发配置
您可以更改 AMI 分发配置。但是,所做的更改不适用于 Image Builder 已经分配的任何资源。例如,如果您已将 AMI 分配到某个区域,但随后又将其从分配中移除,则在您手动将其移除之前,已分配的 AMI 将保留在该区域中。
创建分发设置以启用输出的 “ 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 EC2 age Builder API 参考中的CreateDistributionConfiguration命令。
要将数据值作为命令行参数提供,请参阅 AWS CLI 命令参考中指定的参数名,将 create-distribution-configuration 命令作为选项。
以下是我们在本示例的
s3ExportConfiguration
JSON 对象中指定的参数摘要:-
RoleName(字符串,必填)-向虚拟机授予将图像导出到 S3 存储桶的 Import/Export 权限的角色名称。
-
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" }
-
-
使用创建的文件作为输入,运行以下命令。
aws imagebuilder create-distribution-configuration --cli-input-json file://
export-vm-disks.json
注意
-
JSON 文件路径开头必须包含
file://
符号。 -
JSON 文件的路径应遵循运行命令的基本操作系统的相应约定。例如,Windows 使用反斜杠 (\) 引用目录路径,而 Linux 和 macOS 使用正斜杠 (/)。
有关更多详细信息,请参阅 AWS CLI 命令参考中的 create-distribution-configuration
。 -