

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 还原 Amazon EC2 实例
<a name="restoring-ec2"></a>

还原 EC2 实例时， AWS Backup 会创建亚马逊机器映像（AMI）、实例、Amazon EBS 根卷、Amazon EBS 数据卷（如果受保护的资源有数据卷）和 Amazon EBS 快照。您可以使用 AWS Backup 控制台自定义一些实例设置，也可以使用或 AWS SDK 自定义更多设置。 AWS CLI 

还原 EC2 实例时应注意以下几点：
+ AWS Backup 将还原的实例配置为使用与受保护资源最初使用的密钥对相同。在还原过程中，您无法为已还原的实例指定不同的密钥对。
+ AWS Backup 不会备份和还原启动 Amazon EC2 实例时使用的用户数据。
+ 配置已还原的实例时，您可以选择使用受保护资源最初所用的相同实例配置文件，或在没有实例配置文件的情况下启动。这是为了防止可能出现权限升级。您可以使用 Amazon EC2 控制台更新已还原实例的实例配置文件。

  如果您使用原始实例配置文件，则必须授予 AWS Backup 以下权限，其中资源 ARN 是与实例配置文件关联的 IAM 角色的 ARN。

  ```
  {
        "Effect": "Allow",
        "Action": "iam:PassRole",
        "Resource": "arn:aws:iam::account-id:role/role-name"
  },
  ```

  *role-name*替换为将附加到已恢复的 EC2 实例的 EC2 实例配置文件角色的名称。这不是 AWS Backup 服务角色，而是为 EC2 实例上运行的应用程序提供权限的 IAM 角色。
