Day-13: Terraform의 데이터 소스
발행: (2025년 12월 8일 오전 03:43 GMT+9)
2 min read
원문: Dev.to
Source: Dev.to
데이터 소스란?
데이터 소스를 사용하면 기존 VPC, 서브넷, AMI, 보안 그룹 등에 대한 정보를 가져올 수 있습니다.
data "data_source_type" "data_source_name" {
# Configuration arguments
}
필터
filter {
name = "filter_name"
values = ["value1", "value2"]
}
데이터 소스로 AMI ID와 서브넷 ID를 가져와 EC2 인스턴스 생성하기
// main.tf
# 최신 Ubuntu AMI 가져오기
data "aws_ami" "ubuntu" {
most_recent = true
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
}
owners = ["amazon"] # Canonical
}
# Name 태그로 기존 VPC 가져오기
data "aws_vpc" "selected" {
filter {
name = "tag:Name"
values = ["shared-primary-vpc"]
}
}
# 선택한 VPC 내에서 Name 태그로 기존 서브넷 가져오기
data "aws_subnet" "selected" {
filter {
name = "tag:Name"
values = ["shared-primary-subnet"]
}
vpc_id = data.aws_vpc.selected.id
}
# 가져온 AMI와 서브넷을 사용해 EC2 인스턴스 생성
resource "aws_instance" "example" {
ami = data.aws_ami.ubuntu.id
instance_type = "t2.micro"
subnet_id = data.aws_subnet.selected.id
tags = {
Name = "day-13-instance"
}
}
출력
// outputs.tf
output "instance_id" {
value = aws_instance.example.id
}
output "instance_public_ip" {
value = aws_instance.example.public_ip
}
Terraform 구성은 데이터 소스를 사용해 최신 Ubuntu AMI와 기존 서브넷 정보를 가져와 EC2 인스턴스를 생성합니다.