

# 복제 상태 정보 가져오기
<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`를 지정해 키 이름 접두사가 `TaxDocs`인 객체만 복제하도록 Amazon S3에 지시한다고 가정해 봅시다. 이 키 이름 접두사(예: `TaxDocs/document1.pdf`)를 갖는 객체를 업로드하면 모두 복제됩니다. 이 키 이름 접두사를 사용한 객체 요청에 대해 Amazon S3는 객체 복제 상태를 표시하는 값 `x-amz-replication-status`, `PENDING` 또는 `COMPLETED`가 포함된 `FAILED` 헤더를 반환합니다.
**참고**  
객체를 업로드한 후 객체 복제가 실패할 경우 복제를 재시도할 수 없습니다. 객체를 다시 업로드하거나 S3 배치 복제를 사용하여 실패한 객체를 복제해야 합니다. 배치 복제 사용 방법에 대한 자세한 내용은 [배치 복제를 사용한 기존 객체 복제](s3-batch-replication-batch.md) 섹션을 참조하세요.  
복제 역할 권한, AWS Key Management Service(AWS KMS) 권한 또는 버킷 권한 누락과 같은 문제의 경우 객체가 `FAILED` 상태로 전환됩니다. 버킷 또는 리전을 사용할 수 없는 경우와 같은 일시적인 실패의 경우 복제 상태는 `FAILED`로 전환되지 않고 `PENDING` 상태 그대로 유지됩니다. 리소스가 다시 온라인 상태가 되면 Amazon S3는 해당 객체 복제를 재개합니다.
+ 대상 버킷으로부터 객체를 요청하면 해당 객체가 Amazon S3에서 생성한 복제본인 경우 Amazon S3는 값이 `x-amz-replication-status`인 `REPLICA` 헤더를 반환합니다.

**참고**  
복제가 활성화된 소스 버킷에서 객체를 삭제하려면 먼저 해당 객체의 복제 상태를 통해 객체가 복제되었는지 확인해야 합니다.  
소스 버킷에서 S3 수명 주기 구성이 활성화된 경우 객체 상태가 `COMPLETED` 또는 `FAILED`로 표시될 때까지 Amazon S3는 수명 주기 작업을 보류합니다.

## 여러 대상 버킷에 복제하는 경우 복제 상태
<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 Inventory를 사용한 데이터 카탈로그화 및 분석](storage-inventory.md) 섹션을 참조하세요.

Amazon S3 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용하여 객체 복제 상태를 확인할 수도 있습니다.

### S3 콘솔 사용
<a name="replication-status-console"></a>

Amazon S3 콘솔의 객체 세부 정보 페이지에서 객체의 복제 상태를 볼 수 있습니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 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 SDK 사용
<a name="replication-status-sdk"></a>

다음 코드 조각은 각각 AWS SDK for Java 및 AWS SDK for .NET를 사용하여 복제 상태를 가져옵니다.

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

------