复制 AMI - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

复制 AMI

您可以在 Amazon 区域内或跨区域复制 Amazon Machine Image (AMI)。可以复制 Amazon EBS-backed AMI 和由实例存储支持的 AMI。您可以复制带加密快照的 AMI,并在复制过程中更改加密状态。您可以复制与共享给您的 AMI。

复制源 AMI 将生成完全相同但独立的新 AMI(我们称之为目标 AMI)。目标 AMI 有自己的唯一 AMI ID。您可以更改或注销源 AMI,这不会对目标 AMI 产生任何影响。反之亦然。

对于 Amazon EBS-backed AMI,每个支持快照将会复制到完全相同但独立的目标快照。如果您将 AMI 复制到新区域,则快照是完整的(非增量)副本。如果您加密未加密的备份快照或将其加密到新 KMS 密钥,则快照是完整(非增量)副本。后续的 AMI 复制操作会生成备份快照的增量副本。

注意事项

  • 您可以使用 IAM policy 授予或拒绝用户复制 AMI 的权限。为 CopyImage 操作指定的资源级权限仅适用于新 AMI。您不能为源 AMI 指定资源级权限。

  • Amazon 不会将启动许可或 Amazon S3 存储桶许可从源 AMI 复制到新 AMI。复制操作完成之后,您可以将启动许可和 Amazon S3 存储桶权限应用于新的 AMI。

  • 您只能复制附加到源 AMI 的用户定义的 AMI 标签。不会复制系统标签(前缀为 aws:)和由其他 Amazon Web Services 账户 附加的用户定义标签。

  • 复制从另一个账户共享的 Amazon Web Services Marketplace AMI 不支持 CopyImage 操作。相反,如果您想在另一个账户中复制 Amazon Web Services Marketplace AMI,则必须执行以下操作:与另一个账户共享 Amazon Web Services Marketplace AMI,然后在另一个账户中使用 Amazon Web Services Marketplace AMI 启动 EC2 实例。然后,您可以使用 CreateImage 操作从实例中创建 AMI。新的 AMI 保留了所有 Amazon Web Services Marketplace 代码。请注意,此过程也适用于直接或间接从 Amazon Web Services Marketplace AMI 派生的任何 AMI。有关创建从实例创建 AMI 的更多信息,请参阅 创建一个由 Amazon EBS 支持的 Linux AMI

成本

复制 AMI 没有任何费用。但要收取标准存储和数据传输费。如果您复制由 EBS 支持的 AMI,则任何其他 EBS 快照的存储将会产生费用。

用于复制实例存储支持的 AMI 的权限

要复制由实例存储支持的 AMI,用户必须具有以下 Amazon S3 权限:s3:CreateBuckets3:GetBucketAcls3:ListAllMyBucketss3:GetObjects3:PutObjects3:PutObjectAcl

以下示例策略允许用户将指定的存储桶中的 AMI 源复制到指定的区域。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": [ "arn:aws:s3:::*" ] }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::ami-source-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetBucketAcl", "s3:PutObjectAcl", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amis-for-123456789012-in-us-east-1*" ] } ] }

要查找 AMI 源存储桶的 Amazon Resource Name (ARN),请访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,在导航窗格中选择 AMIs (AMI),然后在 Source (源) 列中找到该存储桶名称。

注意

仅在用户首次将实例存储支持的 AMI 复制到单个区域时,才需要 s3:CreateBucket 权限。在此之后,将使用已在该区域中创建的 Amazon S3 存储桶来存储您将来复制到该区域的所有 AMIs。

复制 AMI

您可以使用 Amazon Web Services Management Console、Amazon Command Line Interface 或开发工具包,或者 Amazon EC2 API(三者都支持 CopyImage 操作)复制 AMI。

先决条件

创建或获取 Amazon EBS 快照支持的 AMI。请注意,您可以使用 Amazon EC2 控制台搜索 Amazon 提供的各种 AMI。有关更多信息,请参阅 创建一个由 Amazon EBS 支持的 Linux AMI查找 AMI

