

# 复制 Amazon EC2 AMI
<a name="CopyingAMIs"></a>

如果需要跨多个区域统一配置 Amazon EC2 实例，您可以将单个亚马逊机器映像（AMI）作为模板来启动所有实例。但由于 AMI 属于区域特定的资源，要在特定 AWS 区域中启动实例，该 AMI 必须位于该区域。因此，要在多个区域使用相同的 AMI，必须将其从源区域复制到每个目标区域。

用于复制 AMI 的方法取决于您是*在同一[分区](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#partition)内*跨区域复制，还是*跨不同分区*复制：
+ **跨区域复制** – *在同一分区内*跨区域复制 AMI，例如，在商业分区内跨区域复制。本主题中介绍的就是这种复制方法。
+ **跨分区复制** – 将 AMI *从一个分区复制到另一个分区*，例如，从商业分区复制到 AWS GovCloud (US) 分区。有关此复制方法的更多信息，请参阅[存储和还原 AMI允许的 AMI](ami-store-restore.md)。
+ **跨账户复制** – 创建由其他 AWS 账户[与您的 AWS 账户共享](sharingamis-explicit.md)的 AMI 的副本。本主题中介绍的就是这种复制方法。

对于跨区域和跨账户 AMI 复制，完成复制操作需要的时间为尽力完成的时间。如果需要控制完成时间，您可以指定一个介于 15 分钟到 48 小时之间的完成时限，从而确保在所需的时限内复制 AMI。基于时间的 AMI 复制操作会产生额外的费用。有关更多信息，请参阅《Amazon EBS 用户指南》中的 [Time-based copies](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html)**。

**Topics**
+ [

## 注意事项
](#copy-ami-considerations)
+ [

## 成本
](#copy-ami-costs)
+ [

# 授予复制 Amazon EC2 AMI 的权限
](copy-ami-permissions.md)
+ [

## 复制 AMI
](#ami-copy-steps)
+ [

## 停止待处理的 AMI 复制操作
](#ami-copy-stop)
+ [

# Amazon EC2 AMI 复制工作原理
](how-ami-copy-works.md)

## 注意事项
<a name="copy-ami-considerations"></a>
+ **复制 AMI 的权限** – 您可以使用 IAM 策略授予或拒绝用户复制 AMI 的权限。从 2024 年 10 月 28 日开始，您可以为源 AMI 上的 `CopyImage` 操作指定资源级权限。新 AMI 的资源级权限与以前一样可用。
+ **启动权限和 Amazon S3 存储桶权限** – AWS 不会将启动权限或 Amazon S3 存储桶权限从源 AMI 复制到新 AMI。复制操作完成之后，您可以将启动许可和 Amazon S3 存储桶权限应用于新的 AMI。
+ **标签** – 您只能复制附加到源 AMI 的用户定义的 AMI 标签。不会复制系统标签（前缀为 `aws:`）和由其他 AWS 账户 附加的用户定义标签。复制 AMI 时，您可以向新 AMI 及其备份快照附加新标签。
+ **基于时间的 AMI 复制配额** – 达到*累积快照复制吞吐量配额*后，后续基于时间的 AMI 复制请求将会失败。有关更多信息，请参阅《Amazon EBS 用户指南》中的 [Quotas for time-based copies](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html#time-based-copies-quota)**。
+ **支持的源-目标复制** – 源 AMI 的位置决定您是否可以复制它以及新 AMI 允许的目标：
  + 如果源 AMI 位于某个区域，您可以在该区域内复制它，或者将其复制到另一个区域、与该区域关联的 Outpost 或该区域的本地区域。
  + 如果源 AMI 位于某个本地区域，您可以在该本地区域内复制它，或者将其复制到该本地区域的父区域或具有相同父区域的某些其他本地区域。
  + 如果源 AMI 位于某个 Outpost 上，则您无法复制它。
+ **源和目标的 CLI 参数** – 使用 CLI 时，支持通过以下参数来指定要复制的 AMI 的源位置和新 AMI 的目标。请注意，复制操作必须在目标区域中启动；如果省略 `--region` 参数，则目标将采用 AWS CLI 设置中配置的默认区域。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/CopyingAMIs.html)

## 成本
<a name="copy-ami-costs"></a>

如果未指定完成时间，则复制 AMI 不会产生任何费用。而基于时间的 AMI 复制操作会产生额外的费用。有关更多信息，请参阅《Amazon EBS 用户指南》中的 [Time-based copies](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html#time-based-copies-pricing)**。

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

# 授予复制 Amazon EC2 AMI 的权限
<a name="copy-ami-permissions"></a>

要复制 EBS-backed AMI 或 Amazon S3 支持的 AMI，您需要以下 IAM 权限：
+ `ec2:CopyImage` – 复制 AMI。对于 EBS-backed AMI，它还授予复制 AMI 支持快照的权限。
+ `ec2:CreateTags` – 标记目标 AMI。对于 EBS-backed AMI，它还授予标记目标 AMI 支持快照的权限。

如果您要复制由实例存储支持的 AMI，则需要以下*额外的* IAM 权限：
+ `s3:CreateBucket` – 在目标区域为新的 AMI 创建 S3 存储桶
+ `s3:PutBucketOwnershipControls` – 为新创建的 S3 存储桶启用 ACL，以便可以使用 `aws-exec-read` [标准 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) 写入对象
+ `s3:GetBucketAcl` – 读取源存储桶的 ACL
+ `s3:ListAllMyBuckets` – 在目标区域为 AMI 查找现有 S3 存储桶
+ `s3:GetObject` – 读取源存储桶中的对象
+ `s3:PutObject` – 将对象写入目标存储桶
+ `s3:PutObjectAcl` – 将新对象的权限写入目标存储桶

**注意**  
从 2024 年 10 月 28 日开始，您可以为源 AMI 上的 `CopyImage` 操作指定资源级权限。目标 AMI 的资源级权限与以前一样可用。有关更多信息，请参阅《*服务授权参考*》中的 [Amazon EC2 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions)下的表中的 **CopyImage**。

## 用于复制 EBS-backed AMI 并标记目标 AMI 和快照的 IAM policy 示例
<a name="permissions-to-copy-ebs-backed-ami"></a>

以下示例策略授予您复制任何 EBS-backed AMI 并标记目标 AMI 及其支持快照的权限。

**注意**  
从 2024 年 10 月 28 日开始，您可以在 `Resource` 元素中指定快照。有关更多信息，请参阅《*服务授权参考*》中的 [Amazon EC2 定义的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions)下的表中的 **CopyImage**。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "PermissionToCopyAllImages",
        "Effect": "Allow",
        "Action": [
            "ec2:CopyImage",
            "ec2:CreateTags"
        ],
        "Resource": [
            "arn:aws:ec2:*::image/*",
            "arn:aws:ec2:*::snapshot/*"
        ]
    }]
}
```

------

## 用于复制 EBS-backed AMI 但拒绝标记新快照的 IAM policy 示例
<a name="permissions-to-copy-ebs-backed-ami-but-deny-tagging-new-snapshots"></a>

当您获取 `ec2:CopySnapshot` 权限时，系统会自动授予 `ec2:CopyImage` 权限。可以明确拒绝标记新的支持快照的权限，从而覆盖 `ec2:CreateTags` 操作的 `Allow` 效果。

以下示例策略授予您复制任何 EBS-backed AMI 但拒绝您标记目标 AMI 的新支持快照的权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": [
                "ec2:CopyImage",
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*::image/*",
                "arn:aws:ec2:*::snapshot/*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:::snapshot/*"
        }
    ]
}
```

------

## 用于复制 Amazon S3 支持的 AMI 并标记目标 AMI 的 IAM 策略示例
<a name="permissions-to-copy-instance-store-backed-ami"></a>

以下示例策略授予您将指定源存储桶中任何 Amazon S3 支持的 AMI 复制到指定区域并标记目标 AMI 的权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "PermissionToCopyAllImages",
            "Effect": "Allow",
            "Action": [
                "ec2:CopyImage",
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:*::image/*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:GetBucketAcl",
                "s3:PutObjectAcl",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amis-for-111122223333-in-us-east-2-hash"
            ]
        }
    ]
}
```

------

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

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

## 复制 AMI
<a name="ami-copy-steps"></a>

您可以复制您自己拥有的 AMI，也可以复制其他账户与您共享的 AMI。有关支持的源和目标组合，请参阅[注意事项](#copy-ami-considerations)。

------
#### [ Console ]

**复制 AMI**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

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

1. 在导航窗格中，选择 **AMI** 以显示区域中可供您使用的 AMI 列表。

1. 如果看不到您要复制的 AMI，请选择其他筛选条件。您可以按 AMI **我拥有的**、**私有映像**、**公共映像**和**禁用映像**进行筛选。

1. 选择要复制的 AMI，然后选择**操作**、**复制 AMI**。

1. 在**复制亚马逊机器映像（AMI）**页面上，指定以下信息：

   1. **AMI copy name**（AMI 副本名称）：新 AMI 的名称。您可以在名称中包含操作系统信息，因为 Amazon EC2 在显示有关 AMI 的详细信息时不提供该信息。

   1. **Description**（描述）：默认情况下，描述包括源 AMI 的相关信息，以便您能区分副本和原本。您可以按需更改此描述。

   1. **Destination Region**（目标区域）：在其中复制 AMI 的区域。有关更多信息，请参阅[跨区域复制](how-ami-copy-works.md#copy-amis-across-regions)和[跨账户复制](how-ami-copy-works.md#copy-ami-across-accounts)。

   1. **复制标签**：选中此复选框可在复制 AMI 时包含用户定义的 AMI 标签。不会复制系统标签（前缀为 `aws:`）和由其他 AWS 账户 附加的用户定义标签。

   1. **基于时间的复制**：您可以指定复制操作是在特定时限内完成还是尽力完成，如下所示：
      + 要在特定时限内完成复制，请执行以下操作：
        + 选择**启用基于时间的复制**。
        + 对于**完成时限**，输入允许执行复制操作的分钟数（以 15 分钟为增量）。此完成期限将会应用到与该 AMI 关联的所有快照。

          有关更多信息，请参阅《Amazon EBS 用户指南》中的 [Time-based copies](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html)**。
      + 要尽力完成复制，请执行以下操作：
        + 保持取消选择**启用基于时间的复制**。

   1. （仅限 EBS-backed AMI）**加密 AMI 副本的 EBS 快照**：选择此复选框可加密目标快照，或使用不同的密钥对它们进行重新加密。如果启用默认加密，**加密 AMI 副本的 EBS 快照**复选框处于选中状态，无法清除。有关更多信息，请参阅 [加密和复制](how-ami-copy-works.md#ami-copy-encryption)。

   1. （仅限 EBS-backed AMI）**KMS 密钥**：用于加密目标快照的 KMS 密钥。

   1. **标签**：您可以使用相同的标签来标记新的 AMI 和新快照，也可以使用不同的标签来标记它们。
      + 要使用*相同*标签标记新的 AMI 和新快照，请选择**将映像和快照一起标记**。相同的标签将应用于新的 AMI 和创建的每个快照。
      + 要使用*不同*的标签标记新的 AMI 和新的快照，请选择**分别标记映像和快照**。对新的 AMI 和创建的快照应用了不同的标签。但是，请注意，创建的所有新快照都获得相同的标签；您不能使用不同的标签来标记每个新快照。

      要添加标签，请选择 **Add tag (添加标签)**，然后输入该标签的键和值。对每个标签重复此操作。

   1. 准备好复制 AMI 时，选择**复制 AMI**。

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

------
#### [ AWS CLI ]

**将 AMI 从一个区域复制到另一个区域**  
使用 [copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 命令。您必须指定源和目标区域。您可以使用 `--source-region` 参数指定源区域。您可以使用 `--region` 参数指定目标区域（或者省略此参数以采用 AWS CLI 设置中配置的默认区域）。

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region us-west-2 \
    --name my-ami \
    --region us-east-1
```

要在复制期间加密目标快照，您必须指定以下额外的参数：`--encrypted` 和 `--kms-key-id`。

**将 AMI 从区域复制到本地区域**  
使用 [copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 命令。必须指定源和目标。您可以使用 `--source-region` 参数指定源区域。可以使用 `--destination-availability-zone` 参数指定目标本地区域（可以改用 `--destination-availability-zone-id`）。请注意，只能将 AMI 从一个区域复制到同一区域内的本地区域。

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region cn-north-1 \
    --destination-availability-zone cn-north-1-pkx-1a \
    --name my-ami \
    --region cn-north-1
```

**将 AMI 从本地区域复制到区域**  
使用 [copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 命令。必须指定源和目标。您可以使用 `--source-region` 参数指定源区域。使用 `--region` 参数指定目标区域（或者省略此参数以采用 AWS CLI 设置中配置的默认区域）。源本地区域是根据指定源 AMI ID 的位置采用的。请注意，只能将 AMI 从本地区域复制到其父区域。

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region cn-north-1 \
    --name my-ami \
    --region cn-north-1
```

**将 AMI 从一个本地区域复制到另一个本地区域**  
使用 [copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 命令。必须指定源和目标。可以使用 `--source-region` 参数指定本地区域的源区域。可以使用 `--destination-availability-zone` 参数指定目标本地区域（可以改用 `--destination-availability-zone-id`）。源本地区域是根据指定源 AMI ID 的位置采用的。使用 `--region` 参数指定目标本地区域的父区域（或者省略此参数以采用 AWS CLI 设置中配置的默认区域）。

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region cn-north-1 \
    --destination-availability-zone cn-north-1-pkx-1a \
    --name my-ami \
    --region cn-north-1
```

------
#### [ PowerShell ]

**将 AMI 从一个区域复制到另一个区域**  
使用 [Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) cmdlet。您必须指定源和目标区域。您可以使用 `-SourceRegion` 参数指定源区域。您可以使用 `-Region` 参数或 [Set-AWSDefaultRegion](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-installing-specifying-region.html) cmdlet 指定目标区域。

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion us-west-2 `
    -Name my-ami `
    -Region us-east-1
```

要在复制期间加密目标快照，您必须指定以下额外的参数：`-Encrypted` 和 `-KmsKeyId`。

**将 AMI 从区域复制到本地区域**  
使用 [Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) cmdlet。必须指定源和目标。您可以使用 `-SourceRegion` 参数指定源区域。可以使用 `-DestinationAvailabilityZone` 参数指定目标本地区域（可以改用 `-DestinationAvailabilityZoneId`）。请注意，只能将 AMI 从一个区域复制到同一区域内的本地区域。

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion cn-north-1 `
    -DestinationAvailabilityZone cn-north-1-pkx-1a `
    -Name my-ami `
    -Region cn-north-1
```

**将 AMI 从本地区域复制到区域**  
使用 [Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) cmdlet。必须指定源和目标。您可以使用 `-SourceRegion` 参数指定源区域。使用 `-Region` 参数或 [Set-AWSDefaultRegion](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-installing-specifying-region.html) cmdlet 指定目标区域。源本地区域是根据指定源 AMI ID 的位置采用的。请注意，只能将 AMI 从本地区域复制到其父区域。

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion cn-north-1 `
    -Name my-ami `
    -Region cn-north-1
```

**将 AMI 从一个本地区域复制到另一个本地区域**  
使用 [Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) cmdlet。必须指定源和目标。可以使用 `-SourceRegion` 参数指定本地区域的源区域。可以使用 `-DestinationAvailabilityZone` 参数指定目标本地区域（可以改用 `-DestinationAvailabilityZoneId`）。源本地区域是根据指定源 AMI ID 的位置采用的。使用 `-Region` 参数或 [Set-AWSDefaultRegion](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-installing-specifying-region.html) cmdlet 指定目标本地区域的父区域。

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion cn-north-1 `
    -DestinationAvailabilityZone cn-north-1-pkx-1a `
    -Name my-ami `
    -Region cn-north-1
```

------

## 停止待处理的 AMI 复制操作
<a name="ami-copy-stop"></a>

您可以使用以下过程停止待处理的 AMI 复制。

------
#### [ Console ]

**停止 AMI 复制操作**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 从导航栏中，从区域选择器中选择目标区域。

1. 在导航窗格中，选择 **AMIs**。

1. 选择要停止复制的 AMI，然后选择**操作**、**取消注册 AMI**。

1. 当系统要求您确认时，选择 **Deregister AMI**（取消注册 AMI）。

------
#### [ AWS CLI ]

**停止 AMI 复制操作**  
使用 [deregister-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/deregister-image.html) 命令。

```
aws ec2 deregister-image --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**使用以下方法停止 AMI 复制操作**  
使用 [Unregister-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Image.html) cmdlet。

```
Unregister-EC2Image -ImageId ami-0abcdef1234567890
```

------

# Amazon EC2 AMI 复制工作原理
<a name="how-ami-copy-works"></a>

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

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

**Topics**
+ [

## 跨区域复制
](#copy-amis-across-regions)
+ [

## 跨账户复制
](#copy-ami-across-accounts)
+ [

## 基于时间的 AMI 复制操作
](#ami-time-based)
+ [

## 加密和复制
](#ami-copy-encryption)

## 跨区域复制
<a name="copy-amis-across-regions"></a>

跨不同地理位置复制 AMI 具有以下优势：
+ 一致的全球部署：通过将 AMI 从一个区域复制到另一个区域，您可以根据相同的 AMI 在不同的区域中启动一致的实例。
+ 可扩展性：无论用户身处何处，您都可以更轻松地设计和构建能满足他们需求的全球应用程序。
+ 性能：您可以通过分发您的应用程序以及找到较接近您用户的应用程序的关键组件来提高性能。您还可以利用区域特定的功能，例如，实例类型或其他 AWS 服务。
+ 高可用性：您可以跨 AWS 区域设计和部署应用程序以提高可用性。

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

![\[在不同区域中复制的 AMI\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/ami_copy.png)


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

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

**限制**
+ 目标区域限制为 300 个并发 AMI 复制操作。这也适用于基于时间的 AMI 复制操作。
+ 您无法将半虚拟化（PV）AMI 复制到不支持 PV AMI 的区域。有关更多信息，请参阅 [虚拟化类型](ComponentsAMIs.md#virtualization_types)。

## 跨账户复制
<a name="copy-ami-across-accounts"></a>

如果[与您的 AWS 账户 共享](sharingamis-explicit.md)另一 AWS 账户 的 AMI，您可以复制共享的 AMI。这称为跨账户复制。与您共享的 AMI 就是源 AMI。复制源 AMI 时，即创建了一个新的 AMI。新的 AMI 通常称为目标 AMI。

**AMI 成本**
+ 对于共享 AMI，共享 AMI 的账户要支付该区域的存储费用。
+ 如果您复制了与您的账户共享的 AMI，则您就是账户中目标 AMI 的所有者。
  + 源 AMI 的所有者需要支付标准 Amazon EBS 或 Amazon S3 传输费用。
  + 您需要支付目标区域中的目标 AMI 存储费用。

**资源权限**  
要复制其他账户与您共享的 AMI，源 AMI 的所有者必须授予您对支持该 AMI 的存储的读取权限，而不仅限于该 AMI 本身的权限。存储是关联的 EBS 快照（用于 Amazon EBS-backed AMI）或关联的 S3 存储桶（用于 Amazon S3 支持的 AMI）。如果共享 AMI 具有加密快照，则拥有者必须同时与您共享一个或多个密钥。有关授予资源权限的更多信息，对于 EBS 快照，请参阅《Amazon EBS 用户指南》**中的 [Share an Amazon EBS snapshot with other AWS 账户](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-modifying-snapshot-permissions.html)；对于 S3 存储桶，请参阅《Amazon S3 用户指南》**中的 [Amazon S3 的身份和访问管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html)。

**注意**  
附加到源 AMI 的标签不会跨账户复制到目标 AMI。

## 基于时间的 AMI 复制操作
<a name="ami-time-based"></a>

当您为具有单个关联快照的 EBS 支持的 AMI 启动基于时间的 AMI 复制操作时，其行为方式将与**单个基于时间的快照复制操作**相同，并且具有相同的吞吐量限制。

当您为具有多个关联快照的 EBS 支持的 AMI 启动基于时间的 AMI 复制操作时，其行为方式将与**并发基于时间的快照复制操作**相同，并且具有相同的吞吐量限制。每个关联的快照都会导致一个单独的快照复制请求，并且每个请求都会占用您的累积快照复制吞吐量配额。您指定的完成期限将应用于每个关联的快照。

有关更多信息，请参阅《Amazon EBS 用户指南》中的 [Time-based copies](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html)**。

## 加密和复制
<a name="ami-copy-encryption"></a>

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


| 场景 | 描述 | 支持 | 
| --- | --- | --- | 
| 1 | 未加密到未加密 | 是 | 
| 2 | 已加密到已加密 | 是 | 
| 3 | 未加密到已加密 | 是 | 
| 4 | 已加密到未加密 | 否 | 

**注意**  
在 `CopyImage` 操作期间加密仅适用于 Amazon EBS-backed AMI。由于 Amazon S3 支持的 AMI 不使用快照，因此您不能使用复制来更改其加密状态。

当您复制 AMI 而不指定加密参数时，默认情况下将复制备份快照及其原始加密状态。因此，如果源 AMI 由未加密的快照支持，则生成的目标快照也将处于未加密状态。同样，如果源 AMI 的快照已加密，则生成的目标快照也将使用相同的 AWS KMS 密钥进行加密。对于多个快照支持的 AMI，每个目标快照都会保留其对应源快照的加密状态。

要在 AMI 复制期间更改目标备份快照的加密状态，可以指定加密参数。以下示例显示非默认情况，其中使用 `CopyImage` 操作指定加密参数来更改目标 AMI 的加密状态。

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

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

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

![\[即时复制 AMI 并加密快照\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/ami-to-ami-convert.png)


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

有关复制带加密快照的 AMIs 的更多信息，请参阅[将加密与 EBS 支持的 AMI 结合使用](AMIEncryption.md)。