S3 Replication Time Control(S3 RTC)을 사용하여 규정 준수 요구 사항 충족 - Amazon Simple Storage Service

S3 Replication Time Control(S3 RTC)을 사용하여 규정 준수 요구 사항 충족

S3 Replication Time Control(S3 RTC)은 데이터 복제와 관련된 규정 준수 요구 사항이나 비즈니스 요구 사항을 충족할 수 있도록 지원하며 Amazon S3 복제 활동에 대한 가시성을 제공합니다. S3 RTC는 Amazon S3에 업로드하는 대부분의 객체를 몇 초 만에 복제하고 이러한 객체의 99.99%를 15분 내에 복제합니다.

S3 RTC에는 기본적으로 S3 복제 지표와 Amazon S3 이벤트 알림이 포함되어 있습니다. 이러한 지표와 알림을 사용하여 복제 대기 중인 총 S3 API 작업 수, 복제 대기 중인 객체의 전체 크기, 최대 복제 시간 등을 모니터링할 수 있습니다. S3 RTC와 독립적으로 복제 지표를 활성화할 수 있습니다. 자세한 내용은 복제 지표로 진행률 모니터링을 참조하십시오. 또한 S3 RTC는 객체 복제가 15분의 임계값을 초과하거나 초과 후에 복제하는 경우 버킷 소유자에게 알리는 OperationMissedThresholdOperationReplicatedAfterThreshold 이벤트를 제공합니다.

S3 RTC의 경우, Amazon S3 이벤트는 드물지만 객체가 15분 이내에 복제되지 않는 경우와 해당 객체가 15분의 임계값 이후에 복제되는 경우를 알려줄 수 있습니다. Amazon S3 이벤트는 Amazon SQS, Amazon SNS 또는 AWS Lambda을(를) 통해 제공됩니다. 자세한 내용은 Amazon S3 이벤트 알림 단원을 참조하십시오.

S3 복제 시간 제어

먼저 S3 Replication Time Control(S3 RTC)을 새 복제 규칙 또는 기존 복제 규칙과 함께 사용할 수 있습니다. 복제 규칙을 전체 S3 버킷에 적용하거나 특정 접두사 또는 태그가 있는 Amazon S3 객체에 적용하도록 선택할 수 있습니다. S3 RTC를 사용 설정하면 복제 규칙에서도 복제 지표가 사용 설정됩니다.

최신 버전의 복제 구성을 사용하는 경우(즉, 사용자가 복제 구성 규칙의 Filter 요소를 지정) 기본적으로 Amazon S3는 삭제 마커를 복제하지 않습니다. 그러나 태그 기반이 아닌 규칙에도 삭제 마커 복제를 추가할 수 있습니다.

참고

복제 지표 비용은 Amazon CloudWatch 사용자 지정 지표와 동일한 요금으로 청구됩니다. 자세한 내용은 Amazon CloudWatch 요금을 참조하십시오.

S3 RTC를 사용한 규칙 생성에 대한 자세한 내용은 S3 Replication Time Control(S3 RTC) 사용 설정 단원을 참조하세요.

S3 RTC를 사용한 복제 지표

S3 Replication Time Control(S3 RTC)이 사용 설정된 복제 규칙은 복제 지표를 게시합니다. 복제 지표를 사용하면 복제를 보류 중인 총 S3 API 작업 수, 복제 보류 중인 객체의 총 크기, 대상 리전으로의 최대 복제 시간, 복제에 실패한 총 작업 수 등을 모니터링할 수 있습니다. 그런 다음 별도로 복제하는 각 데이터 세트를 모니터링할 수 있습니다.

복제 지표는 S3 RTC를 사용 설정한 후 15분 이내에 사용할 수 있습니다. 복제 지표는 Amazon S3 콘솔, Amazon S3 API, AWS SDK, AWS Command Line Interface(AWS CLI)Amazon CloudWatch를 통해 사용할 수 있습니다. 자세한 내용은 Amazon CloudWatch를 사용한 지표 모니터링 단원을 참조하십시오.

Amazon S3 콘솔을 통한 복제 지표를 찾는 방법에 대한 자세한 내용은 Amazon S3 콘솔을 사용한 복제 지표 보기 단원을 참조하세요.

Amazon S3 이벤트 알림을 사용하여 복제 객체를 추적

S3 Replication Time Control(S3 RTC)을 게시하는 특정 이벤트 알림을 모니터링하여 15분 이내에 복제되지 않은 객체의 복제 시간을 추적할 수 있습니다. 이러한 이벤트는 S3 RTC를 사용하여 복제할 수 있는 객체가 15분 이내에 복제되지 않은 경우 및 해당 객체가 15분의 임계값 이후에 복제되는 경우 게시됩니다.

복제 지표는 S3 RTC를 사용 설정한 후 15분 이내에 사용할 수 있습니다. Amazon S3 이벤트는 Amazon SQS, Amazon SNS 또는 AWS Lambda을(를) 통해 제공됩니다. 자세한 내용은 Amazon S3 이벤트 알림 단원을 참조하십시오.

