Amazon S3 Tables는 Apache Iceberg 형식 테이블을 완전관리형으로 제공하는 서비스입니다. 2025년 12월 기준, S3 Tables는 Apache Iceberg 테이블을 리전/계정을 넘나드는 자동 복제 기능을 공식 지원합니다. 이를 활용하면 복제본을 별도로 구축할 필요 없이 멀티 리전·멀티 계정 간 데이터 동기화를 자동화할 수 있습니다.
사전 준비
복제 기능을 설정하기 위해 다음 사전 요구사항을 충족해야 합니다.
- AWS CLI가 설치 및 구성되어 있어야 합니다.
- 복제할 원본 및 대상 S3 Tables 테이블 버킷(table bucket)이 준비되어 있어야 합니다.
- 복제 역할(Role) 및 권한이 있는 IAM 정책이 준비되어 있어야 합니다.
- 대상 리전/계정에 대한 권한이 있어야 합니다.
1. 테이블 버킷 생성
먼저 원본과 대상에 각각 S3 Tables 테이블 버킷을 생성합니다. 테이블 버킷은 Iceberg 테이블을 저장하는 S3 Bucket의 특수한 형태이며, 표 형식 데이터를 저장하도록 최적화되어 있습니다.
# 예시: 원본 테이블 버킷 생성
aws s3api create-bucket \
--bucket my-source-table-bucket \
--region ap-northeast-2
# 예시: 대상 테이블 버킷 생성
aws s3api create-bucket \
--bucket my-dest-table-bucket \
--region ap-northeast-2
테이블 버킷 생성 후에는 Iceberg 테이블을 생성하고 데이터를 삽입하여 검증합니다.
참고: Iceberg 테이블 생성 및 데이터 삽입은 Spark, Athena 등 Iceberg 호환 쿼리 엔진으로 가능합니다.
2. IAM 역할 및 권한 설정
복제 기능은 내부적으로 AWS 서비스가 테이블 버킷 접근 권한을 필요로 합니다. 따라서 복제를 수행할 IAM Role을 준비하고 필요한 권한을 구성해야 합니다.
필수 권한 예시
- s3:*
- s3tables:*
- kms:DescribeKey, kms:GenerateDataKey, kms:Decrypt
아래는 복제 역할 예시 IAM 정책입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*",
"s3tables:*",
"kms:DescribeKey",
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "*"
}
]
}
3. 복제 구성
IAM 역할 구성을 완료했으면, AWS S3 Tables 복제 기능을 구성합니다. AWS CLI 명령을 통해 원본 테이블 ARN을 지정하고 대상 테이블 버킷을 복제 대상으로 설정합니다.
aws s3tables-replication put-table-replication \
--table-arn arn:aws:s3tables:ap-northeast-2:123456789012:bucket/my-source-table-bucket/table/<TABLE_ID> \
--configuration '{
"role": "arn:aws:iam::123456789012:role/S3TableReplicationRole",
"rules": [
{
"destinations": [
{
"destinationTableBucketARN": "arn:aws:s3tables:ap-northeast-2:123456789012:bucket/my-dest-table-bucket"
}
]
}
]
}'
- table-arn: 복제할 원본 테이블의 ARN입니다.
- role: 복제 역할(Role) ARN입니다.
- destinationTableBucketARN: 복제 대상 테이블 버킷 ARN입니다.
명령 수행 후 복제가 자동으로 시작됩니다. 일반적으로 몇 분 이내로 복제가 진행되며, 작업 완료까지 소요 시간은 데이터 양에 따라 달라집니다.
4. 복제 상태 확인
복제 설정 후에는 CLI를 통해 replication status를 확인할 수 있습니다.
aws s3tables-replication get-table-replication-status \
--table-arn arn:aws:s3tables:ap-northeast-2:123456789012:bucket/my-source-table-bucket/table/<TABLE_ID>
상태가 ready로 표시되면 복제가 정상적으로 완료된 상태입니다.
5. 복제 완료 후 쿼리 검증
복제가 완료된 후에는 대상 테이블 버킷에 있는 Replica 테이블을 쿼리하여 데이터가 동기화 되었는지 확인합니다.
Iceberg 호환 SQL 엔진(Athena, Redshift, Spark, DuckDB 등)을 사용하여 대상 테이블을 쿼리할 수 있습니다.
SELECT *
FROM iceberg_catalog.dest_table_schema.dest_table
LIMIT 10;
6. 추가 구성 옵션
스냅샷 유지 정책
Replica 테이블은 원본과 독립적으로 스냅샷 유지 정책(snapshot retention)을 구성할 수 있습니다. 이를 통해 유지 기간을 다르게 설정하는 등 복제 환경에 맞는 정책을 적용할 수 있습니다.
암호화
복제 대상 테이블은 별도의 KMS 키를 사용할 수 있습니다. 이는 보안 및 컴플라이언스 요구사항을 충족하는 데 도움이 됩니다.
고려 사항
- 복제는 S3 Tables 저장 및 요청 비용이 발생합니다.
- 리전 간 복제 시 인터리전 데이터 전송 비용이 발생합니다. 요금은 Amazon S3 요금 페이지를 참고하시기 바랍니다.
'AWS' 카테고리의 다른 글
| [AWS] Quick Research 서드파티 데이터 통합 구성 방법 (0) | 2025.12.28 |
|---|---|
| [AWS] Amazon EMR Spark 업그레이드 (0) | 2025.12.28 |
| [AWS] Glue Zero-ETL 기반 Self-Managed Database 구성 방법 (0) | 2025.12.27 |
| [AWS] AWS Backup으로 Amazon EKS 클러스터 백업하기 (0) | 2025.12.27 |
| [AWS] ECS 롤링 배포 서비스 가용성 향상 방법 (0) | 2025.12.24 |