

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

# 使用恢复 S3 数据 AWS Backup
<a name="restoring-s3"></a>

您可以将使用 AWS Backup 备份的 S3 数据恢复到 S3 标准存储类别。您可以还原存储桶中的所有对象或特定对象。您可以将它们还原到现有存储桶或新存储桶。

## Amazon S3 还原权限
<a name="s3-restore-permissions"></a>

开始还原资源之前，请确保您使用的角色具有足够的权限。

有关更多信息，请参阅以下关于策略的条目：

1. [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSBackupServiceRolePolicyForS3Restore.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSBackupServiceRolePolicyForS3Restore.html)

1. [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSBackupServiceRolePolicyForRestores.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSBackupServiceRolePolicyForRestores.html)

1. [的托管策略 AWS Backup](security-iam-awsmanpol.md)

## Amazon S3 还原注意事项
<a name="s3-restore-considerations"></a>
+ 如果 ACLs 在备份期间启用，则还原的目标存储桶必须已 ACLs 启用；否则，还原任务将失败。
+ 如果在目标存储桶上启用了 “阻止公共访问”，则还原任务将成功完成，但不会还原 ACLs 具有公共权限的对象。
+ 如果目标存储桶的对象名称或版本 ID 相同，则将跳过对象还原步骤。
+ 还原到原始 S3 存储桶时，
  + AWS Backup 不执行破坏性恢复，这意味着无论版本如何，都不会 AWS Backup 将对象代替已存在的对象放入存储桶中。
  + 当前版本中的删除标记被视为不存在的对象，因此可以进行还原。
  + AWS Backup 在还原期间不会从存储桶中删除对象（不带删除标记）（例如：备份期间不存在的当前存储桶中的密钥将保留）。
+ **还原跨区域副本**
  + 虽然 S3 备份可以跨区域复制，但还原作业只能在原始备份或副本所在的同一区域进行。  
**Example**  

    **示例：**在美国东部（弗吉尼亚州北部）区域创建的 S3 存储桶可以复制到加拿大（中部）区域。还原作业可以使用美国东部（弗吉尼亚州北部）区域的原始存储桶启动并还原到该区域，也可以使用加拿大（中部）区域的副本启动并还原到该区域。
  + 原始加密方法不能用于还原从其他区域复制的恢复点（备份）。跨区域副本 AWS KMS 加密不适用于 Amazon S3 资源；相反，对还原任务使用不同的加密类型。

## 恢复 ACLs 和对象标签
<a name="s3-restore-acl-options"></a>

在恢复 Amazon S3 数据时，您可以选择 ACLs 是否参与还原。

如果 ACLs 在恢复点中可用，则可以选择 ACLs使用 “还原” ACLs 设置进行还原或排除；如果不在备份中，则无论设置如何， ACLs 都无法还原它们。如果您尝试在 ACls 启用状态下创建还原作业，但它们不是备份的一部分，则可能会看到错误，例如`Unable to restore Access Control Lists (ACLs) for bucket because backup was created with the 'BackupACLs' option disabled. Please proceed with restoring without ACLs`。

如果对象标签包含在原始备份中，则它们会自动还原

**注意**  
不用恢复点即可恢复恢复点 ACLs  
 AWS CLI 如果您尝试 ACLs 从排除的备份中恢复，则还原操作将失败 ACLs，并显示一条错误消息，指示还原参数无效。

## 还原多个版本
<a name="s3-restore-versions"></a>

默认情况下，仅 AWS Backup 恢复对象的最新版本。您可以选择还原对象的更多版本或所有版本。

有关如何使用 AWS Backup 控制台恢复 10 个最新版本或所有版本的信息，请参阅下一节中的步骤 6。