S3 RTC에 대한 모범 사례 및 지침

S3 Replication Time Control(S3 RTC)을 사용하여 Amazon S3의 데이터를 복제할 때는 다음 모범 사례 및 지침에 따라 워크로드에 맞게 복제 성능을 최적화하세요.

Amazon S3 복제 및 요청 처리 성능 지침

애플리케이션은 Amazon S3에서 스토리지를 업로드하고 검색할 때 요청 성능에서 초당 수천 회의 트랜잭션을 구현할 수 있습니다. 예를 들어, 애플리케이션은 S3 복제가 사용자를 대신하여 수행하는 요청을 포함하여 S3 버킷의 접두사에 대해 초당 3,500개 이상의 PUT/COPY/POST/DELETE 또는 초당 5,500개 이상의 GET/HEAD 요청을 달성할 수 있습니다. 버킷의 접두사 수에는 제한이 없습니다. 읽기를 병렬화하여 읽기 또는 쓰기 성능을 향상시킬 수 있습니다. 예를 들어, S3 버킷에서 접두사 10개를 만들어 읽기를 병렬화하는 경우 읽기 성능을 초당 읽기 요청 55,000개로 조정할 수 있습니다.

Amazon S3는 이러한 지침을 초과하는 연속 요청 빈도 또는 LIST 요청과 동시에 연속 요청 빈도에 따라 자동으로 확장됩니다. Amazon S3가 새로운 요청 빈도에 대해 내부적으로 최적화하는 동안 최적화가 완료될 때까지 일시적으로 HTTP 503 요청 응답을 받을 수 있습니다. 이는 초당 요청 속도가 증가하거나 S3 RTC를 처음 사용 설정할 때 발생할 수 있습니다. 이 기간 동안 복제 지연 시간이 증가할 수 있습니다. 초당 요청에 대한 Amazon S3 성능 지침이 초과되는 기간에는 S3 RTC SLA(서비스 수준 계약)가 적용되지 않습니다.

복제 데이터 전송 속도가 기본 1Gbps 한도를 초과하는 기간에는 S3 RTC SLA도 적용되지 않습니다. 복제 전송 속도가 1Gbps를 초과할 것으로 예상되는 경우 AWS Support Center에 문의하거나 Service Quotas를 사용하여 한도 증가를 요청할 수 있습니다.

복제 요청 속도 추정

사용자를 대신하여 Amazon S3 복제가 수행하는 요청을 포함한 총 요청 빈도는 복제 원본 및 대상 버킷 모두에 대한 Amazon S3 요청 빈도 지침 내에 있어야 합니다. 복제된 각 객체에 대해 Amazon S3 복제는 최대 5개의 GET/HEAD 요청과 원본 버킷에 대한 PUT 요청 1개 및 각 대상 버킷에 대한 PUT 요청 1개로 구성됩니다.

예를 들어 초당 100개의 객체를 복제하려는 경우 Amazon S3 복제는 원본 S3 버킷에 대해 초당 총 200개의 PUT 요청에 추가로 100개의 PUT 요청을 사용자 대신 수행할 수 있습니다. Amazon S3 복제도 최대 500개의 GET/HEAD(복제된 각 객체에 대해 5개의 GET/HEAD 요청)를 수행할 수 있습니다.

참고

복제된 객체당 하나의 PUT 요청에만 비용이 발생합니다. 자세한 내용은 복제 관련 Amazon S3 FAQ의 요금 정보를 참조하십시오.

S3 RTC 데이터 전송 속도 제한 초과

S3 복제 시간 제어 데이터 전송 속도가 기본 1Gbps 한도를 초과할 것으로 예상되는 경우 AWS Support Center에 문의하거나 Service Quotas를 사용하여 한도 증가를 요청하세요.

AWS KMS 암호화된 객체 복제 요청 속도

Amazon S3 복제를 사용한 서버 측 암호화(SSE-KMS)로 암호화된 객체를 복제하는 경우 초당 AWS Key Management Service(AWS KMS) 요청 제한이 적용됩니다. AWS KMS은(는) 요청 속도가 초당 요청 수 제한을 초과하므로 유효한 요청을 거부할 수 있습니다. 요청이 조절되면 AWS KMS이(가) ThrottlingException 오류를 반환합니다. AWS KMS 요청 빈도 제한은 사용자가 직접 수행하는 요청과 사용자를 대신하여 Amazon S3 복제가 수행한 요청에 적용됩니다.

예를 들어 초당 1,000개의 객체를 복제하려는 경우 AWS KMS 요청 속도 제한에서 2,000개의 요청을 뺄 수 있습니다. 초당 요청 속도는 복제를 제외한 AWS KMS 워크로드에 대해 사용할 수 있습니다. Amazon CloudWatch의 AWS KMS 요청 지표를 사용하여 AWS 계정의 총 AWS KMS 요청 속도를 모니터링할 수 있습니다.