+ 在还原期间，所有 Amazon EC2 配额和配置限制均适用。
+ 如果包含 Amazon EC2 恢复点的保管库具有保管库锁定功能，请参阅[其它安全注意事项](vault-lock.md#using-vault-lock-with-backup)以获取更多信息。

## 使用 AWS Backup 控制台恢复 Amazon EC2 恢复点
<a name="restoring-ec2-console"></a>

您可以从单个恢复点还原整个 Amazon EC2 实例，包括根卷、数据卷和一些实例配置设置，例如实例类型和密钥对。

**使用 AWS Backup 控制台恢复 Amazon EC2 资源**

1. 在 [https://console.aws.amazon.com/backup](https://console.aws.amazon.com/backup) 上打开 AWS Backup 控制台。

1. 在导航窗格中，选择**受保护的资源**，然后选择 Amazon EC2 资源的 ID 以打开资源详细信息页面。

1. 在**恢复点**窗格中，选择要还原的恢复点 ID 旁边的单选按钮。在窗格的右上角，选择**还原**。

1. 在**网络设置**窗格中，我们使用受保护实例中的设置，为实例类型、VPC、子网、安全组和实例 IAM 角色选择默认值。您可以使用这些默认值，也可以根据需要进行更改。

1. 在**还原角色**窗格中，使用**默认角色**或使用**选择 IAM 角色**来指定授予还原备份 AWS Backup 权限的 IAM 角色。

1. 在**受保护的资源标签**窗格中，默认选择**将标签从受保护的资源复制到还原的资源**。如果不想复制这些标签，请清除该复选框。

1. 在**高级设置**窗格中，接受实例设置的默认值或根据需要进行更改。有关这些设置的信息，请选择该设置的**信息**以打开其帮助窗格。

1. 完成实例配置后，选择**还原备份**。

## 使用恢复亚马逊 EC2 AWS CLI
<a name="restoring-ec2-cli"></a>

在命令行界面中，[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/backup/start-restore-job.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/backup/start-restore-job.html)允许您使用最多 32 个参数（包括一些无法通过 AWS Backup 控制台自定义的参数）进行恢复。

以下列表中所列的是接受的元数据，您可以传递它们以还原 Amazon EC2 恢复点。

```
InstanceType
KeyName
SubnetId
Architecture
EnaSupport
SecurityGroupIds
IamInstanceProfileName
CpuOptions
InstanceInitiatedShutdownBehavior
HibernationOptions
DisableApiTermination
CreditSpecification
Placement
RootDeviceType
RamdiskId
KernelId
UserData
Monitoring
NetworkInterfaces
ElasticGpuSpecification
CapacityReservationSpecification
InstanceMarketOptions
LicenseSpecifications
EbsOptimized
VirtualizationType
Platform
RequireIMDSv2
BlockDeviceMappings
aws:backup:request-id
```

AWS Backup 接受以下仅提供信息的属性。但是，添加它们不会影响还原：

```
vpcId
```

[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-block-device-mapping.html#create-ami-bdm](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-block-device-mapping.html#create-ami-bdm)是您可以包含的可选参数。 AWS Backup 支持以下`BlockDeviceMappings`属性。

**注意**  
不支持 `SnapshotId` 和 `OutpostArn`。

```
{
  "BlockDeviceMappings": [
    {
        "DeviceName" : string,
        "NoDevice" : string,
        "VirtualName" : string,
        "Ebs": {
            "DeleteOnTermination": boolean,
            "Iops": number,
            "VolumeSize": number,
            "VolumeType": string,
            "Throughput": number,
            "Encrypted": boolean,
            "KmsKeyId": string
        }
    }
 }
```

例如：

```
{
  "BlockDeviceMappings": [
    {
      "DeviceName": "/def/tuvw",
      "Ebs": {
        "DeleteOnTermination": true,
        "Iops": 3000,
        "VolumeSize": 16,
        "VolumeType": "gp3",
        "Throughput": 125,
        "Encrypted": true,
        "KmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/ab3cde45-67f8-9g01-hi2j-3456klmno7p8"
      }
    },
    {
      "DeviceName": "/abc/xyz",
      "Ebs": {
        "DeleteOnTermination": false,
        "Iops": 3000,
        "VolumeSize": 16,
        "VolumeType": "gp3",
        "Throughput": 125,
        "Encrypted": false
      }
    }
  ]
}
```

您还可以在不包含任何存储的参数的情况下还原 Amazon EC2 实例。 AWS Backup 控制台上的 “**受保护资源**” 选项卡上提供了此选项。

**重要**  
如果您在从跨账户或跨区域备份还原`BlockDeviceMappings`时未覆盖中的 AWS KMS 密钥，则还原可能会失败。有关更多信息，请参阅 [Amazon EC2 实例还原问题故障排除](#restoring-ec2-troubleshooting)。

## Amazon EC2 实例还原问题故障排除
<a name="restoring-ec2-troubleshooting"></a>

**Topics**
+ [跨账户还原失败](#cross-account-kms-issue)
+ [跨区域还原失败](#cross-region-kms-issue)

### 跨账户还原失败
<a name="cross-account-kms-issue"></a>

**描述：**尝试从与您的账户共享的备份中还原时，Amazon EC2 实例还原失败。

**可能的问题：**您的账户可能无法访问共享账户中用于加密源卷的 AWS KMS 密钥。KMS 密钥可能不会与您的账户共享。

或者，附加到源实例的卷未进行加密。

**解决方案：**要解决此问题，请将 `encrypted` 属性设置为 `true`，然后执行下列操作之一：
+ 覆盖 `BlockDeviceMappings` 中的 KMS 密钥并指定您在账户中拥有的 KMS 密钥。
+ 更新 KMS 密钥策略，请求拥有者账户授予您访问用于加密卷的 KMS 密钥的权限。有关更多信息，请参阅[允许其他账户中的用户使用 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)。

### 跨区域还原失败
<a name="cross-region-kms-issue"></a>

**描述：**尝试从跨区域备份中还原时，Amazon EC2 实例还原失败。

**问题：**备份中的卷可能使用目标区域中不可用的单区域 AWS KMS 密钥进行加密。或者，附加到源实例的卷未进行加密。

**解决方案：**要解决此问题，请将 `encrypted` 属性设置为 `true`，然后使用目标区域中的 KMS 密钥覆盖 `BlockDeviceMappings` 中的 KMS 密钥。