replica에 대한 오해
replica 블록은 테라폼 자체에서 제공하는 것이 아닌, aws_dynamodb_table 리소스에서 dynamodb_table 복제본을 쉽게 만들기 위해 제공는 리소스 옵션 중 하나.
# main.tf
resource "aws_dynamodb_table" "my_table" {
name = "my_table"
hash_key = "key"
attribute {
name = "key"
type = "S"
}
replica {
region_name = "eu-west-2"
}
replica {
region_name = "us-east-1"
}
}
replica로 생성된 dynamodb_table 리소스들에서 특정 dynamodb_table 리소스를 참조하는 방법
위의 예시처럼 dynamodb_table replica 개별 리소스에 접근하려면, 각 region마다 provider를 생성, 각 provider에서 참조하는 방법을 사용할 수 있다.
provider "aws" {
alias = "eu"
region = "eu-west-2"
}
provider "aws" {
alias = "us"
region = "us-east-1"
}
data "aws_dynamodb_table" "eu_table" {
provider = aws.eu
name = aws_dynamodb_table.my_table.name
}
data "aws_dynamodb_table" "us_table" {
provider = aws.us
name = aws_dynamodb_table.my_table.name
}
output "eu_table_arn" {
value = data.aws_dynamodb_table.eu_table.arn
}
output "us_table_arn" {
value = data.aws_dynamodb_table.us_table.arn
}
- provider 이용해서 각 리전에 접근할 수 있도록 설정
- data.aws_dynamodb_table 사용해서 각 리전에서 복제된 테이블 정보를 가져옴
- output 이용하여 복제된 테이블의 ARN을 확인할 수 있음
+ replica 블록에서 사용 가능한 속성
- kms_key_arn : (선택 사항, 새 리소스 강제 적용) AWS KMS 암호화에 사용해야 하는 CMK의 ARN입니다. 이 인수는 키가 기본 KMS 관리 DynamoDB 키인 alias/aws/dynamodb와 다른 경우에만 사용해야 합니다. 참고: 이 속성은 기본 키의 ARN으로 채워지지 않습니다.
- point_in_time_recovery : (선택 사항) 복제본에 대해 특정 시점 복구를 활성화할지 여부입니다. 기본값은 false입니다.
- propagate_tags : (선택 사항) 글로벌 테이블의 태그를 복제본으로 전파할지 여부입니다. 기본값은 false입니다. 태그에 대한 변경 사항은 글로벌(소스)에서 복제본으로 한 방향으로만 이동합니다. 즉, 복제본의 태그 드리프트는 업데이트를 트리거하지 않습니다. 글로벌 테이블의 태그 또는 레플리카 변경 사항은 드리프트 또는 구성 변경에 관계없이 레플리카로 전파됩니다. 후속 적용에서 참에서 거짓으로 변경하면 레플리카 태그가 삭제되지 않고 관리되지 않은 상태로 그대로 유지됩니다.
* 태그 드리프트 : 복제본에서 태그가 원본(global) 테이블의 태그와 일치하지 않게 되는 상황 - region_name : (필수) 복제본의 지역 이름입니다.
'IaC' 카테고리의 다른 글
테라폼 사용 권장사항 (0) | 2025.02.15 |
---|---|
테라폼 스터디 - 10주차 (0) | 2025.02.15 |
테라폼 스터디 9주차 - 자동화된 테스트 (0) | 2025.02.09 |
테라폼 스터디 8주차 - 테라폼 코드 테스트 (0) | 2025.02.01 |
테라폼 스터디 - 7주차 (프로덕션 수준의 인프라 구성) (0) | 2025.01.18 |