S3 Replication Time Control(S3 RTC) 사용 설정

S3 Replication Time Control(S3 RTC)은 데이터 복제와 관련된 규정 준수 요구 사항이나 비즈니스 요구 사항을 충족할 수 있도록 지원하며 Amazon S3 복제 활동에 대한 가시성을 제공합니다. S3 RTC는 Amazon S3에 업로드하는 대부분의 객체를 몇 초 만에 복제하고 이러한 객체의 99.99%를 15분 내에 복제합니다.

S3 RTC를 사용하여 복제 보류 중인 객체의 총 수와 크기 및 대상 리전까지의 최대 복제 시간을 모니터링할 수 있습니다. 복제 지표는 AWS Management ConsoleAmazon CloudWatch 사용 설명서를 통해 사용할 수 있습니다. 자세한 내용은 CloudWatch의 S3 복제 지표 단원을 참조하십시오.

주제

    단계별 지침은 동일한 계정이 소유한 원본 및 대상 버킷에 대한 복제 구성단원을 참조하세요. 이 주제에서는 버킷을 동일한 및 서로 다른 AWS 계정이 소유한 경우에 복제 구성에서 S3 RTC를 사용하는 지침을 제공합니다.

    AWS CLI를 사용하여 S3 RTC가 사용 설정된 객체를 복제하려면 버킷을 생성하고 버킷에서 버전 관리를 사용하며 객체를 복제할 권한을 Amazon S3에 부여하는 IAM 역할을 생성하고 복제 구성을 소스 버킷에 추가합니다. 복제 구성을 하려면 S3 Replication Time Control(S3 RTC)이 사용 설정되어 있어야 합니다.

    S3 RTC를 사용하는 상태로 복제(AWS CLI)
    • 다음 예제에서는 ReplicationTimeMetric을(를) 설정하고 원본 버킷에 복제 구성을 추가합니다.

      { "Rules": [ { "Status": "Enabled", "Filter": { "Prefix": "Tax" }, "DeleteMarkerReplication": { "Status": "Disabled" }, "Destination": { "Bucket": "arn:aws:s3:::destination", "Metrics": { "Status": "Enabled", "EventThreshold": { "Minutes": 15 } }, "ReplicationTime": { "Status": "Enabled", "Time": { "Minutes": 15 } } }, "Priority": 1 } ], "Role": "IAM-Role-ARN" }
      중요

      Metrics:EventThreshold:MinutesReplicationTime:Time:Minutes은(는) 유효한 값으로 15만 가질 수 있습니다.

    다음은 S3 Replication Time Control(S3 RTC)을 통해 복제 구성을 추가하는 Java 예제입니다.

    import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.model.DeleteMarkerReplication; import software.amazon.awssdk.services.s3.model.Destination; import software.amazon.awssdk.services.s3.model.Metrics; import software.amazon.awssdk.services.s3.model.MetricsStatus; import software.amazon.awssdk.services.s3.model.PutBucketReplicationRequest; import software.amazon.awssdk.services.s3.model.ReplicationConfiguration; import software.amazon.awssdk.services.s3.model.ReplicationRule; import software.amazon.awssdk.services.s3.model.ReplicationRuleFilter; import software.amazon.awssdk.services.s3.model.ReplicationTime; import software.amazon.awssdk.services.s3.model.ReplicationTimeStatus; import software.amazon.awssdk.services.s3.model.ReplicationTimeValue; public class Main { public static void main(String[] args) { S3Client s3 = S3Client.builder() .region(Region.US_EAST_1) .credentialsProvider(() -> AwsBasicCredentials.create( "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY") ) .build(); ReplicationConfiguration replicationConfig = ReplicationConfiguration .builder() .rules( ReplicationRule .builder() .status("Enabled") .priority(1) .deleteMarkerReplication( DeleteMarkerReplication .builder() .status("Disabled") .build() ) .destination( Destination .builder() .bucket("destination_bucket_arn") .replicationTime( ReplicationTime.builder().time( ReplicationTimeValue.builder().minutes(15).build() ).status( ReplicationTimeStatus.ENABLED ).build() ) .metrics( Metrics.builder().eventThreshold( ReplicationTimeValue.builder().minutes(15).build() ).status( MetricsStatus.ENABLED ).build() ) .build() ) .filter( ReplicationRuleFilter .builder() .prefix("testtest") .build() ) .build()) .role("role_arn") .build(); // Put replication configuration PutBucketReplicationRequest putBucketReplicationRequest = PutBucketReplicationRequest .builder() .bucket("source_bucket") .replicationConfiguration(replicationConfig) .build(); s3.putBucketReplication(putBucketReplicationRequest); } }

    자세한 내용은 S3 Replication Time Control(S3 RTC)을 사용하여 규정 준수 요구 사항 충족 단원을 참조하십시오.