Console
复制 AMI
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 从控制台导航栏中,选择包含 AMI 的区域。

  3. 在导航窗格中,选择映像AMI 以显示区域中可供您使用的 AMIs 列表。

  4. 选择要复制的 AMI,然后选择操作复制 AMI

  5. Copy AMI(复制 AMI)页上,指定以下信息:

    1. AMI copy name(AMI 副本名称):新 AMI 的名称。您可以在名称中包含操作系统信息,因为我们在显示有关 AMI 的详情时不提供该信息。

    2. Description(描述):默认情况下,描述包括源 AMI 的相关信息,以便您能区分副本和原本。您可以按需更改此描述。

    3. Destination Region(目标区域):在其中复制 AMI 的区域。有关更多信息,请参阅跨区域复制

    4. Copy tags(复制标签):选中此复选框可在复制 AMI 时包含用户定义的 AMI 标签。不会复制系统标签(前缀为 aws:)和由其他 Amazon Web Services 账户 附加的用户定义标签。

    5. Encrypt EBS snapshots of AMI copy(加密 AMI 副本的 EBS 快照):选择此复选框可加密目标快照,或使用不同的密钥对它们进行重新加密。如果您启用默认加密Encrypt EBS snapshots of AMI copy(加密 AMI 副本的 EBS 快照)复选框处于选中状态,无法清除。有关更多信息,请参阅加密和复制

    6. KMS key(KMS 密钥):用于加密目标快照的 KMS 密钥。

    7. 准备好复制 AMI 时,选择复制 AMI

      新 AMI 的初始状态是 Pending。当状态为 Available 时,AMI 复制操作完成。

Amazon CLI
要使用 Amazon CLI 来复制 AMI

您可使用 copy-image 命令复制 AMI。您必须指定源和目标区域。您可以使用 --source-region 参数指定源区域。您可以使用 --region 参数或环境变量指定目标区域。有关更多信息,请参阅配置 Amazon 命令行界面

在复制期间加密目标快照时,您必须指定这些额外参数:--encrypted--kms-key-id

有关示例命令,请参阅《Amazon CLI 命令参考》copy-image 下的示例

PowerShell
使用 Tools for Windows PowerShell 来复制 AMI

您可使用 Copy-EC2Image 命令复制 AMI。您必须指定源和目标区域。您可以使用 -SourceRegion 参数指定源区域。您可以使用 -Region 参数或 Set-AWSDefaultRegion 命令指定目标区域。有关更多信息,请参阅指定 Amazon 区域

在复制期间加密目标快照时,您必须指定这些额外参数:-Encrypted-KmsKeyId

停止待处理的 AMI 复制操作

可以使用 Amazon Web Services Management Console 或命令行来停止待处理的 AMI 复制。

Console
使用控制台停止 AMI 复制操作
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 从导航栏中,从区域选择器中选择目标区域。

  3. 在导航窗格中,选择 AMIs

  4. 选择要停止复制的 AMI,然后选择 Actions(操作)和 Deregister AMI(取消注册 AMI)。

  5. 当系统要求您确认时,选择 Deregister AMI(取消注册 AMI)。

Command line
使用命令行停止 AMI 复制操作

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

跨区域复制

跨不同地理位置复制 AMI 具有以下优势:

  • 一致的全球部署:通过将 AMI 从一个区域复制到另一个区域,您可以根据相同的 AMI 在不同的区域中启动一致的实例。

  • 可扩展性:无论用户身处何处,您都可以更轻松地设计和构建能满足他们需求的全球应用程序。

  • 性能:您可以通过分发您的应用程序以及找到较接近您用户的应用程序的关键组件来提高性能。您还可以利用区域特定的功能,例如,实例类型或其他 Amazon 服务。

  • 高可用性:您可以跨 Amazon 区域设计和部署应用程序以提高可用性。

下图显示源 AMI、在不同的区域中复制的两个 AMIs 以及从它们中启动的 EC2 实例之间的关系。从 AMI 中启动实例时,该实例位于 AMI 所在的区域中。如果您更改源 AMI,并希望在目标区域中的 AMIs 上反映这些更改,您必须将源 AMI 重新复制到目标区域中。


				在不同区域中复制的 AMI

