Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

如何查找对象的复制状态

在跨区域复制中,您有一个源存储桶 (对它配置复制) 和一个目标存储桶 (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 将 x-amz-replication-status 标头和值 REPLICA (如果请求中的对象是 Amazon S3 创建的副本)。

您可以在控制台中、使用 AWS CLI 或以编程方式使用 AWS 开发工具包查找对象复制状态。

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

    注意

    您还可以使用为 S3 清单功能获取存储桶中的所有对象的复制状态。S3 然后会将一个 .csv 文件传送给配置的目标存储桶。有关 S3 清单的更多信息,请参阅 Amazon S3 清单

  • 可以使用如下所示的 head-object AWS CLI 命令检索对象元数据信息:

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

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

    Copy
    { "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 开发工具包检索对象的复制状态。下面是使用适用于 Java 的 AWS 开发工具包和适用于 .NET 的 AWS 开发工具包的代码片段。

    • 适用于 Java 的 AWS 开发工具包

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

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

注意

如果您决定从启用了复制的源存储桶中删除对象,则应在删除之前检查对象的复制状态,以确保复制了对象。

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

跨区域复制

本页内容: