복제 상태 정보 가져오기 - Amazon Simple Storage Service

복제 상태 정보 가져오기

복제 상태는 복제 중인 객체의 현재 상태를 확인하는 데 도움이 될 수 있습니다. 원본 객체의 복제 상태는 PENDING, COMPLETED, FAILED 중 하나를 반환합니다. 복제본의 복제 상태가 REPLICA을(를) 반환합니다.

S3 배치 복제 작업을 만들 때 복제 상태 값을 사용할 수도 있습니다. 예를 들어, 이러한 상태 값을 사용하면 복제된 적이 없거나 복제에 실패한 객체를 복제할 수 있습니다. 배치 복제에서 이러한 값을 사용하는 방법에 대한 자세한 내용은 배치 복제 작업에서 복제 상태 정보 사용 섹션을 참조하세요.

복제 상태 개요

복제에는 복제를 구성하는 소스 버킷과 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는 객체 복제 상태를 표시하는 값 PENDING, COMPLETED 또는 FAILED가 포함된 x-amz-replication-status 헤더를 반환합니다.

    참고

    객체를 업로드한 후 객체 복제가 실패할 경우 복제를 재시도할 수 없습니다. 객체를 다시 업로드하거나 S3 배치 복제를 사용하여 실패한 객체를 복제해야 합니다. 배치 복제 사용 방법에 대한 자세한 내용은 배치 복제를 사용한 기존 객체 복제 섹션을 참조하세요.

    복제 역할 권한, AWS Key Management Service(AWS KMS) 권한 또는 버킷 권한 누락과 같은 문제의 경우 객체가 FAILED 상태로 전환됩니다. 버킷 또는 리전을 사용할 수 없는 경우와 같은 일시적인 실패의 경우 복제 상태는 FAILED로 전환되지 않고 PENDING 상태 그대로 유지됩니다. 리소스가 다시 온라인 상태가 되면 Amazon S3는 해당 객체 복제를 재개합니다.

  • 대상 버킷으로부터 객체를 요청하면 해당 객체가 Amazon S3에서 생성한 복제본인 경우 Amazon S3는 값이 REPLICAx-amz-replication-status 헤더를 반환합니다.

참고

복제가 활성화된 소스 버킷에서 객체를 삭제하려면 먼저 해당 객체의 복제 상태를 통해 객체가 복제되었는지 확인해야 합니다.

소스 버킷에서 S3 수명 주기 구성이 활성화된 경우 객체 상태가 COMPLETED 또는 FAILED로 표시될 때까지 Amazon S3는 수명 주기 작업을 보류합니다.

여러 대상 버킷에 복제하는 경우 복제 상태

객체를 여러 대상 버킷에 복제하면 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 Inventory를 사용한 데이터 카탈로그화 및 분석 섹션을 참조하세요.

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 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);