Amazon S3 Event Notifications로 복제 실패 이벤트 받기
Amazon S3 Event Notifications로 복제 실패 이벤트 받기
복제 구성에서 S3 복제 지표를 활성화했다면, 객체가 대상 AWS 리전으로 복제되지 않을 때 알림을 받도록 Amazon S3 Event Notifications를 설정할 수 있어요. 복제 구성에서 S3 Replication Time Control(S3 RTC)을 활성화했다면 객체가 복제의 15분 S3 RTC 임계값 안에 복제되지 않을 때도 알림을 받을 수 있어요.
중요: 복제 실패 이벤트 알림(
s3:Replication:OperationFailedReplication)을 받으려면 복제 규칙에서 S3 복제 지표를 활성화해야 해요. 실패 알림을 받기 위해 S3 Replication Time Control(S3 RTC)을 활성화할 필요는 없어요. S3 RTC는 임계값 기반 알림(s3:Replication:OperationMissedThreshold와s3:Replication:OperationReplicatedAfterThreshold)에만 필요합니다. S3 복제 지표는 S3 RTC와 별개로 활성화할 수 있어요. 자세한 내용은 S3 복제 지표 활성화 문서를 참고하세요.
다음 Replication 이벤트 유형을 사용하면 보류 중인 바이트, 보류 중인 작업, 복제 지연 시간을 추적해 복제 이벤트의 분 단위 진행 상황을 모니터링할 수 있어요. S3 복제 지표에 대한 자세한 내용은 S3 복제 지표 사용 문서를 참고하세요.
s3:Replication:OperationFailedReplication이벤트 유형은 복제 자격이 있는 객체가 복제에 실패했을 때 알려줘요.s3:Replication:OperationMissedThreshold이벤트 유형은 S3 RTC를 사용하는 복제 자격이 있는 객체가 15분 복제 임계값을 초과했을 때 알려줘요.s3:Replication:OperationReplicatedAfterThreshold이벤트 유형은 S3 RTC를 사용하는 복제 자격이 있는 객체가 15분 임계값 이후에 복제됐을 때 알려줘요.s3:Replication:OperationNotTracked이벤트 유형은 라이브 복제(Same-Region Replication[SRR] 또는 Cross-Region Replication[CRR]) 자격이 있는 객체가 복제 지표로 더 이상 추적되지 않을 때 알려줘요.
지원되는 모든 복제 이벤트 유형에 대한 전체 설명은 SQS, SNS, Lambda에 대한 지원 이벤트 유형 문서를 참고하세요. S3 Event Notifications가 포착하는 실패 코드 목록은 Amazon S3 복제 실패 이유 문서를 참고하세요.
S3 Event Notifications는 Amazon Simple Queue Service(Amazon SQS), Amazon Simple Notification Service(Amazon SNS), AWS Lambda를 통해 받을 수 있어요. 자세한 내용은 Amazon S3 Event Notifications 문서를 참고하세요. Amazon S3 Event Notifications를 구성하는 방법은 이벤트 알림 활성화 문서를 참고하세요.
다음은 Amazon S3가 s3:Replication:OperationFailedReplication 이벤트를 게시하기 위해 보내는 메시지의 예시예요. 자세한 내용은 이벤트 메시지 구조 문서를 참고하세요.
{
"Records": [
{
"eventVersion": "2.2",
"eventSource": "aws:s3",
"awsRegion": "us-east-1",
"eventTime": "2024-09-05T21:04:32.527Z",
"eventName": "Replication:OperationFailedReplication",
"userIdentity":{
"principalId": "s3.amazonaws.com"
},
"requestParameters":{
"sourceIPAddress": "s3.amazonaws.com"
},
"responseElements":{
"x-amz-request-id": "123bf045-2b4b-4ca8-a211-c34a63c59426",
"x-amz-id-2": "12VAWNDIHnwJsRhTccqQTeAPoXQmRt22KkewMV8G3XZihAuf9CLDdmkApgZzudaIe2KlLfDqGS0="
},
"s3":{
"s3SchemaVersion": "1.0",
"configurationId": "ReplicationEventName",
"bucket":{
"name": "amzn-s3-demo-bucket1",
"ownerIdentity":{
"principalId": "111122223333"
},
"arn": "arn:aws:s3:::amzn-s3-demo-bucket1"
},
"object":{
"key": "replication-object-put-test.png",
"size": 520080,
"eTag": "e12345ca7e88a38428305d3ff7fcb99f",
"versionId": "abcdeH0Xp66ep__QDjR76LK7Gc9X4wKO",
"sequencer": "0066DA1CBF104C0D51"
}
},
"replicationEventData":{
"replicationRuleId": "notification-test-replication-rule",
"destinationBucket": "arn:aws:s3:::amzn-s3-demo-bucket2",
"s3Operation": "OBJECT_PUT",
"requestTime": "2024-09-05T21:03:59.168Z",
"failureReason": "AssumeRoleNotPermitted"
}
}
]
}
출처: 문서
Amazon S3 복제 실패 이유
다음 표에는 Amazon S3 Replication 실패 이유가 나와 있어요. Amazon S3 Event Notifications로 s3:Replication:OperationFailedReplication 이벤트를 받은 뒤 failureReason 값을 보면 이 이유를 확인할 수 있어요.
이 실패 이유는 S3 Batch Replication 완료 보고서에서도 볼 수 있어요. 자세한 내용은 Batch Replication 완료 보고서 문서를 참고하세요.
| 복제 실패 이유 | 설명 |
|---|---|
| AssumeRoleNotPermitted | Amazon S3가 복제 구성이나 Batch Operations 작업에 지정된 AWS Identity and Access Management(IAM) 역할을 가정할 수 없음 |
| DstBucketInvalidRegion | 대상 버킷이 Batch Operations 작업이 지정한 AWS 리전과 같은 리전에 있지 않음. 이 오류는 Batch Replication에만 해당 |
| DstBucketNotFound | Amazon S3가 복제 구성에 지정된 대상 버킷을 찾을 수 없음 |
| DstBucketObjectLockConfigMissing | Object Lock이 활성화된 소스 버킷에서 객체를 복제하려면 대상 버킷에도 Object Lock이 활성화되어 있어야 함. 이 오류는 대상 버킷에 Object Lock이 활성화되지 않았을 수 있음을 나타냄. 자세한 내용은 Object Lock 고려 사항 참고 |
| DstBucketUnversioned | S3 대상 버킷에 버전 관리가 활성화되어 있지 않음. S3 Replication으로 객체를 복제하려면 대상 버킷의 버전 관리를 활성화해야 함 |
| DstDelObjNotPermitted | Amazon S3가 대상 버킷으로 삭제 마커를 복제할 수 없음. 대상 버킷에 s3:ReplicateDelete 권한이 없을 수 있음 |
| DstKmsKeyInvalidState | 대상 버킷의 AWS Key Management Service(AWS KMS) 키가 유효한 상태가 아님. 필요한 AWS KMS 키를 검토하고 활성화해야 함. AWS KMS 키 관리에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS KMS 키의 키 상태 참고 |
| DstKmsKeyNotFound | 복제 구성에서 대상 버킷에 대해 구성된 AWS KMS 키가 존재하지 않음 |
| DstMultipartCompleteNotPermitted | Amazon S3가 대상 버킷에서 객체의 멀티파트 업로드를 완료할 수 없음. 대상 버킷에 s3:ReplicateObject 권한이 없을 수 있음 |
| DstMultipartInitNotPermitted | Amazon S3가 대상 버킷에 객체의 멀티파트 업로드를 시작할 수 없음. 대상 버킷에 s3:ReplicateObject 권한이 없을 수 있음 |
| DstMultipartUploadNotPermitted | Amazon S3가 대상 버킷에 멀티파트 업로드 객체를 업로드할 수 없음. 대상 버킷에 s3:ReplicateObject 권한이 없을 수 있음 |
| DstObjectHardDeleted | S3 Batch Replication은 대상 버킷에서 객체의 버전 ID로 삭제된 객체를 다시 복제하는 것을 지원하지 않음. 이 오류는 Batch Replication에만 해당 |
| DstPutAclNotPermitted | Amazon S3가 객체 액세스 제어 목록(ACL)을 대상 버킷으로 복제할 수 없음. 대상 버킷에 s3:ReplicateObject 권한이 없을 수 있음 |
| DstPutLegalHoldNotPermitted | Amazon S3가 불변 객체를 복제할 때 대상 객체에 Object Lock 법적 보류를 걸 수 없음. 대상 버킷에 s3:PutObjectLegalHold 권한이 없을 수 있음. 자세한 내용은 법적 보류 참고 |
| DstPutObjectNotPermitted | Amazon S3가 대상 버킷으로 객체를 복제할 수 없음. 대상 버킷에 필요한 권한(s3:ReplicateObject 또는 s3:ObjectOwnerOverrideToBucketOwner 권한)이 없거나, AWS KMS 키 정책이 소스 버킷의 복제 역할이 대상 버킷에서 AWS KMS 키를 사용하는 것(kms:Decrypt와 kms:GenerateDataKey* 작업)을 허용하지 않을 때 발생할 수 있음 |
| DstPutRetentionNotPermitted | Amazon S3가 불변 객체를 복제할 때 대상 객체에 보존 기간을 설정할 수 없음. 대상 버킷에 s3:PutObjectRetention 권한이 없을 수 있음 |
| DstPutTaggingNotPermitted | Amazon S3가 객체 태그를 대상 버킷으로 복제할 수 없음. 대상 버킷에 s3:ReplicateObject 권한이 없을 수 있음 |
| DstVersionNotFound | Amazon S3가 메타데이터를 복제해야 하는 대상 버킷에서 필요한 객체 버전을 찾을 수 없음 |
| InitiateReplicationNotPermitted | Amazon S3가 객체에 대한 복제를 시작할 수 없음. Batch Operations 작업에 s3:InitiateReplication 권한이 없을 수 있음. 이 오류는 Batch Replication에만 해당 |
| SrcBucketInvalidRegion | 소스 버킷이 Batch Operations 작업이 지정한 AWS 리전과 같은 리전에 있지 않음. 이 오류는 Batch Replication에만 해당 |
| SrcBucketNotFound | Amazon S3가 소스 버킷을 찾을 수 없음 |
| SrcBucketReplicationConfigMissing | Amazon S3가 소스 버킷에 대한 복제 구성을 찾지 못했음 |
| SrcGetAclNotPermitted | Amazon S3가 복제를 위해 소스 버킷의 객체에 액세스할 수 없음. 소스 버킷 객체에 s3:GetObjectVersionAcl 권한이 없을 수 있음. 소스 버킷의 객체는 버킷 소유자가 소유해야 해요. ACL이 활성화되어 있다면 Object Ownership이 Bucket owner preferred나 Object writer로 설정되어 있는지 확인하세요. Object Ownership이 Bucket owner preferred로 설정되어 있다면 버킷 소유자가 객체 소유자가 되려면 소스 버킷 객체에 bucket-owner-full-control ACL이 있어야 해요. 소스 계정은 Object Ownership을 Bucket owner enforced로 설정하고 ACL을 비활성화해서 버킷의 모든 객체 소유권을 가져갈 수 있어요 |
| SrcGetLegalHoldNotPermitted | Amazon S3가 S3 Object Lock 법적 보류 정보에 액세스할 수 없음 |
| SrcGetObjectNotPermitted | Amazon S3가 복제를 위해 소스 버킷의 객체에 액세스할 수 없음. 소스 버킷에 s3:GetObjectVersionForReplication 권한이 없을 수 있음 |
| SrcGetRetentionNotPermitted | Amazon S3가 S3 Object Lock 보존 기간 정보에 액세스할 수 없음 |
| SrcGetTaggingNotPermitted | Amazon S3가 소스 버킷에서 객체 태그 정보에 액세스할 수 없음. 소스 버킷에 s3:GetObjectVersionTagging 권한이 없을 수 있음 |
| SrcHeadObjectNotPermitted | Amazon S3가 소스 버킷에서 객체 메타데이터를 검색할 수 없음. 소스 버킷에 s3:GetObjectVersionForReplication 권한이 없을 수 있음 |
| SrcKeyNotFound | Amazon S3가 복제할 소스 객체 키를 찾을 수 없음. 복제가 완료되기 전에 소스 객체가 삭제됐을 수 있음 |
| SrcKmsKeyInvalidState | 소스 버킷의 AWS KMS 키가 유효한 상태가 아님. 필요한 AWS KMS 키를 검토하고 활성화해야 함. AWS KMS 키 관리에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS KMS 키의 키 상태 참고 |
| SrcObjectNotEligible | 일부 객체는 복제 자격이 없음. 객체의 스토리지 클래스 때문에 그럴 수도 있고 객체 태그가 복제 구성과 일치하지 않기 때문일 수도 있음 |
| SrcObjectNotFound | 소스 객체가 존재하지 않음 |
| SrcReplicationNotPending | Amazon S3가 이미 이 객체를 복제했음. 이 객체는 더 이상 복제가 보류 중이 아님 |
| SrcVersionNotFound | Amazon S3가 복제할 소스 객체 버전을 찾을 수 없음. 복제가 완료되기 전에 소스 객체 버전이 삭제됐을 수 있음 |
| SrcAnnotationNotFound | 소스 주석을 찾지 못했음. 복제가 완료되기 전에 주석이 삭제됨 |
| SrcGetObjectAnnotationNotPermitted | 복제를 위해 소스 주석을 검색할 때 액세스가 거부됨. IAM 역할에 s3:GetObjectVersionAnnotationForReplication이 없음 |
| DstPutObjectAnnotationNotPermitted | 주석을 대상 버킷으로 복제할 때 액세스가 거부됨. IAM 역할에 s3:ReplicateObject가 없거나 필요한 AWS KMS 키에 대한 액세스 권한이 없음 |
| SrcAnnotationEncryptionUnsupported | 객체 주석 암호화 유형이 지원되지 않음 |
| AnnotationLimitExceeded | 객체 주석 수가 한도(1000)를 초과함. 복제가 대상의 주석 한도를 초과하게 됨 |