Terraform을 사용한 AWS에서 VPC 피어링 시연을 위한 미니 프로젝트

발행: (2025년 12월 16일 오후 05:58 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

Nandan K

✅ VPC 피어링이란?

VPC 피어링은 두 개의 가상 사설 클라우드(VPC) 간의 네트워킹 연결로, 마치 동일한 네트워크에 있는 것처럼 사설 IP 통신을 가능하게 합니다.

VPC 피어링 다이어그램

아키텍처

아키텍처 다이어그램

✅ In this demo we create

✨ Networking

  1. Two VPCs – one in us‑east‑1 and one in us‑west‑2
  2. One public subnet in each VPC
  3. An Internet Gateway for each VPC (to allow internet access)
  4. Custom route tables with routes to the Internet and the peered VPC
  5. A cross‑region VPC peering connection between the two VPCs

✨ Compute Resources

  • One EC2 instance in each VPC

✨ Security Groups

  1. SSH access from anywhere (port 22)
  2. ICMP (ping) allowed from the peered VPC
  3. All TCP traffic allowed between the VPCs

Source:

💡 상세 구현 단계

📌 Step 1 – 사전 요구 사항

  • AWS CLI 설치
  • Terraform 설치
  • aws configure 로 AWS 자격 증명 설정

📌 Step 2 – 각 리전에서 SSH 키 페어 생성

# us-east-1
aws ec2 create-key-pair \
  --key-name vpc-peering-demo-east \
  --region us-east-1 \
  --query 'KeyMaterial' \
  --output text > vpc-peering-demo-east.pem

# us-west-2
aws ec2 create-key-pair \
  --key-name vpc-peering-demo-west \
  --region us-west-2 \
  --query 'KeyMaterial' \
  --output text > vpc-peering-demo-west.pem

✅ Main.tf 파일

(전체 main.tf는 간결성을 위해 생략되었습니다; 제공자, VPC, 서브넷, IGW, 라우팅 테이블, 피어링, EC2 인스턴스 및 보안 그룹을 정의합니다.)

📌 Step 3 – 기본 및 보조 VPC 프로비저닝

VPC provisioning

📌 Step 4 – 퍼블릭 서브넷 생성

Public subnets

📌 Step 5 – 인터넷 게이트웨이 연결

Internet Gateways

📌 Step 6 – 커스텀 라우팅 테이블 생성

Route tables – part 1

Route tables – part 2

📌 Step 7 – VPC 피어링 연결 생성

VPC peering connection

(추가 단계 – 라우팅 테이블 업데이트, 보안 그룹 규칙, EC2 인스턴스 프로비저닝 – 은 동일한 패턴을 따르며 전체 Terraform 구성에 포함됩니다.)

결과:
두 VPC가 리전 간에 피어링되어 EC2 인스턴스가 각각의 인터넷 게이트웨이를 통해 인터넷에 접근하면서도 프라이빗 IP 주소를 사용해 안전하게 통신할 수 있게 됩니다. 이 설정은 AWS에서 크로스‑리전 네트워킹을 Terraform으로 깔끔하게 구현한 예시입니다.

📌 Step 8 – 라우트 추가

양쪽 VPC 라우팅 테이블에 피어 VPC CIDR 로 향하는 트래픽을 피어링 연결을 통해 전달하도록 라우트를 추가했습니다. 이를 통해 프라이빗 IP 주소를 이용한 양방향 통신이 가능해집니다.

VPC route tables configuration

동일한 라우팅 구성을 보조 VPC에서도 기본 VPC로 적용해야 합니다.

📌 Step 9 – 보안 그룹

각 VPC에 보안 그룹을 정의하여 관리용 SSH 접근을 허용했습니다. VPC CIDR 범위 간에 ICMP 및 TCP 트래픽을 허용해 연결성을 검증했습니다.

이미지설명
Security group – inbound rulesSSH, ICMP, TCP 규칙
Security group – outbound rules동일하게 아웃바운드 규칙

보조 VPC에도 동일한 보안 그룹 구성을 적용해야 합니다.

📌 Step 10 – EC2 인스턴스 시작

각 서브넷에서 지역에 맞는 AMI와 키 페어를 사용하여 EC2 인스턴스를 시작했습니다.

EC2 인스턴스 시작 화면

보조 VPC에 대해서도 인스턴스 생성 단계를 반복합니다.

📌 data_source.tf

data_source.tf 내용

보조 VPC용으로 동일한 data_source.tf 파일을 생성합니다.

📌 locals.tf

locals.tf 내용

📌 variables.tf

variables.tf 내용

📌 Outputs

OutputScreenshot
Primary VPC 출력outputs 1
Secondary VPC 출력outputs 2
Additional outputsoutputs 3

추가 리소스

DevOps #Terraform #AWS

Piyush Sachdeva와 The CloudOps Community에 감사드립니다

Back to Blog

관련 글

더 보기 »

13일 차: Terraform 데이터 소스

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