如何跨账户共享加密的 AMI 或快照以启动加密的 Amazon EC2 实例?
我想跨 AWS 账户共享加密的亚马逊机器映像 (AMI) 或加密的 Amazon Elastic Block Store (Amazon EBS) 快照。我想使用 AMI 或快照启动加密的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
简短描述
要在账户和 AWS 区域之间自动共享加密的 AMI 或 Amazon EBS 快照,请使用 AWSSupport-ShareEncryptedAMIOrEBSSnapshot 运行手册。
或者,手动修改您的配置以共享加密的 AMI 和快照。
重要事项: AWSSupport-ShareEncryptedAMIOrEBSSnapshot 运行手册会修改您的资源以配置跨账户访问权限。跨区域复制资源可能会产生费用。如果您使用 AWS 托管式密钥,则运行手册会自动创建客户管理型密钥。该运行手册使用密钥来复制和共享 AMI 或快照。您不能使用 AWS 托管式密钥手动共享加密的 AMI 或快照。
解决方法
注意: 如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
使用 AWSSupport-ShareEncryptedAMIOrEBSSnapshot 自动共享加密的 AMI 或 Amazon EBS 快照
先决条件: 确保遵守以下配置要求:
- 您有正确的目标账户 ID。
- 您的 AWS Identity and Access Management (IAM) 用户或角色拥有所需的权限。有关详细信息,请参阅 AWSSupport-ShareEncryptedAMIOrEBSSnapshot 上的所需的 IAM 权限。
- 您的目标账户允许其用户或角色使用源账户中的 AWS Key Management Service (AWS KMS) 密钥启动加密实例。有关 IAM 策略的示例,请参阅 AWSSupport-ShareEncryptedAMIOrEBSSnapshot 上的目标账户所需的 AWS Identity and Access Management 策略。
注意: 该运行手册会自动修改源账户中的 AWS KMS 密钥策略,以授予目标账户跨账户访问权限。您只需在目标账户中配置 IAM 用户或角色权限。 - AMI 处于 Available(可用)状态或 Amazon EBS 快照处于 Completed(已完成)状态。
- 要跨区域复制,客户管理型 AWS KMS 密钥必须存在且在目标区域中设置为 Enabled(已启用)。要检查密钥状态,请运行以下 describe-key AWS CLI 命令:
注意: 将 key-example-id 替换为您的 AWS KMS 密钥 ID,将 destination-region 替换为您的目标账户的区域。aws kms describe-key --key-id key-example-id --region destination-region - 客户管理型 AWS KMS 密钥不得是 AWS 托管式密钥。
要运行该运行手册,请参阅 AWSSupport-ShareEncryptedAMIOrEBSSnapshot 上的说明。确保在具有 AMI 或快照的源账户中运行该运行手册。
注意: 如果失败,运行手册会自动回滚更改。但是,如果回滚失败,请手动检查您的账户以确认没有额外的 AMI 或快照副本。此外,请确保 LaunchPermission 和 CreateVolumePermission 仅列出所需的账户,并确保 AWS KMS 密钥策略处于其原始状态。
手动共享加密的 AMI
先决条件: 确保遵守共享 AMI 的要求。
要手动跨账户共享加密的 AMI,请完成以下步骤:
- 查看 AMI 加密详细信息。
注意: 您无法跨账户共享 AWS 托管式密钥。因此,您无法共享使用默认 AWS 托管式密钥加密的 AMI。如果您使用了 AWS 托管式密钥来加密 AMI,请复制 AMI 并使用客户管理型密钥对新 AMI 进行加密。 - 与目标账户共享 AMI。
注意: 目标账户是通过共享的自定义 AMI 启动加密的 EC2 实例的账户。 - 编辑密钥策略以允许目标账户中的用户访问 AWS KMS 密钥。
- 在目标账户中创建 IAM 用户或角色。然后,向该角色附加一个策略,以授予该角色对 AWS KMS 密钥的 DescribeKey、ReEncrypt*、Decrypt、GenerateDataKeyWithoutPlainText 和 CreateGrant 权限。
策略示例:
注意: 将 111111111111 替换为包含加密 AMI 的源账户 ID,将 us-east-1 替换为您的区域,将 cmkSource 替换为客户管理型密钥的 ID。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:ReEncrypt*", "kms:Decrypt", "kms:GenerateDataKeyWithoutPlainText", "kms:CreateGrant" ], "Resource": [ "arn:aws:kms:us-east-1:111111111111:key/cmkSource" ] } ] } - 要从共享 AMI 启动实例,请在目标账户中打开 Amazon EC2 控制台。
- 在导航窗格中,选择 EC2 Dashboard(EC2 控制面板),然后选择 Launch instance(启动实例)。
- 在 Names and tags(名称和标签)下,对于 Name(名称),输入您的 EC2 实例的名称。
- 在 Application and OS Images (Amazon Machine Image)(应用程序和操作系统映像(亚马逊机器映像))下,选择 Browse more AMIs(浏览更多 AMI)以查找共享的加密 AMI。
- 选择 My AMIs(我的 AMI),然后选择 Shared with me(与我共享)。
- 在 Instance type(实例类型)下,选择一个实例类型。
- 在 Key pair (login)(密钥对(登录))下,对于 Key pair name(密钥对名称),选择一个密钥对。或者,创建新的密钥对。
- (可选)在 Network settings(网络设置)下,选择 Edit(编辑),然后选择您的虚拟私有云 (VPC) 或子网。
- 在 Configure storage(配置存储)下,选择 Advanced(高级)。
- 在 EBS Volumes(EBS 卷)下,展开 Volume(卷)。
- 在 Encrypted(加密)下,选择 Encrypted(加密)。
- 在 KMS key(KMS 密钥)下,选择 Specify a custom value(指定自定义值),然后输入您的密钥的完整 Amazon 资源名称 (ARN),例如 arn:aws:kms:us-east-1:111111111111:key/key-id。
注意: 如果您未选择 AWS KMS 密钥,则 Amazon EC2 将使用目标账户的默认密钥来进行 Amazon EBS 加密。 - 在 Summary(摘要)下,选择 Launch instance(启动实例)。
手动共享加密快照
先决条件: 确保遵守共享快照的要求。
要手动跨账户共享加密快照,请完成以下步骤:
- 查看快照加密详细信息。
注意: 您无法跨账户共享 AWS 托管式密钥。因此,您无法共享使用默认 AWS 托管式密钥加密的快照。如果您使用了 AWS 托管式密钥来加密快照,请复制快照并使用客户管理型密钥对新快照进行加密。 - 与目标账户共享快照。
注意: 目标账户是从共享的加密快照创建卷的账户。 - 编辑密钥策略以允许目标账户中的用户访问 AWS KMS 密钥。
- 在目标账户中创建 IAM 用户或角色。然后,向该角色附加一个策略,以授予该角色对 AWS KMS 密钥的 DescribeKey、ReEncrypt*、Decrypt、GenerateDataKeyWithoutPlainText 和 CreateGrant 权限。
策略示例:
注意: 将 111111111111 替换为包含加密 AMI 的源账户 ID,将 us-east-1 替换为您的区域,将 cmkSource 替换为客户管理型密钥的 ID。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:ReEncrypt*", "kms:Decrypt", "kms:GenerateDataKeyWithoutPlainText", "kms:CreateGrant" ], "Resource": [ "arn:aws:kms:us-east-1:111111111111:key/cmkSource" ] } ] } - 在目标账户中从共享快照创建卷。
相关信息
- 语言
- 中文 (简体)

This article was reviewed and updated on 2026-03-06.
相关内容
AWS 官方已更新 10 个月前