Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

跨区域复制状态信息

要获取存储桶中对象的跨区域复制 (CRR) 状态,请使用 Amazon S3 清单工具。Amazon S3 会向目标存储桶发送一个您在清单配置中指定的 .csv 文件。您还可以使用 Amazon Athena 在清单报告中查询复制状态。有关 Amazon S3 清单的更多信息,请参阅 Amazon S3 清单

在 CRR 中,您有一个源存储桶(对它配置复制)和一个目标存储桶(Amazon S3 将对象复制到其中)。当您请求这些存储桶中的对象(使用 GET 对象)或对象元数据(使用 HEAD 对象)时,Amazon S3 将在响应中返回 x-amz-replication-status 标头:

  • 如果请求源存储桶中的对象,Amazon S3 将返回 x-amz-replication-status 标头(如果请求中的对象符合复制条件)。

    例如,假设您在复制配置中指定了对象前缀 TaxDocs,以指示 Amazon S3 仅复制键名前缀为 TaxDocs 的对象。您上传的具有此键名前缀的任何对象(例如 TaxDocs/document1.pdf)都将复制。对于具有此键名前缀的对象请求,Amazon S3 会返回其对象复制状态为以下值之一的 x-amz-replication-status 标头:PENDINGCOMPLETEDFAILED

    注意

    如果在上传对象后对象复制失败,您无法重试复制。您必须重新上传对象。

  • 当请求目标存储桶中的对象时,如果请求中的对象是 Amazon S3 创建的副本,Amazon S3 会返回值为 REPLICAx-amz-replication-status 标头。

您可以在控制台中、使用 AWS Command Line Interface (AWS CLI) 或使用 AWS 开发工具包查找对象复制状态。

  • 控制台:选择对象,然后选择 Properties (属性) 以查看对象属性(包括复制状态)。

  • AWS CLI:使用 head-object AWS CLI 命令检索对象元数据:

    aws s3api head-object --bucket source-bucket --key object-key --version-id object-version-id  

    该命令会返回对象元数据(包括 ReplicationStatus),如以下示例响应所示:

    { "AcceptRanges":"bytes", "ContentType":"image/jpeg", "LastModified":"Mon, 23 Mar 2015 21:02:29 GMT", "ContentLength":3191, "ReplicationStatus":"COMPLETED", "VersionId":"jfnW.HIMOfYiD_9rGbSkmroXsFj3fqZ.", "ETag":"\"6805f2cfc46c0f04559748bb039d69ae\"", "Metadata":{ } }
  • AWS 开发工具包:以下代码片段分别使用 AWS SDK for Java 和 适用于 .NET 的 AWS 开发工具包 获取复制状态。

    • AWS SDK for Java

      GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest(bucketName, key); ObjectMetadata metadata = s3Client.getObjectMetadata(metadataRequest); System.out.println("Replication Status : " + metadata.getRawMetadataValue(Headers.OBJECT_REPLICATION_STATUS));
    • 适用于 .NET 的 AWS 开发工具包

      GetObjectMetadataRequest getmetadataRequest = new GetObjectMetadataRequest { BucketName = sourceBucket, Key = objectKey }; GetObjectMetadataResponse getmetadataResponse = client.GetObjectMetadata(getmetadataRequest); Console.WriteLine("Object replication status: {0}", getmetadataResponse.ReplicationStatus);

注意

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

如果对源存储桶启用了生命周期配置,则 Amazon S3 将暂停生命周期操作,直到它将对象状态标记为 COMPLETEDFAILED

跨区域复制

本页内容: