복제 상태 정보 가져오기
복제 상태 정보 가져오기
복제 상태는 복제 중인 객체의 현재 상태를 파악하는 데 도움이 돼요. 소스 객체의 복제 상태는 PENDING, COMPLETED, FAILED 중 하나로 반환되고, 복제본의 복제 상태는 REPLICA로 반환됩니다.
S3 Batch Replication 작업을 만들 때도 복제 상태 값을 사용할 수 있어요. 예를 들어 이 상태 값을 사용해 복제된 적이 없는 객체나 복제에 실패한 객체를 복제할 수 있습니다. Batch Replication에서 이 값을 사용하는 방법에 대한 자세한 내용은 Batch Replication 작업과 함께 복제 상태 정보 사용 문서를 참고하세요.
출처: 문서
복제 상태 개요
복제에서 복제를 구성하는 소스 버킷과 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 Batch Replication을 사용해 실패한 객체를 복제해야 합니다. S3 Lifecycle은
PENDING또는FAILED복제 상태의 객체에 대한 만료·전환 작업을 차단해요. Batch Replication 사용에 대한 자세한 내용은 Batch Replication으로 기존 객체 복제 문서를 참고하세요. - 객체는 복제 역할 권한, AWS Key Management Service(AWS KMS) 권한, 버킷 권한이 없다는 등의 문제로
FAILED상태로 전환돼요. 버킷이나 리전을 사용할 수 없는 것 같은 일시적인 실패의 경우 복제 상태는FAILED로 전환되지 않고PENDING으로 유지됩니다. 리소스가 다시 온라인이 되면 Amazon S3는 그 객체들의 복제를 재개해요.
- 참고: 객체를 업로드한 뒤 객체 복제가 실패하면 복제를 재시도할 수 없어요. 객체를 다시 업로드하거나 S3 Batch Replication을 사용해 실패한 객체를 복제해야 합니다. S3 Lifecycle은
- 예를 들어 복제 구성에서 객체 접두사
- 대상 버킷에서 객체를 요청할 때 요청의 객체가 Amazon S3가 만든 복제본이라면 Amazon S3는
REPLICA값을 가진x-amz-replication-status헤더를 반환해요.- 참고: 복제가 활성화된 소스 버킷에서 객체를 삭제하기 전에 객체가 복제됐는지 확인하기 위해 객체의 복제 상태를 확인하세요.
- 소스 버킷에 S3 Lifecycle 구성이 활성화되어 있다면 Amazon S3는 객체의 복제 상태를
COMPLETED로 표시할 때까지 라이프사이클 작업을 일시 중지해요. 복제 상태가FAILED면 S3 Lifecycle은 기반 복제 문제를 해결할 때까지 객체에 대한 만료·전환 작업을 계속 차단합니다. 자세한 내용은 S3 Lifecycle과 S3 Replication 문서를 참고하세요.
여러 대상 버킷으로 복제할 때의 복제 상태
객체를 여러 대상 버킷으로 복제할 때는 x-amz-replication-status 헤더가 다르게 동작해요. 소스 객체의 헤더는 모든 대상에 대해 복제가 성공했을 때만 COMPLETED 값을 반환합니다. 모든 대상에 대한 복제가 완료될 때까지 헤더는 PENDING 값으로 유지돼요. 대상 하나 이상이 복제에 실패하면 헤더는 FAILED를 반환해요.
Amazon S3 복제본 수정 동기화가 활성화된 경우의 복제 상태
복제 규칙에서 Amazon S3 복제본 수정 동기화를 활성화하면 복제본이 REPLICA 외의 상태를 보고할 수 있어요. 메타데이터 변경이 복제되는 중이면 x-amz-replication-status 헤더는 PENDING을 반환해요. 복제본 수정 동기화가 메타데이터 복제에 실패하면 헤더는 FAILED를 반환하고, 메타데이터가 올바르게 복제되면 복제본은 REPLICA 헤더를 반환합니다.
Batch Replication 작업과 함께 복제 상태 정보 사용
Batch Replication 작업을 만들 때 객체 생성 날짜와 복제 상태 같은 추가 필터를 선택적으로 지정해 작업 범위를 줄일 수 있어요.
ObjectReplicationStatuses 값을 기반으로 복제할 객체를 필터링할 수 있으며, 다음 값 중 하나 이상을 제공할 수 있어요.
"NONE"– Amazon S3가 이전에 객체를 복제한 적이 없다는 뜻입니다."FAILED"– Amazon S3가 이전에 객체를 복제하려 시도했지만 실패했다는 뜻입니다."COMPLETED"– Amazon S3가 이전에 객체를 성공적으로 복제했다는 뜻입니다."REPLICA"– Amazon S3가 다른 소스에서 복제한 복제본 객체라는 뜻입니다.
Batch Replication에서 이 복제 상태 값을 사용하는 방법에 대한 자세한 내용은 Batch Replication 작업용 필터 문서를 참고하세요.
복제 상태 찾기
버킷의 객체 복제 상태를 가져오려면 Amazon S3 Inventory 도구를 사용할 수 있어요. Amazon S3는 인벤토리 구성에서 지정한 대상 버킷으로 CSV 파일을 보냅니다. Amazon Athena를 사용해 인벤토리 보고서의 복제 상태를 쿼리할 수도 있어요. Amazon S3 Inventory에 대한 자세한 내용은 S3 Inventory로 데이터 카탈로그화 및 분석 문서를 참고하세요.
객체 복제 상태는 Amazon S3 콘솔, AWS Command Line Interface(AWS CLI), AWS SDK로도 찾을 수 있어요.
- Amazon S3 콘솔 – 객체의 세부 정보 페이지에서 객체의 복제 상태를 볼 수 있어요.
- AWS Management Console에 로그인하고 Amazon S3 콘솔을 엽니다. (https://console.aws.amazon.com/s3/)
- 왼쪽 탐색 창에서 **버킷(Buckets)**을 선택해요.
- 일반 목적 버킷(General purpose buckets) 목록에서 복제 소스 버킷의 이름을 선택해요.
- 객체(Objects) 목록에서 객체 이름을 선택해요. 객체의 세부 정보 페이지가 나타납니다.
- 속성(Properties) 탭에서 객체 관리 개요(Object management overview) 섹션까지 아래로 스크롤해요. 관리 구성(Management configurations) 아래에서 복제 상태(Replication status) 값을 확인해요.
- 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 – 다음 코드 조각은 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);
주석(annotation)의 복제 상태는 Amazon S3 API나 Amazon S3 Metadata로 찾을 수 있어요. ListObjectAnnotations와 GetObjectAnnotation API 작업은 응답에서 각 주석의 복제 상태를 반환합니다. 주석을 포함하는 Amazon S3 Metadata 테이블 구성이 있다면 주석 테이블의 replication_status 열을 쿼리할 수 있어요. 자세한 내용은 S3 Metadata 주석 테이블 스키마 문서를 참고하세요.