복제 문제 해결
이 섹션에는 Amazon S3 복제에 대한 문제 해결 팁과 S3 배치 복제 오류에 대한 정보가 나와 있습니다.
S3 복제 문제 해결 팁
복제를 구성한 후 대상 버킷에 객체 복제본이 표시되지 않는다면 다음 문제 해결 도움말을 사용하여 문제를 해결합니다.
-
대다수의 객체는 15분 이내에 복제됩니다. Amazon S3가 객체를 복제하는 데 걸리는 시간은 소스 및 대상 리전 쌍, 객체 크기를 비롯한 다양한 요소에 따라 달라집니다. 큰 객체의 경우 복제에 몇 시간이 걸릴 수도 있습니다. 복제 시간에 대한 가시성을 확보하려면 S3 Replication Time Control(S3 RTC)을 사용하면 됩니다.
복제하는 객체가 크다면 얼마간 기다렸다 대상에 해당 객체가 나타나는지 확인하세요. 또한 소스 객체의 복제 상태를 확인할 수도 있습니다. 객체 복제 상태가
PENDING
이면 Amazon S3가 복제를 완료하지 않은 것입니다. 객체 복제 상태가FAILED
인 경우 소스 버킷에서 설정된 복제 구성을 확인하세요.또한 복제 중에 실패에 대한 정보를 받으려면 Amazon S3 이벤트 알림 복제를 설정하여 실패 이벤트를 받을 수 있습니다. 자세한 내용은 Amazon S3 이벤트 알림을 사용하여 복제 실패 이벤트 수신을 참조하세요.
-
객체의 복제 상태를 확인하려면
HeadObject
API 작업을 직접 호출하면 됩니다.HeadObject
API 작업은 객체의PENDING
,COMPLETED
또는FAILED
복제 상태를 반환합니다.HeadObject
API 직접 호출에 대한 응답으로x-amz-replication-status
헤더에 복제 상태가 반환됩니다.참고
HeadObject
를 실행하려면 요청하는 객체에 대한 읽기 액세스 권한이 있어야 합니다.HEAD
요청에는GET
작업 수행을 제외하고GET
요청과 동일한 옵션이 있습니다. 예를 들어, AWS Command Line Interface(AWS CLI)를 사용하여HeadObject
요청을 실행하려면 다음 명령을 실행하면 됩니다.
를 사용자의 정보로 대체합니다.user input placeholders
aws s3api head-object --bucket
amzn-s3-demo-source-bucket
--keyindex.html
-
HeadObject
가FAILED
복제 상태의 객체를 반환하는 경우 S3 배치 복제를 사용하여 실패한 객체를 복제할 수 있습니다. 자세한 내용은 배치 복제를 사용한 기존 객체 복제 단원을 참조하십시오. 또는 실패한 객체를 소스 버킷에 다시 업로드해도 됩니다. 이렇게 하면 새 객체에 대한 복제가 시작됩니다. -
원본 버킷의 복제 구성에서 다음을 확인합니다.
-
대상 버킷의 Amazon 리소스 이름(ARN)이 정확합니다.
-
키 이름 접두사가 정확합니다. 예를 들어, 접두사
Tax
로 객체 복제를 구성한 경우라면Tax/document1
또는Tax/document2
와 같이 키 이름이 포함된 객체만 복제됩니다. 키 이름이document3
인 객체는 복제되지 않습니다. -
복제 규칙의 상태는
Enabled
입니다.
-
-
복제 구성의 어떤 버킷에서도 버전 관리가 일시 중단되지 않았는지 확인합니다. 소스 버킷과 대상 버킷 모두에서 버전 관리를 활성화해야 합니다.
-
복제 규칙이 대상 버킷 소유자로 객체 소유권 변경으로 설정된 경우 복제에 사용되는 AWS Identity and Access Management(IAM) 역할에
s3:ObjectOwnerOverrideToBucketOwner
권한이 있어야 합니다. 이 권한은 리소스(이 경우 대상 버킷)에 부여됩니다. 예를 들어, 다음Resource
명령문은 대상 버킷에 이 권한을 부여하는 방법을 보여줍니다.{ "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::
amzn-s3-demo-destination-bucket
/*" } -
다른 계정이 대상 버킷을 소유한 경우, 대상 버킷 소유자가 대상 버킷 정책을 통해 소스 버킷 소유자에게
s3:ObjectOwnerOverrideToBucketOwner
권한도 부여해야 합니다. 다음 예시 버킷 정책을 사용하려면
를 실제 정보로 대체하세요.user input placeholders
{ "Version": "2012-10-17", "Id": "Policy1644945280205", "Statement": [ { "Sid": "Stmt1644945277847", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789101
:role/s3-replication-role
" }, "Action": [ "s3:ReplicateObject", "s3:ReplicateTags", "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" } ] }참고
대상 버킷의 객체 소유권 설정에 버킷 소유자 적용이 포함된 경우 복제 규칙에서 객체 소유권을 대상 버킷 소유자로 변경으로 설정을 업데이트할 필요가 없습니다. 객체 소유권 변경은 기본적으로 발생합니다. 복제본 소유권 변경에 대한 자세한 내용은 복제본 소유자 변경을 참조하세요.
-
소스 버킷과 대상 버킷을 서로 다른 AWS 계정에서 소유하는 교차 계정 시나리오에서 복제 구성을 설정하는 경우, 대상 버킷을 요청자 지불 버킷으로 구성할 수 없습니다. 자세한 내용은 스토리지 전송 및 사용량에 대한 요청자 지불액 버킷 사용 단원을 참조하십시오.
-
버킷의 소스 객체가 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)로 암호화된 경우, 복제 규칙은 AWS KMS로 암호화된 객체를 포함하도록 구성되어야 합니다. Amazon S3 콘솔의 암호화 설정에서 AWS KMS로 암호화된 객체 복제를 선택해야 합니다. 그런 다음, 대상 객체를 암호화하는 데 사용할 AWS KMS 키를 선택합니다.
참고
대상 버킷이 다른 계정에 있는 경우 대상 계정에서 소유하는 AWS KMS 고객 관리형 키를 지정하세요. 기본 Amazon S3 관리 키(
aws/s3
)를 사용하지 마세요. 기본 키를 사용하면 소스 계정이 소유한 Amazon S3 관리형 키로 객체를 암호화하여 객체가 다른 계정과 공유되지 않도록 합니다. 따라서 대상 계정은 대상 버킷의 객체에 액세스할 수 없습니다.대상 계정에 속한 AWS KMS 키를 사용하여 대상 객체를 암호화하려면 대상 계정이 KMS 키 정책에서 복제 역할에
kms:GenerateDataKey
및kms:Encrypt
권한을 부여해야 합니다. KMS 키 정책에서 다음 예시 명령문을 사용하려면
를 실제 정보로 대체하세요.user input placeholders
{ "Sid": "AllowS3ReplicationSourceRoleToUseTheKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789101
:role/s3-replication-role
" }, "Action": ["kms:GenerateDataKey", "kms:Encrypt"], "Resource": "*" }AWS KMS 키 정책의
Resource
명령문에 별표(*
)를 사용하는 경우 정책은 복제 역할에만 KMS 키를 사용할 수 있는 권한을 부여합니다. 정책은 복제 역할의 권한 상승을 허용하지 않습니다.기본적으로 KMS 키 정책은 루트 사용자에게 키에 대한 전체 권한을 부여합니다. 이러한 권한은 동일한 계정의 다른 사용자에게 위임할 수 있습니다. 소스 KMS 키 정책에
Deny
명령문이 없는 한 IAM 정책을 사용하여 소스 KMS 키에 복제 역할 권한을 부여하는 것만으로도 충분합니다.참고
특정 CIDR 범위, 가상 프라이빗 클라우드(VPC) 엔드포인트 또는 S3 액세스 포인트에 대한 액세스를 제한하는 KMS 키 정책으로 인해 복제가 실패할 수 있습니다.
소스 또는 대상 KMS 키가 암호화 컨텍스트에 따라 권한을 부여하는 경우 Amazon S3 버킷 키가 버킷에 대해 활성화되어 있는지 확인하세요. 버킷에 S3 버킷 키가 켜져 있는 경우 암호화 컨텍스트는 다음과 같이 버킷 수준 리소스여야 합니다.
"kms:EncryptionContext:arn:aws:arn": [ "arn:aws:s3:::
amzn-s3-demo-source-bucket
" ] "kms:EncryptionContext:arn:aws:arn": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
" ]소스 계정은 KMS 키 정책에서 부여한 권한 외에도 복제 역할의 IAM 정책에 다음과 같은 최소 권한을 추가해야 합니다.
{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "
Source-KMS-Key-ARN
" ] }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Encrypt" ], "Resource": [ "Destination-KMS-Key-ARN
" ] }AWS KMS로 암호화된 객체를 복제하는 방법에 대한 자세한 내용은 암호화된 객체 복제를 참조하세요.
-
다른 AWS 계정이 대상 버킷을 소유한 경우, 해당 대상 버킷에 소스 버킷 소유자의 객체 복제를 허용하는 버킷 정책이 있는지 확인합니다. 예시는 서로 다른 계정의 버킷에 대한 복제 구성을 확인하세요.
-
권한을 검증한 후에도 객체가 여전히 복제되지 않는 경우 다음 위치에 명시적인
Deny
명령문이 있는지 확인하세요.-
소스 또는 대상 정책의
Deny
명령문. 버킷 정책이 다음 작업 중 하나에 대해 복제 역할에 대한 액세스를 거부하면 복제가 실패합니다.원본 버킷:
"s3:GetReplicationConfiguration", "s3:ListBucket", "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging"
대상 버킷:
"s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags"
-
IAM 역할에 연결된
Deny
명령문 또는 권한 경계로 인해 복제가 실패할 수 있습니다. -
소스 또는 대상 계정에 연결된 AWS Organizations 서비스 제어 정책(SCP)의
Deny
문으로 인해 복제가 실패할 수 있습니다.
-
-
객체 복제본이 대상 버킷에 나타나지 않는 경우, 다음 문제로 복제가 차단된 것일 수 있습니다.
-
Amazon S3는 원본 버킷에서 다른 복제 구성이 생성한 복제본을 복제하지 않습니다. 예를 들어 버킷 A에서 버킷 B로, 버킷 B에서 버킷 C로 복제 구성을 설정하면 Amazon S3는 버킷 B에 있는 객체 복제본을 버킷 C로 복제하지 않습니다.
-
소스 버킷 소유자는 다른 AWS 계정에 객체 업로드 권한을 부여할 수 있습니다. 기본적으로 원본 버킷 소유자는 다른 계정에서 생성한 객체에 대해 권한이 없습니다. 복제 구성은 원본 버킷 소유자가 액세스 권한을 가진 객체만 복제합니다. 이 문제를 예방하기 위해 소스 버킷 소유자는 다른 AWS 계정에 해당 객체에 대한 명시적 액세스 권한을 조건부로 요구하는 객체 만들기 권한을 부여할 수 있습니다. 정책 예제는 버킷 소유자가 완벽하게 제어할 수 있도록 보증하면서 객체에 업로드하는 크로스 계정 권한 부여을 참조하세요.
-
-
복제 구성에서 객체 중 특정 태그를 갖는 하위 집합을 복제하는 규칙을 추가한다고 가정해 봅시다. 이 경우 Amazon S3가 객체를 복제하도록 하려면 객체를 생성할 때 특정 태그 키 및 값을 할당해야 합니다. 먼저 객체를 생성한 후 기존 객체에 태그를 추가할 경우 Amazon S3는 해당 객체를 복제하지 않습니다.
-
Amazon S3 이벤트 알림을 사용하여 객체가 대상 AWS 리전으로 복제되지 않는 경우에 알림을 받으세요. Amazon S3 이벤트 알림은 Amazon Simple Queue Service(Amazon SQS), Amazon Simple Notification Service(Amazon SNS) 또는 AWS Lambda를 통해 사용할 수 있습니다. 자세한 내용은 Amazon S3 이벤트 알림을 사용하여 복제 실패 이벤트 수신 단원을 참조하십시오.
Amazon S3 이벤트 알림을 사용하여 복제 실패 이유도 볼 수 있습니다. 실패 이유 목록을 검토하려면 Amazon S3 복제 실패 이유를 참조하세요.
배치 복제 오류
대상 버킷에 복제되지 않는 객체 문제를 해결하려면 배치 복제 작업을 만드는 데 사용되는 버킷, 복제 역할, IAM 역할에 대한 다양한 권한 유형을 확인하세요. 또한, 버킷의 퍼블릭 액세스 차단 설정과 S3 객체 소유권 설정을 확인해야 합니다.
Batch Operations 작업에 대한 추가 문제 해결 팁은 Batch Operations 문제 해결 섹션을 참조하세요.
배치 복제 사용 중에 다음 오류 중 하나가 발생할 수 있습니다.
-
매니페스트 생성에서 필터 기준과 일치하는 키를 찾지 못함.
이 오류는 다음과 같은 이유로 발생할 수 있습니다.
-
소스 버킷이 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스에 저장된 경우.
이러한 객체에 배치 복제를 사용하려면 먼저 Batch Operations 작업에서 복원(
S3InitiateRestoreObjectOperation
) 작업을 사용하여 S3 Standard 스토리지 클래스로 복원해야 합니다. 자세한 내용은 아카이브된 객체 복원 및 객체 복원(배치 작업)을 참조하세요. 객체를 복원한 후에는 배치 복제 작업을 사용하여 객체를 복제할 수 있습니다. -
제공된 필터 기준이 소스 버킷의 유효한 객체와 일치하지 않는 경우.
필터 기준을 확인하고 수정합니다. 예를 들어, 배치 복제 규칙에서 필터 기준은 소스 버킷에서
Tax/
접두사가 있는 모든 객체를 찾는 것입니다. 접두사 이름을 잘못 입력한 경우, 슬래시가 끝에만 있는 것이 아니라 처음과 끝에 있는 경우(/Tax/
) S3 객체를 찾을 수 없습니다. 오류를 해결하려면 복제 규칙에서 접두사를 수정하세요(이 경우/Tax/
에서Tax/
로).
-
-
다음과 같은 이유로 배치 작업 상태가 실패했습니다. 작업 보고서를 보고서 버킷에 기록할 수 없습니다.
이 오류는 배치 작업에 사용되는 IAM 역할이 작업을 생성할 때 지정한 위치에 완료 보고서를 넣을 수 없을 때 발생합니다. 이 오류를 해결하려면 IAM 역할에 Batch Operations 완료 보고서를 저장하려는 버킷에 대한
s3:PutObject
권한이 있는지 확인하세요. 소스 버킷과 다른 버킷에 보고서를 전달하는 것이 좋습니다.이 오류 해결에 대한 추가 팁은 권한 문제가 있거나 S3 Object Lock 보존 모드가 활성화된 경우 작업 보고서가 전달되지 않음 섹션을 참조하세요.
-
배치 작업이 실패로 완료되었으며 총 실패 개수가 0이 아닙니다.
이 오류는 실행 중인 배치 복제 작업에 객체 사용 권한이 충분하지 않은 경우 발생합니다. 배치 복제 작업에 복제 규칙을 사용하는 경우 복제에 사용되는 IAM 역할에 소스 또는 대상 버킷의 객체에 액세스할 수 있는 적절한 권한이 있는지 확인하세요. 또한 배치 복제 완료 보고서를 확인하여 특정 Amazon S3 복제 실패 이유를 검토할 수도 있습니다.
-
배치 작업이 성공적으로 실행되었지만 대상 버킷에 예상되는 객체 수가 동일하지 않습니다.
이 오류는 배치 복제 작업에 제공된 매니페스트에 나열된 객체와 작업을 만들 때 선택한 필터가 일치하지 않을 때 발생합니다. 소스 버킷의 객체와 매칭되는 복제 규칙이 없고 생성된 매니페스트에 소스 버킷의 객체가 포함되지 않은 경우에도 이 메시지가 표시될 수 있습니다.
기존 복제 구성에 새 복제 규칙을 추가한 후 배치 작업 오류가 발생함
배치 작업은 소스 버킷의 복제 구성에 있는 모든 규칙에 대해 기존 객체 복제를 시도합니다. 기존 복제 규칙에 문제가 있는 경우 오류가 발생할 수 있습니다.
배치 작업 작업의 완료 보고서에 작업 실패 이유가 설명되어 있습니다. 일반적인 오류 목록은 Amazon S3 복제 실패 이유 섹션을 참조하세요.