

# 管理您的复制
<a name="manage-outposts-replication"></a>

本节介绍 S3 on Outposts 上可用的其他复制配置选项、如何确定复制状态以及如何排查复制问题。有关核心复制配置的信息，请参阅[设置复制](outposts-replication-how-setup.md)。

**Topics**
+ [使用复制指标监控进度](#outposts-enabling-replication-metrics)
+ [获取复制状态信息](#outposts-replication-status)
+ [对复制进行问题排查](#outposts-replication-troubleshoot)
+ [将 EventBridge 用于 Outposts 上的 S3 复制](outposts-replication-eventbridge.md)

## 使用复制指标监控进度
<a name="outposts-enabling-replication-metrics"></a>

Outposts 上的 S3 复制为复制配置中的复制规则提供了详细的指标。使用复制指标，您可以通过跟踪待复制的字节数、复制延迟的复制和待处理的操作数，以 5 分钟为间隔监控复制的进度。为了帮助排查任何配置问题，您还可以设置 Amazon EventBridge 来接收有关复制失败的通知。

启用复制指标后，Outposts 上的 S3 复制会将以下指标发布到 Amazon CloudWatch：
+ **待复制的字节数** – 给定复制规则的待复制对象的总字节数。
+ **复制延迟** – 对于给定的复制规则，复制目标桶落后于源桶的最大秒数。
+ **待复制的操作** – 给定复制规则的等待复制的操作的数量。操作包括对象、删除标记和标签。

**注意**  
Outposts 上的 S3 复制指标的费率与 CloudWatch 自定义指标费率相同。有关更多信息，请参阅 [CloudWatch 定价](https://www.amazonaws.cn/cloudwatch/pricing/)。

## 获取复制状态信息
<a name="outposts-replication-status"></a>

复制状态可以帮助您确定 Amazon S3 on Outposts 正在复制的对象的当前状态。源对象的复制状态将返回 `PENDING`、`COMPLETED`、或 `FAILED`。副本的复制状态将返回 `REPLICA`。

### 复制状态概述
<a name="outposts-replication-status-overview"></a>

在复制场景中，您有一个源桶（对它配置复制）和一个目标桶（S3 on Outposts 将对象复制到其中）。当您请求这些桶中的对象（使用 `GetObject`）或对象元数据（使用 `HeadObject`）时，S3 on Outposts 将在响应中返回 `x-amz-replication-status` 标头，如下所示：
+ 如果请求源桶中的对象，S3 on Outposts 将返回 `x-amz-replication-status` 标头（如果请求中的对象符合复制条件）。

  例如，假设您在复制配置中指定了对象前缀 `TaxDocs`，以指示 S3 on Outposts 仅复制键名称前缀为 `TaxDocs` 的对象。您上传的具有此键名前缀的任何对象（例如 `TaxDocs/document1.pdf`）都将复制。对于具有此键名称前缀的对象请求，S3 on Outposts 会返回其对象复制状态为以下值之一的 `x-amz-replication-status` 标头：`PENDING`、`COMPLETED` 或 `FAILED`。
**注意**  
如果在上传对象后对象复制失败，您无法重试复制。您必须重新上传对象。由于缺少复制角色权限或缺少桶权限等问题，对象将转换为 `FAILED` 状态。对于临时故障（例如，如果桶或 Outpost 不可用），复制状态不会转换为 `FAILED`，而是保持 `PENDING`。在资源恢复联机后，S3 on Outposts 将恢复复制这些对象。
+ 当请求目标桶中的对象时，如果请求中的对象是 S3 on Outposts 创建的副本，S3 on Outposts 会返回值为 `REPLICA` 的 `x-amz-replication-status` 标头。

**注意**  
在从启用了复制的源存储桶中删除对象之前，请检查该对象的复制状态，以确保已复制了该对象。

### 在 Outposts 上启用了 Amazon S3 副本修改同步时的复制状态
<a name="outposts-replication-status-sync"></a>

当您的复制规则启用了 S3 on Outposts 副本修改同步时，副本可能报告 `REPLICA` 以外的状态。如果元数据更改正在复制过程中，副本的 `x-amz-replication-status` 标头将返回 `PENDING`。如果副本修改同步无法复制元数据，副本的标头将返回 `FAILED`。如果正确复制元数据，则副本的标头将返回值 `REPLICA`。

## 对复制进行问题排查
<a name="outposts-replication-troubleshoot"></a>

如果在您配置复制之后，对象副本未出现在目标 Amazon S3 on Outposts 桶中，请使用以下问题排查提示确定并修复问题。
+ S3 on Outposts 复制对象所需的时间取决于多个因素，包括源和目标 Outposts 之间的距离，以及对象的大小。

  您可以检查源对象的复制状态。如果对象的复制状态为 `PENDING`，表示 S3 on Outpost 尚未完成复制。如果对象的复制状态为 `FAILED`，则应检查对源桶设置的复制配置。
+ 在源桶上的复制配置中，验证以下几点：
  + 目标桶的接入点 Amazon 资源名称（ARN）是正确的。
  + 键名前缀是否正确。例如，如果将配置设置为复制具有前缀 `Tax` 的对象，则仅复制具有 `Tax/document1` 或 `Tax/document2` 等键名的对象。不会复制具有键名 `document3` 的对象。
  + 状态是否为 `Enabled`。
+ 验证没有在任何一个桶上暂停版本控制。源桶和目标桶必须均已启用版本控制。
+ 如果目标桶由另一个 Amazon Web Services 账户拥有，请验证桶拥有者是否对目标桶设置了允许源桶拥有者复制对象的桶策略。有关示例，请参阅[在源和目标 Outposts 桶由不同的 Amazon Web Services 账户拥有时授予权限](outposts-replication-prerequisites-config.md#outposts-rep-prethree)。
+ 如果对象副本未出现在目标桶中，以下问题可能会阻止复制：
  + 如果源桶中的某对象是另一个复制配置所创建的副本，S3 on Outposts 不会复制该对象。例如，如果您设置从桶 A 到桶 B 再到桶 C 的复制配置，则 S3 on Outposts 不会将桶 B 中的对象副本复制到桶 C。

    如果您想将桶 A 中的对象复制到桶 B 和桶 C，请在不同的复制规则中为源桶复制配置设置多个桶目标。例如，在源桶 A 上创建两条复制规则，其中一条规则旨在复制到目标桶 B，另一条规则旨在复制到目标桶 C。
  + 源桶拥有者可以向其他 Amazon Web Services 账户授予上载对象的权限。默认情况下，源桶拥有者对于其他账户创建的对象没有权限。复制配置仅复制源桶拥有者对其具有访问权限的对象。为避免复制问题，源桶拥有者可以向其他 Amazon Web Services 账户授予有条件地创建对象的权限，从而要求针对这些对象的显式访问权限。
+ 假设在复制配置中，您添加了一个规则以复制具有特定标签的对象子集。在这种情况下，您必须在创建对象时分配特定的标签键和值，以便 S3 on Outposts 复制对象。如果您先创建对象，然后向该现有对象添加标签，S3 on Outposts 将不会复制对象。
+ 如果桶策略拒绝针对以下任一操作访问复制角色，则复制将失败：

  源桶：

  ```
  1. "s3-outposts:GetObjectVersionForReplication",
  2. "s3-outposts:GetObjectVersionTagging"
  ```

  目标桶：

  ```
  1. "s3-outposts:ReplicateObject",
  2. "s3-outposts:ReplicateDelete",
  3. "s3-outposts:ReplicateTags"
  ```
+ 当对象无法复制到其目标 Outposts 时，Amazon EventBridge 可以通知您。有关更多信息，请参阅 [将 EventBridge 用于 Outposts 上的 S3 复制](outposts-replication-eventbridge.md)。