본문 바로가기

AWS

[AWS] Amazon S3 Tables 자동 복제(Replication) 설정 방법

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": "*"
    }
  ]
}
 
이 역할을 **원본 테이블 버킷에 대한 복제 역할(role)**로 사용하도록 구성합니다.

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 요금 페이지를 참고하시기 바랍니다.