取得複寫狀態資訊 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

取得複寫狀態資訊

複寫狀態可協助您判斷要複寫之物件的目前狀態。來源物件的複寫狀態將會傳回 PENDINGCOMPLETEDFAILED。複本的複寫狀態將會傳回 REPLICA

您也可以在建立 S3 批次複寫任務時使用複寫狀態值。例如,您可以使用這些狀態值來複寫從未複寫或複寫失敗的物件。如需搭配使用這些值與批次複寫的詳細資訊,請參閱搭配批次複寫任務使用複寫狀態資訊

複寫狀態概觀

在複寫中,您有一個來源儲存貯體,您可以在其上設定複寫一個或以上 Amazon S3 複寫物件的目的地儲存貯體。當您從這些儲存貯體請求物件 (使用 GetObject) 或物件中繼資料 (使用 HeadObject) 時,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

    注意

    若物件複寫在您上傳完物件後失敗,則您無法重試複寫。您必須再次上傳物件,或使用 S3 批次複寫來複寫任何失敗的物件。如需使用批次複寫的詳細資訊,請參閱使用批次複寫來複寫現有物件

    物件會針對遺失複寫角色許可、 AWS Key Management Service (AWS KMS) 許可或儲存貯體許可等問題轉換為 FAILED 狀態。對於暫時性錯誤,例如,如果儲存貯體或區域無法使用,複寫狀態不會轉換成 FAILED,但會保持 PENDING。資源恢復線上狀態後,Amazon S3 將繼續複寫這些物件。

  • 當您從目的地儲存貯體請求物件時,如果您請求中的物件是 Amazon S3 建立的複本,Amazon S3 會傳回值為 REPLICAx-amz-replication-status 標頭。

注意

在從已啟用複寫的來源儲存貯體中刪除物件之前,您應該先檢查物件的複寫狀態,確保已複寫物件。

如果已啟用來源儲存貯體上的 S3 生命週期組態,Amazon S3 會暫停生命週期動作,直到將物件狀態標示為 COMPLETEDFAILED 為止。

複寫至多個目的地儲存貯體時的複寫狀態

當您將物件複寫至多個目的地儲存貯體時,x-amz-replication-status 標頭的運作方式會有所不同。成功複寫至所有目的地時,來源物件的標頭只會傳回 COMPLETED 的值。標頭會保留在 PENDING 值,直到對所有目的地的複寫完成為止。如果一或多個目的地複寫失敗,標頭會傳回 FAILED

啟用 Amazon S3 複本修改同步時的複寫狀態

當您的複寫規則啟用 Amazon S3 複本修改同步時,複本可以報告 REPLICA 以外的狀態。如果中繼資料變更正在複寫過程中,則 x-amz-replication-status 標頭會傳回 PENDING。如果複本修改同步無法複寫中繼資料,則標頭會傳回 FAILED。如果中繼資料正確複寫,複本將會傳回標頭 REPLICA

搭配批次複寫任務使用複寫狀態資訊

建立批次複寫任務時,您可以選擇指定其他篩選條件,例如物件建立日期和複寫狀態,以縮小任務的範圍。

您可以根據 ObjectReplicationStatuses 值來篩選要複寫的物件,方法是提供下列一或多個值:

  • "NONE" – 表示 Amazon S3 之前從未嘗試複寫該物件。

  • "FAILED" – 表示 Amazon S3 曾嘗試過複寫物件,但失敗。

  • "COMPLETED" – 表示 Amazon S3 之前已成功複寫該物件。

  • "REPLICA" – 表示這是 Amazon S3 曾從其他來源複寫的複本物件。

如需搭配使用這些複寫狀態值與批次複寫的詳細資訊,請參閱批次複寫任務的篩選條件

尋找複寫狀態

若要取得儲存貯體中物件的複寫狀態,您可使用 Amazon S3 庫存工具。Amazon S3 會將 CSV 檔案傳送到您在庫存組態中指定的目的地儲存貯體。您也可以使用 Amazon Athena,來查詢庫存報告中的複寫狀態。如需 Amazon S3 庫存的詳細資訊,請參閱 使用 S3 庫存清單編目和分析資料

您也可以使用 Amazon S3 主控台、 AWS Command Line Interface (AWS CLI) 或 AWS SDK 來尋找物件複寫狀態。

在 Amazon S3 主控台中,您可以在物件詳細資訊頁面上檢視物件的複寫狀態。

  1. 登入 AWS Management Console ,並在 https://console.aws.amazon.com/s3/:// 開啟 Amazon S3 主控台。

  2. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

  3. 一般用途儲存貯體清單中,選擇複寫來源儲存貯體的名稱。

  4. Objects (物件) 清單中,選擇物件名稱。物件的詳細資訊頁面隨即出現。

  5. 屬性索引標籤上,向下捲動至物件管理概觀區段。在管理組態下,請參閱複寫狀態下的值。

使用 AWS Command Line Interface (AWS CLI) head-object命令擷取物件中繼資料,如下列範例所示。以複寫來源儲存貯體的名稱取代 amzn-s3-demo-source-bucket1,並以您自己的資訊取代其他 user input placeholders

aws s3api head-object --bucket amzn-s3-demo-source-bucket1 --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 SDK for .NET分別使用 AWS SDK for Java 和 取得複寫狀態。

Java
GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest(bucketName, key); ObjectMetadata metadata = s3Client.getObjectMetadata(metadataRequest); System.out.println("Replication Status : " + metadata.getRawMetadataValue(Headers.OBJECT_REPLICATION_STATUS));
.NET
GetObjectMetadataRequest getmetadataRequest = new GetObjectMetadataRequest { BucketName = sourceBucket, Key = objectKey }; GetObjectMetadataResponse getmetadataResponse = client.GetObjectMetadata(getmetadataRequest); Console.WriteLine("Object replication status: {0}", getmetadataResponse.ReplicationStatus);