정보 기술 요소가 모든 금융 기관과 모든 산업에 뿌리를 내리면서 강력한 저장 용량은 가용성, 내구성 및 확장성을 위한 기반을 형성합니다. 이 중에서 Amazon S3는 이러한 요구를 충족시키기 위한 가장 인기 있는 서비스 중 하나입니다. 기업이 지리적으로 확장됨에 따라 위치 간 데이터 복제의 필요성이 점점 더 느껴지기 시작합니다. 따라서 Amazon S3에서 Cross-Region Replication을 개발할 필요성이 발생했습니다. 여기서 한 AWS 지역에서 가져온 하나의 버킷에서 다른 AWS 지역의 다른 버킷으로 데이터 복제가 허용됩니다.
이 글은 테라폼, IaC 소프트웨어를 사용하여 Amazon S3에서 Cross-Region Replication을 구성하는 방법에 대해 설명합니다. SLA를 설정하는 방법에 대한 일반적인 개요를 제공하고, 왜 Cross-Region Replication을 구현해야 하는지 논의하며, 컨셉 증명을 실행하는 방법을 보여줍니다.
Cross-Region Replication이란 무엇인가요?
CRR은 Cross-Region Replication의 약자로, Amazon S3 기능 중 하나로 한 지역의 버킷에서 다른 지역의 다른 버킷으로 객체를 복제합니다. 이 복제는 규정 준수, 재해 복구 및 성능 최적화를 지원하여 데이터를 사용자에게 더 가깝게 저장합니다.
CRR의 주요 기능
- 버킷 간 객체를 자동으로 복제합니다.
- 지역은 독립적이며, 즉 원본 및 대상 버킷이 다른 지역에서 올 수 있습니다.
- 규칙: 이를 통해 무엇을 복제할지에 대한 세밀한 제어가 가능합니다.
- 암호화 및 태깅 지원: 암호화된 데이터와 객체 태그의 복제를 지원합니다.
CRR에 Terraform을 사용하는 이유는?
Terraform은 선언적 구성을 통해 클라우드 리소스 관리를 가능하게 합니다. AWS 관리 콘솔은 기본 복제 정책을 가지고 있지만, Terraform은 버전 제어 템플릿을 허용합니다.
Terraform의 이점
- 일관성. 이 과정은 설정 변동의 가능성을 줄여줍니다.
- 자동화. 빠른 구현, 업데이트 및 철거를 가능하게 합니다.
- 버전 관리. 롤백 및 기록 추적을 간소화합니다.
필수 조건
Terraform으로 CRR을 설정하기 전에 다음이 준비되어 있어야 합니다:
- S3 및 IAM 권한이 있는 AWS 계정
- 로컬에 설치된 Terraform
- 인증을 위한 AWS CLI 설정
구현
1단계: S3 버킷 정의하기
최소한 두 개의 버킷을 생성해야 합니다: 소스 버킷과 대상 버킷.
resource "aws_s3_bucket" "source_bucket" {
bucket = "my-source-bucket-example"
acl = "private"
versioning {
enabled = true
}
tags = {
Name = "SourceBucket"
Environment = "Production"
}
}
resource "aws_s3_bucket" "destination_bucket" {
bucket = "my-destination-bucket-example"
acl = "private"
versioning {
enabled = true
}
tags = {
Name = "DestinationBucket"
Environment = "Production"
}
}
2단계: 복제를 위한 IAM 역할 만들기
CRR을 사용하려면 CRR에 필요한 권한을 가진 IAM 역할이 있어야 합니다. 하나를 만들어 보겠습니다:
resource "aws_iam_role" "replication_role" {
name = "s3-replication-role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Principal = {
Service = "s3.amazonaws.com"
}
}
]
})
}
resource "aws_iam_policy" "replication_policy" {
name = "s3-replication-policy"
description = "Allows S3 to replicate objects"
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"s3:GetObject",
"s3:ListBucket",
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags"
]
Effect = "Allow"
Resource = [
"arn:aws:s3:::my-source-bucket-example/*",
"arn:aws:s3:::my-source-bucket-example"
]
},
{
Action = "s3:PutObject"
Effect = "Allow"
Resource = "arn:aws:s3:::my-destination-bucket-example/*"
}
]
})
}
resource "aws_iam_role_policy_attachment" "replication_role_attachment" {
role = aws_iam_role.replication_role.name
policy_arn = aws_iam_policy.replication_policy.arn
}
3단계: S3 복제 구성
소스와 대상 버킷을 연결하기 위해 복제 구성을 설정합니다.
resource "aws_s3_bucket_replication_configuration" "replication_config" {
bucket = aws_s3_bucket.source_bucket.id
role = aws_iam_role.replication_role.arn
rule {
id = "ReplicationRule1"
status = "Enabled"
filter {
prefix = ""
}
destination {
bucket = aws_s3_bucket.destination_bucket.arn
storage_class = "STANDARD"
}
}
}
4단계: 구성 초기화 및 적용
이 명령을 사용하여 Terraform 구성을 실행하십시오:
terraform init
terraform apply
terraform apply
를 실행하는 동안 계획을 검토하고 실행을 확인하십시오.
CRR 설정을 테스트하는 방법
원본 버킷에 객체를 생성하고 해당 객체가 대상 버킷에 복제되는지 확인하십시오.
# Put a file in the source bucket
aws s3 cp test-file.txt s3://my-source-bucket-example/
# Check if file is there in the destination bucket
aws s3 ls s3://my-destination-bucket-example/
교차 리전 복제의 장점
- 재해 복구. 데이터를 여러 지리적 지역에 걸쳐 미러링하여 보호합니다.
- 컴플라이언스. 데이터 위치 및 백업에 대한 규제 요구 사항을 준수합니다.
- 성능 향상. 데이터를 사용자에게 더 가까운 곳에 저장함으로써 대기 시간을 줄입니다.
- 백업 자동화. 추가 도구나 스크립트 없이 백업 및 아카이브를 관리합니다.
문제 해결 팁
- 권한 오류. IAM 역할이 원본 및 대상 버킷에 올바른 권한을 가지고 있는지 확인합니다.
- 버전 관리가 활성화되지 않음. 원본 및 대상 버킷 모두에서 버전 관리가 활성화되어 있는지 확인합니다.
- 복제 지연. 복제는 최종적으로 일치합니다. CloudWatch를 사용하여 복제를 모니터링합니다.
결론
Amazon S3의 교차 리전 복제는 적절한 데이터 중복 및 규정 준수를 달성하기 위한 매우 강력한 기능입니다. Terraform을 사용하면 인프라 설정이 일관되고 확장 가능한 상태로 유지되도록 구현 프로세스를 자동화하고 간소화할 수 있습니다.
이 튜토리얼에서는 버킷 구성부터 복제 규칙 정의까지 Terraform을 사용하여 CRR을 구현하는 방법을 배웠습니다. 이 기사에서 설명된 방법을 기반으로하면 현대 기업 애플리케이션의 요구 사항을 처리하기 위해 최적의 저장 구조를 설계할 수 있습니다.
Source:
https://dzone.com/articles/amazon-s3-cross-region-replication-terraform