

# 使用批量操作还原对象
<a name="batch-ops-initiate-restore-object"></a>

可以使用 Amazon S3 批量操作对 Amazon S3 对象执行大规模批量操作。**还原**操作启动对清单中列出的已归档 Amazon S3 对象的还原请求。必须先还原以下归档对象，然后才能实时访问这些对象：
+ 在 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 存储类中归档的对象
+ 通过归档访问层或深度归档访问层中的 S3 Intelligent-Tiering 存储类归档的对象

在 S3 批量操作任务中使用**还原**（[https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html)）操作，会导致针对在清单中指定的每个对象发出 `RestoreObject` 请求。

**重要**  
**还原**任务仅*启动* 还原对象的请求。在为每个对象启动请求后，S3 分批操作将对象的任务报告为完成。还原对象时，Amazon S3 不会更新任务或以其他方式通知您。不过，当对象在 Amazon S3 中可用时，您可以使用 S3 事件通知来接收通知。有关更多信息，请参阅 [Amazon S3 事件通知](EventNotifications.md)。

当您创建**还原**任务时，可以使用以下参数：

**ExpirationInDays**  
此参数用于指定 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 对象在 Amazon S3 中保持可用的时长。以 S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive 对象为目标的**还原**任务要求您将 `ExpirationInDays` 设置为 `1` 或更大的值。  
在创建以 S3 Intelligent-Tiering 归档访问和深度归档访问层对象为目标的**还原**操作任务时，请勿设置 `ExpirationInDays`。S3 Intelligent-Tiering 归档访问层中的对象不受还原到期的限制，因此指定 `ExpirationInDays` 会导致 `RestoreObject` 请求失败。

**GlacierJobTier**  
Amazon S3 可以使用三个不同的检索层之一还原对象：`EXPEDITED`、`STANDARD` 和 `BULK`。但是，S3 分批操作功能仅支持 `STANDARD` 和 `BULK` 检索层。有关各检索层之间的差异的更多信息，请参阅[了解归档检索选项](restoring-objects-retrieval-options.md)。  
有关每层定价的更多信息，请参阅 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)页面上的**请求和数据检索**部分。

## 从 S3 Glacier 和 S3 Intelligent-Tiering 还原时的区别
<a name="batch-ops-initiate-restore-diff"></a>

从 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 存储类还原归档文件与从归档访问层或深度归档访问层中的 S3 Intelligent-Tiering 存储类恢复文件不同。
+ 当您从 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 中还原时，将创建对象的临时*副本*。Amazon S3 会在 `ExpirationInDays` 参数中指定的值过期后删除此副本。删除此临时副本后，您必须提交额外的还原请求才能访问该对象。
+ 还原归档的 S3 Intelligent-Tiering 对象时，请*勿*指定 `ExpirationInDays` 参数。当您从 S3 Intelligent-Tiering 归档访问层或深度归档访问层还原对象时，此对象会转换回 S3 Intelligent-Tiering 频繁访问层中。在至少连续 90 天无访问后，对象会自动转换到归档访问层。在至少连续 180 天无访问后，对象会自动移动到深度归档访问层。
+ 批量操作任务既可以在 S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive 存储类对象上运行，*也可以*在 S3 Intelligent-Tiering 归档访问和深度归档访问存储层对象上运行。批量操作不能在同一个任务中对两种类型的归档对象进行操作。要还原两种类型的对象，*必须*创建单独的分批操作任务。

## 重叠还原
<a name="batch-ops-initiate-restore-object-in-progress"></a>

如果 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html) 任务尝试还原已处于还原过程中的对象，S3 批量操作的过程如下所示。

如果满足以下任意条件，对象的还原操作将成功：
+ 与已在进行的还原请求相比，此任务的 `ExpirationInDays` 值相同，而其 `GlacierJobTier` 值更快。
+ 之前的还原请求已完成，对象当前已可用。在这种情况下，批量操作会更新已还原对象的过期日期，以便与在正在进行的还原请求中指定的 `ExpirationInDays` 值匹配。

如果满足以下任意条件，对象的还原操作失败：
+ 已在进行的还原请求尚未完成，并且此任务的还原持续时间（由 `ExpirationInDays` 值指定）不同于在正在进行的还原请求中指定的还原持续时间。
+ 此任务的还原层（由 `GlacierJobTier` 值指定）与在正进行的还原请求中指定的还原层速度相同或更慢。

## 限制
<a name="batch-ops-initiate-restore-object-limitations"></a>

`S3InitiateRestoreObjectOperation` 任务具有以下限制：
+ 您必须在与归档对象相同的区域中创建任务。
+ S3 批量操作不支持 `EXPEDITED` 检索层。
+ 单个批量操作还原作业可以支持包含多达 40 亿个对象的清单。

有关还原对象的更多信息，请参阅 [恢复已归档的对象](restoring-objects.md)。