在首次将实例存储支持的 AMI 复制到一个区域时,我们为复制到该区域的 AMIs 创建一个 Amazon S3 存储桶。复制到该区域的所有实例存储支持的 AMIs 存储在该存储桶中。存储桶名称具有以下格式:amis-for-account-in-region-hash。例如:amis-for-123456789012-in-us-east-2-yhjmxvp6

先决条件

在复制 AMI 之前,您必须确保更新源 AMI 的内容以支持在不同的区域中运行。例如,您应更新任何数据库连接字符串或相似的应用程序配置数据,以指向适当的资源。否则,从目标区域上的新 AMI 中启动的实例可能仍会使用源区域中的资源,这可能会影响性能和成本。

限制
  • 目标区域限制为 100 个并发 AMI 副本。

  • 您无法将半虚拟化 (PV) AMI 复制到不支持 PV AMI 的区域。有关更多信息,请参阅Linux AMI 虚拟化类型

跨账户复制

您可以与其他 Amazon 账户共享 AMI。共享 AMI 不影响 AMI 的所有权。拥有它的账户需要支付区域中的存储费用。有关更多信息,请参阅与特定 Amazon 账户共享 AMI

如果您复制已与您的账户共享的 AMI,则您是您的账户中的目标 AMI 的所有者。源 AMI 的所有者需要支付标准 Amazon EBS 或 Amazon S3 传输费用,您需要支付目标区域中的目标 AMI 的存储费用。

资源权限

若要从另一个账户复制与您共享的 AMI,源 AMI 的所有者必须授予您对支持 AMI 的存储的读取权限。存储是关联的 EBS 快照(用于 Amazon EBS-backed AMI)或关联的 S3 存储桶(用于实例存储支持的 AMI)。如果共享 AMI 带有加密快照,拥有者必须同时与您共享一个或多个密钥。有关授予资源权限的更多信息,对于 EBS 快照,请参阅 共享 Amazon EBS 快照,对于 S3 存储桶,请参阅《Amazon Simple Storage Service 用户指南》中的 Amazon S3 中的 Identity and Access Management

注意

若要复制 AMI 及其标签,您必须具有源 AMI 的启动权限。

加密和复制

下表显示了各种 AMI 复制场景的加密支持。尽管可以复制未加密快照来生成加密快照,但是不能复制加密快照来生成未加密快照。

场景 描述 支持
1 未加密到未加密
2 加密到加密
3 未加密到加密
4 加密到未加密
注意

CopyImage 操作期间加密仅适用于 Amazon EBS-backed AMI。因为实例存储支持的 AMI 不依赖于快照,所以不能使用复制来更改器加密状态。

默认情况下(即未指定加密参数的情况)将复制 AMI 的备份快照并保持其原始加密状态。复制未加密快照支持的 AMI 将生成完全相同、也未加密的目标快照。如果源 AMI 受加密快照支持,则复制它将生成一个由相同 Amazon KMS 密钥加密的相同目标快照。在默认情况下,复制多个快照支持的 AMI 将保留其在每个目标快照中的源加密状态。

如果您在复制 AMI 的过程中指定对应加密参数,可以将其备份快照加密或重新加密。以下示例显示为 CopyImage 操作提供加密参数以更改目标 AMI 的加密状态的一个非默认案例。

将未加密的源 AMI 复制到加密目标 AMI

在这种情况下,由未加密根快照支持的 AMI 会复制到带加密根快照的 AMI。CopyImage 操作将使用两个加密参数(包括一个客户托管密钥)调用。因此,根快照的加密状态发生变化,这样目标 AMI 由与原快照具有相同数据的根快照支持,但使用指定的密钥进行加密。在两个 AMI 中,您都会产生快照的存储成本,以及从任一 AMI 启动的任何实例的费用。

注意

启用默认加密与将 AMI 中所有快照的 Encrypted 参数设置为 true 具有相同的效果。


		即时复制 AMI 并加密快照

设置 Encrypted 参数会加密此实例的单个快照。如果您未指定 KmsKeyId 参数,会使用默认客户托管密钥来加密快照副本。

有关复制带加密快照的 AMIs 的更多信息,请参阅将加密与 EBS 支持的 AMI 结合使用