获取复制状态信息
复制状态可以帮助您确定正在复制的对象的当前状态。源对象的复制状态将返回 PENDING
、COMPLETED
、或 FAILED
。副本的复制状态将返回 REPLICA
。
复制状态概述
在复制中,您有一个源存储桶(对它配置复制)和一个目标存储桶(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
标头:PENDING
、COMPLETED
或FAILED
。注意
如果在上传对象后对象复制失败,您无法重试复制。您必须重新上传对象。对象会因缺少复制角色权限、AWS KMS 权限或存储桶权限等问题而导致转换为
FAILED
状态。对于临时故障(例如,在存储桶或区域不可用的情况下),复制状态将不会转换为FAILED
,而仍将保持PENDING
。在资源重新联机后,S3 将继续复制这些对象。 -
当请求目标存储桶中的对象时,如果请求中的对象是 Amazon S3 创建的副本,Amazon S3 会返回值为
REPLICA
的x-amz-replication-status
标头。
注意
在从启用了复制的源存储桶中删除对象之前,请检查该对象的复制状态,以确保已复制了该对象。
如果对源存储桶启用了生命周期配置,则 Amazon S3 将暂停生命周期操作,直到它将对象状态标记为 COMPLETED
或 FAILED
。
复制到多个目标存储桶时的复制状态
将对象复制到多个目标存储桶时,x-amz-replication-status
标头的作用有所不同。当向所有目标的复制都成功时,源对象的标头仅返回 COMPLETED
值。在完成所有目标的复制之前,标头将保持 PENDING
值。如果一个或多个目标复制失败,则标头返回 FAILED
。
启用了 Amazon S3 副本修改同步时的复制状态
当您的复制规则启用了 Amazon S3 副本修改同步时,副本可能报告 REPLICA
以外的状态。如果元数据更改正在复制过程中,x-amz-replication-status
标头返回 PENDING
。如果副本修改同步无法复制元数据,则标头返回 FAILED
。如果正确复制元数据,则副本将返回标头 REPLICA
。
查找复制状态
要获取存储桶中对象的复制状态,可以使用 Amazon S3 清单工具。Amazon S3 会向目标存储桶发送一个您在清单配置中指定的 CSV 文件。您还可以使用 Amazon Athena 在清单报告中查询复制状态。有关 Amazon S3 清单的更多信息,请参阅 Amazon S3 清单。
您可以使用控制台、AWS Command Line Interface (AWS CLI) 或 AWS SDK 查找对象复制状态。
在 S3 控制台中,您可以在 Object management overview(对象管理概览)下的对象 Details(详细信息)页面查看对象的复制状态。
-
登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在存储桶列表中,请选择存储桶名称。
-
在 Objects (对象) 列表中,请选择对象名称。
-
在 Properties(属性)选项卡下,找到 Object management overview(对象管理概述),您可以在此查看 Replication status(复制状态)。
使用 head-object
命令检索对象元数据,如下所示。
aws s3api head-object --bucket
source-bucket
--keyobject-key
--version-idobject-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 SDK for Java 和 AWS SDK for .NET 获取复制状态。