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 인스턴스를 생성합니다.

Back to Blog

관련 글

더 보기 »

Terraform 데이터 소스 (AWS)

Terraform 데이터 소스란 무엇인가요? 데이터 소스는 Terraform에서 기존 리소스를 읽기 전용으로 조회하는 기능입니다. 새로운 리소스를 생성하는 대신, Terraform은 ...

13일 차: Terraform 데이터 소스

Data Source 데이터 소스를 전화번호부와 같이 사용자 이름과 전화번호가 key‑value 쌍으로 API를 통해 접근되는 것으로 생각해 보세요. 값을 hard‑coding 하는 대신…