有关以编程方式还原时要包含的元数据详细信息，请参阅本页后面的[通过以下方式恢复 Amazon S3 恢复点 AWS CLI](#s3-restore-cli)。

## 通过 AWS Backup 控制台恢复
<a name="s3-restore-console"></a>

**要使用 AWS Backup 控制台恢复您的 Amazon S3 数据，请执行以下操作：**

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

1. 在导航窗格中，选择**受保护的资源**，然后选择要还原的 Amazon S3 资源 ID。

1. 在**资源详细信息**页面上，将显示所选资源 ID 的恢复点列表。要还原资源，请执行以下操作：

   1. 在**备份**窗格中，选择资源的恢复点 ID。

   1. 在窗格的右上角，选择**还原**。

      （或者，您可以前往备份保管库，找到恢复点，单击**操作**，然后单击**还原**。）

1. 如果要还原的是连续备份，请在**还原时间**窗格中选择以下任一选项：

   1. 接受默认值以还原到**最近可还原时间**。

   1. **指定要还原的日期和时间**。

1. 在**设置**窗格中，指定是**还原整个存储桶**还是执行**项目级还原**。

   1. 如果选择**项目级还原**，则通过指定每个项目的 [S3 URI](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html) 唯一地标识该对象，每个还原作业最多可以还原 5 个项目（存储桶中的对象或文件夹）。

      （有关 S3 存储桶的更多信息 URIs，请参阅 *Amazon 简单存储服务用户指南中的访问存储*[桶的方法](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html)。）

   1. 选择**添加项目**可指定要还原的其他项目。

1. 默认情况下，仅还原对象的最新版本。您可以还原对象的最多 10 个最新版本，也可以还原对象的所有版本。从下拉菜单中选择首选项。

1. 选择您的**还原目的地**。您可以**还原到源存储桶**、**使用现有存储桶**或**创建新的存储桶**。
**注意**  
您的还原目标存储桶必须开启版本控制。 AWS Backup 如果您选择的存储桶不符合此要求，则会通知您。

   1. 如果您选择**使用现有存储桶**，请从显示当前 AWS 区域内所有现有存储桶的菜单中选择目的地 S3 存储桶。

   1. 如果您选择**创建新的存储桶**，请键入**新存储桶名称**。创建存储桶后，您可以修改 BPA（阻止公有访问）和 S3 版本控制默认设置。

1. 要对 S3 存储桶中的对象进行加密，可以选择**已还原对象加密**。使用**原始加密密钥**（默认）、**Amazon S3 密钥 (SSE-S3)** 或 **AWS Key Management Service 秘钥 (SSE-KMS)**。

   这些设置仅适用于 S3 存储桶中对象的加密。这不会影响存储桶本身的加密。

   1. **使用原始加密密钥（默认）**使用源对象所用的相同加密密钥来还原对象。如果源对象未加密，此方法会在不加密的情况下还原该对象。

      如果原始密钥不可用，此还原选项允许您选择替代加密密钥来加密还原对象。

   1. 如果您选择 **Amazon S3 秘钥 (SSE-S3)**，则无需指定任何其他选项。

   1. **如果您选择**AWS Key Management Service 密钥 (SSE-KMS)**，则可以做出以下选择：**AWS 托管式密钥 (aws/s3)**、**从密钥中进行选择或输入 AWS KMS 密钥** ARN。 AWS KMS **

      1. 如果您选择 **AWS 托管式密钥 (aws/s3)**，则无需指定任何其他选项。

      1. 如果您**从 AWS KMS 密钥中选择**，请从下拉菜单中选择一个 AWS KMS 密钥。或者，选择**创建密钥**。

      1. 如果您**输入 AWS KMS 密钥 ARN**，请在文本框中键入 ARN。或者，选择**创建密钥**。

1. 在**还原角色**窗格中，选择 AWS Backup 将为此还原担任的 IAM 角色。

1. 选择**还原备份**。这将显示**还原作业**窗格。页面顶部的消息提供了有关还原作业的信息。

## 通过以下方式恢复 Amazon S3 恢复点 AWS CLI
<a name="s3-restore-cli"></a>

使用 `[StartRestoreJob](https://docs.aws.amazon.com/aws-backup/latest/devguide/API_StartRestoreJob.html)`。在 Amazon S3 还原期间，您可以指定以下元数据：

```
// Mandatory metadata:
DestinationBucketName // The destination bucket for your restore.
        
// Optional metadata:
RestoreACLs // Boolean. If ACLs were part of the backup, include and set to TRUE. If the backup 
does not include ACLs and this parameter is included, set to FALSE.
EncryptionType // The type of encryption to encrypt your restored objects. Options are original (same encryption as the original object), SSE-S3, or SSE-KMS).
ItemsToRestore // A list of up to five paths of individual objects to restore. Only required for item-level restore.
KMSKey // Specifies the SSE-KMS key to use. Only needed if encryption is SSE-KMS.
RestoreLatestVersionsUpTo // Include this optional parameter to multiple versions.
RestoreTime // The restore time (only valid for continuous recovery points where it is required, in format 2021-11-27T03:30:27Z).
```

`RestoreLatestVersionsUpTo` 是可选的元数据键值对。默认情况下，或者如果忽略此选项，则还原最新版本。包含此元数据可还原对象的更多版本。接受的值为：
+ `1`（还原最新版本）
+ `n`，其中 *n* 是大于 1 的任意正整数。对象的最新 *n* 个版本将还原。如果对象的实际版本数小于 *n*，则将还原对象实际数量的版本。
+ `all`（还原所有版本）

## 恢复点状态
<a name="s3-recovery-point-status"></a>

恢复点的状态将显示其所处的状态。

`EXPIRED`状态表示恢复点已超过其保留期，但 AWS Backup 缺少权限或无法将其删除。要手动删除这些恢复点，请参阅*入门*章节*清理资源*部分中的[步骤 3：删除恢复点](https://docs.aws.amazon.com/aws-backup/latest/devguide/gs-cleanup-resources.html#cleanup-backups)。

当用户执行某些操作导致连续备份被禁用时，连续备份中会出现 `STOPPED` 状态。这可能是由于移除权限、关闭版本控制、关闭发送到 Amazon EventBridge 的事件或禁用由 AWS Backup制定的 EventBridge 规则造成的。

要解决 `STOPPED` 状态问题，请确保请求的所有权限均已准备就绪，并且已在 S3 存储桶上启用版本控制。满足这些条件后，下一个运行的备份规则实例将导致创建新的连续恢复点。不需要删除处于 STOPPED 状态的恢复点。

## S3 还原消息
<a name="s3-restore-messages"></a>

还原作业完成或失败时，您可能会看到以下消息。下表有助于您确定导致出现状态消息的可能原因。


| 场景 | 作业状态 | Message | 示例 | 
| --- | --- | --- | --- | 
| 所有对象还原失败。 | `FAILED` | “从**RecoveryPointARN**到没有恢复任何对象**bucket**。要获得有关这些失败的通知，请启用 SNS 事件通知。” |  用于启动还原作业的角色无权将对象放入目标存储桶。 还原角色无权验证目标存储桶中是否存在对象版本。  | 
| 一个或多个（但不是全部）对象还原失败。 | COMPLETED |  “无法将一个或多个对象从恢复**RecoveryPointARN**到**bucket**。要获得有关这些失败的通知，请启用 SNS 事件通知。”  |  用于启动还原作业的角色无权访问一个或多个原始对象使用的 KMS 密钥。  | 
| 没有要还原的对象。 | COMPLETED | “没有与的恢复请求相匹配的对象**RecoveryPointARN**。” |  要还原的源存储桶的恢复点（备份）没有对象。 用于还原作业的前缀与任何对象都不对应。  | 