

# 使用 Amazon S3 事件通知接收复制失败事件
<a name="replication-metrics-events"></a>

如果在复制配置中启用了 S3 复制指标，则可以设置 Amazon S3 事件通知，以便在对象未复制到目标 AWS 区域时通知您。如果在复制配置中启用了 S3 Replication Time Control（S3 RTC），则当未在 15 分钟的 S3 RTC 复制阈值内复制对象时，您也会收到通知。

通过使用以下 `Replication` 事件类型，可以通过跟踪待处理字节数、待处理的操作和复制延迟来逐分钟监控复制事件的进度。有关 S3 复制指标的更多信息，请参阅[使用 S3 复制指标](repl-metrics.md)。
+ 当符合复制条件的对象复制失败时，`s3:Replication:OperationFailedReplication` 事件类型将通知您。
+ 当符合复制（使用 S3 RTC）条件的对象超过 15 分钟的复制阈值时，`s3:Replication:OperationMissedThreshold` 事件类型将通知您。
+ 当符合复制（使用 S3 RTC）条件的对象在 15 分钟阈值后复制时，`s3:Replication:OperationReplicatedAfterThreshold` 事件类型将通知您。
+ 当符合实时复制（同区域复制 [SRR] 或跨区域复制 [CRR]）条件的对象不再受复制指标跟踪时，`s3:Replication:OperationNotTracked` 事件类型会通知您。

有关所有受支持的复制事件类型的完整描述，请参阅 [SQS、SNS 和 Lambda 支持的事件类型](notification-how-to-event-types-and-destinations.md#supported-notification-event-types)。

有关 S3 事件通知捕获的故障代码的列表，请参阅 [Amazon S3 复制失败原因](#replication-failure-codes)。

您可以通过 Amazon Simple Queue Service（Amazon SQS）、Amazon Simple Notification Service（Amazon SNS）或 AWS Lambda 接收 S3 事件通知。有关更多信息，请参阅 [Amazon S3 事件通知](EventNotifications.md)。

有关如何配置 Amazon S3 事件通知的说明，请参阅 [Enabling event notifications](how-to-enable-disable-notification-intro.md)（启用事件通知）。

**注意**  
除了启用事件通知外，还要确保您也启用 S3 复制指标。有关更多信息，请参阅 [启用 S3 复制指标](repl-metrics.md#enabling-replication-metrics)。

以下是 Amazon S3 发送以发布 `s3:Replication:OperationFailedReplication` 事件的消息示例。有关更多信息，请参阅 [事件消息结构](notification-content-structure.md)。

```
{
  "Records": [
    {
      "eventVersion": "2.2",
      "eventSource": "aws:s3",
      "awsRegion": "us-east-1",
      "eventTime": "2024-09-05T21:04:32.527Z",
      "eventName": "Replication:OperationFailedReplication",
      "userIdentity": {
        "principalId": "s3.amazonaws.com"
      },
      "requestParameters": {
        "sourceIPAddress": "s3.amazonaws.com"
      },
      "responseElements": {
        "x-amz-request-id": "123bf045-2b4b-4ca8-a211-c34a63c59426",
        "x-amz-id-2": "12VAWNDIHnwJsRhTccqQTeAPoXQmRt22KkewMV8G3XZihAuf9CLDdmkApgZzudaIe2KlLfDqGS0="
      },
      "s3": {
        "s3SchemaVersion": "1.0",
        "configurationId": "ReplicationEventName",
        "bucket": {
          "name": "amzn-s3-demo-bucket1",
          "ownerIdentity": {
            "principalId": "111122223333"
          },
          "arn": "arn:aws:s3:::amzn-s3-demo-bucket1"
        },
        "object": {
          "key": "replication-object-put-test.png",
          "size": 520080,
          "eTag": "e12345ca7e88a38428305d3ff7fcb99f",
          "versionId": "abcdeH0Xp66ep__QDjR76LK7Gc9X4wKO",
          "sequencer": "0066DA1CBF104C0D51"
        }
      },
      "replicationEventData": {
        "replicationRuleId": "notification-test-replication-rule",
        "destinationBucket": "arn:aws:s3:::amzn-s3-demo-bucket2",
        "s3Operation": "OBJECT_PUT",
        "requestTime": "2024-09-05T21:03:59.168Z",
        "failureReason": "AssumeRoleNotPermitted"
      }
    }
  ]
}
```

## Amazon S3 复制失败原因
<a name="replication-failure-codes"></a>

下表列出了 Amazon S3 复制失败原因。可以通过 Amazon S3 事件通知接收 `s3:Replication:OperationFailedReplication` 事件，然后查看 `failureReason` 值，来查看这些原因。

还可以在 S3 批量复制完成报告中查看这些失败原因。有关更多信息，请参阅 [分批复制完成报告](s3-batch-replication-batch.md#batch-replication-completion-report)。


| 复制失败原因 | 说明 | 
| --- | --- | 
| `AssumeRoleNotPermitted` | Amazon S3 无法代入在复制配置或批量操作任务中指定的 AWS Identity and Access Management（IAM）角色。 | 
| `DstBucketInvalidRegion` | 目标存储桶未处于由批量操作任务指定的同一个 AWS 区域中。此错误特定于分批复制。 | 
| `DstBucketNotFound` | Amazon S3 找不到在复制配置中指定的目标存储桶。 | 
| `DstBucketObjectLockConfigMissing` | 要在启用对象锁定的情况下从源存储桶复制对象，目标存储桶也必须启用对象锁定。此错误表示目标存储桶中可能未启用对象锁定。有关更多信息，请参阅 [对象锁定注意事项](object-lock-managing.md)。 | 
| `DstBucketUnversioned` | 未为 S3 目标存储桶启用版本控制。要使用 S3 复制来复制对象，请对目标存储桶启用版本控制。 | 
| `DstDelObjNotPermitted` | Amazon S3 无法将删除标记复制到目标存储桶。针对目标存储桶的 `s3:ReplicateDelete` 权限可能缺失。 | 
| `DstKmsKeyInvalidState` | 适用于目标存储桶的 AWS Key Management Service（AWS KMS）密钥处于无效状态。查看并启用所需的 AWS KMS 密钥。有关管理 AWS KMS 密钥的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [AWS KMS 密钥的密钥状态](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)。 | 
| `DstKmsKeyNotFound` | 在复制配置中为目标存储桶配置的 AWS KMS 密钥不存在。 | 
| `DstMultipartCompleteNotPermitted` | Amazon S3 无法完成目标存储桶中对象的分段上传。针对目标存储桶的 `s3:ReplicateObject` 权限可能缺失。 | 
| `DstMultipartInitNotPermitted` | Amazon S3 无法启动将对象分段上传到目标存储桶。针对目标存储桶的 `s3:ReplicateObject` 权限可能缺失。 | 
| `DstMultipartUploadNotPermitted` | Amazon S3 无法将分段上传对象上传到目标存储桶。针对目标存储桶的 `s3:ReplicateObject` 权限可能缺失。 | 
| `DstObjectHardDeleted` | S3 分批复制不支持重新复制从目标存储桶中使用对象的版本 ID 删除的对象。此错误特定于分批复制。 | 
| `DstPutAclNotPermitted` | Amazon S3 无法将对象访问控制列表（ACL）复制到目标存储桶。针对目标存储桶的 `s3:ReplicateObject` 权限可能缺失。 | 
| `DstPutLegalHoldNotPermitted` | 在复制不可变对象时，Amazon S3 无法对目标对象设置对象锁定法定保留。针对目标存储桶的 `s3:PutObjectLegalHold` 权限可能缺失。有关更多信息，请参阅 [法定保留](object-lock.md#object-lock-legal-holds)。 | 
|  `DstPutObjectNotPermitted` | Amazon S3 无法将对象复制到目标存储桶。当目标存储桶缺少所需权限（`s3:ReplicateObject` 或 `s3:ObjectOwnerOverrideToBucketOwner` 权限）或 AWS KMS 密钥策略不支持源存储桶的复制角色在目标存储桶上使用 AWS KMS 密钥（`kms:Decrypt` 和 `kms:GenerateDataKey*` 操作）时，就会发生这种情况。 | 
|  `DstPutRetentionNotPermitted` | 在复制不可变对象时，Amazon S3 无法对目标对象设置保留期。针对目标存储桶的 `s3:PutObjectRetention` 权限可能缺失。 | 
| `DstPutTaggingNotPermitted` | Amazon S3 无法将对象标签复制到目标存储桶。针对目标存储桶的 `s3:ReplicateObject` 权限可能缺失。 | 
| `DstVersionNotFound ` | Amazon S3 无法在目标存储桶中找到需要复制其元数据的所需对象版本。 | 
| `InitiateReplicationNotPermitted` | Amazon S3 无法在对象上启动复制。批量操作任务可能缺少 `s3:InitiateReplication` 权限。此错误特定于分批复制。 | 
| `SrcBucketInvalidRegion` | 源存储桶未处于批量操作任务指定的同一个 AWS 区域中。此错误特定于分批复制。 | 
| `SrcBucketNotFound` | Amazon S3 找不到源存储桶。 | 
| `SrcBucketReplicationConfigMissing` | Amazon S3 找不到源存储桶的复制配置。 | 
| `SrcGetAclNotPermitted` |  Amazon S3 无法访问源存储桶中要复制的对象。针对源存储桶对象的 `s3:GetObjectVersionAcl` 权限可能缺失。 源存储桶中的对象必须由存储桶拥有者所有。如果启用了 ACL，则验证应将“对象所有权”设置为“首选存储桶拥有者”还是“对象编写者”。如果将“对象所有权”设置为“首选存储桶拥有者”，则源存储桶对象必须具有 `bucket-owner-full-control` ACL，存储桶拥有者才能成为对象拥有者。源账户可以通过将“对象所有权”设置为“强制存储桶拥有者”并禁用 ACL，从而获取其存储桶中所有对象的所有权。  | 
| `SrcGetLegalHoldNotPermitted` | Amazon S3 无法访问 S3 对象锁定法定保留信息。 | 
| `SrcGetObjectNotPermitted` | Amazon S3 无法访问源存储桶中要复制的对象。针对源存储桶的 `s3:GetObjectVersionForReplication` 权限可能缺失。 | 
| `SrcGetRetentionNotPermitted` | Amazon S3 无法访问 S3 对象锁定保留期信息。 | 
| `SrcGetTaggingNotPermitted` | Amazon S3 无法从源存储桶访问对象标签信息。针对源存储桶的 `s3:GetObjectVersionTagging` 权限可能缺失。 | 
| `SrcHeadObjectNotPermitted` | Amazon S3 无法从源存储桶检索对象元数据。针对源存储桶的 `s3:GetObjectVersionForReplication` 权限可能缺失。 | 
| `SrcKeyNotFound` | Amazon S3 找不到要复制的源对象密钥。源对象可能在复制完成之前已被删除。 | 
| `SrcKmsKeyInvalidState` | 适用于源存储桶的 AWS KMS 密钥处于无效状态。查看并启用所需的 AWS KMS 密钥。有关管理 AWS KMS 密钥的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [AWS KMS 密钥的密钥状态](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)。 | 
| `SrcObjectNotEligible` | 某些对象不符合复制条件。这可能是由于对象的存储类或对象标签与复制配置不匹配所致。 | 
| `SrcObjectNotFound` | 源对象不存在。 | 
| `SrcReplicationNotPending` | Amazon S3 已经复制了此对象。此对象不再处于待复制状态。 | 
| `SrcVersionNotFound` | Amazon S3 找不到要复制的源对象版本。源对象版本可能在复制完成之前已被删除。 | 

### 相关主题
<a name="replication-metrics-related-topics"></a>

[为实时复制设置权限](setting-repl-config-perm-overview.md)

[对复制进行问题排查](replication-troubleshoot.md)