

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

# 取得複寫狀態資訊
<a name="replication-status"></a>

複寫狀態可協助您判斷要複寫之物件的目前狀態。來源物件的複寫狀態將會傳回 `PENDING`、`COMPLETED` 或 `FAILED`。複本的複寫狀態將會傳回 `REPLICA`。

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

**Topics**
+ [複寫狀態概觀](#replication-status-overview)
+ [複寫至多個目的地儲存貯體時的複寫狀態](#replication-status-multiple-destinations)
+ [啟用 Amazon S3 複本修改同步時的複寫狀態](#replication-status-replica-mod-syn)
+ [搭配批次複寫任務使用複寫狀態資訊](#replication-status-batch-replication)
+ [尋找複寫狀態](#replication-status-usage)

## 複寫狀態概觀
<a name="replication-status-overview"></a>

在複寫中，您有一個來源儲存貯體，您可以在其上設定複寫一個或以上 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` 標頭，以及代表物件複寫狀態的下列其中一個值：`PENDING`、`COMPLETED` 或 `FAILED`。
**注意**  
若物件複寫在您上傳完物件後失敗，則您無法重試複寫。您必須再次上傳物件，或使用 S3 批次複寫來複寫任何失敗的物件。S3 生命週期會封鎖具有 `PENDING`或 `FAILED`複寫狀態之物件的過期和轉換動作。如需使用批次複寫的詳細資訊，請參閱[使用批次複寫來複寫現有物件](s3-batch-replication-batch.md)。  
針對缺少複寫角色許可、 AWS Key Management Service (AWS KMS) 許可或儲存貯體許可等問題，物件會轉換為 `FAILED` 狀態。對於暫時性錯誤，例如，如果儲存貯體或區域無法使用，複寫狀態不會轉換成 `FAILED`，但會保持 `PENDING`。資源恢復線上狀態後，Amazon S3 將繼續複寫這些物件。
+ 當您從目的地儲存貯體請求物件時，如果您請求中的物件是 Amazon S3 建立的複本，Amazon S3 會傳回值為 `REPLICA` 的 `x-amz-replication-status` 標頭。

**注意**  
在從已啟用複寫的來源儲存貯體中刪除物件之前，您應該先檢查物件的複寫狀態，確保已複寫物件。  
如果來源儲存貯體上已啟用 S3 生命週期組態，Amazon S3 會暫停生命週期動作，直到將物件的複寫狀態標記為 為止`COMPLETED`。如果複寫狀態為 `FAILED`，S3 生命週期會繼續封鎖物件的過期和轉換動作，直到您解決基礎複寫問題為止。如需詳細資訊，請參閱[S3 生命週期和](lifecycle-and-other-bucket-config.md#lifecycle-and-replication)。

## 複寫至多個目的地儲存貯體時的複寫狀態
<a name="replication-status-multiple-destinations"></a>

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

## 啟用 Amazon S3 複本修改同步時的複寫狀態
<a name="replication-status-replica-mod-syn"></a>

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

## 搭配批次複寫任務使用複寫狀態資訊
<a name="replication-status-batch-replication"></a>

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

您可以根據 `ObjectReplicationStatuses` 值來篩選要複寫的物件，方法是提供下列一或多個值：
+ `"NONE"` – 表示 Amazon S3 之前從未嘗試複寫該物件。
+ `"FAILED"` – 表示 Amazon S3 曾嘗試過複寫物件，但失敗。
+ `"COMPLETED"` – 表示 Amazon S3 之前已成功複寫該物件。
+ `"REPLICA"` – 表示這是 Amazon S3 曾從其他來源複寫的複本物件。

如需搭配使用這些複寫狀態值與批次複寫的詳細資訊，請參閱[批次複寫任務的篩選條件](s3-batch-replication-batch.md#batch-replication-filters)。

## 尋找複寫狀態
<a name="replication-status-usage"></a>

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

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

### 使用 S3 主控台
<a name="replication-status-console"></a>

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

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 在**一般用途儲存貯體**清單中，選擇複寫來源儲存貯體的名稱。

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

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

### 使用 AWS CLI
<a name="replication-status-cli"></a>

使用 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 SDKs
<a name="replication-status-sdk"></a>

下列程式碼片段會 適用於 .NET 的 AWS SDK分別使用 適用於 Java 的 AWS SDK 和 取得複寫狀態。

------
#### [ 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);
```

------