Terraform을 사용한 AWS에서 VPC 피어링 시연을 위한 미니 프로젝트
Source: Dev.to
✅ VPC 피어링이란?
VPC 피어링은 두 개의 가상 사설 클라우드(VPC) 간의 네트워킹 연결로, 마치 동일한 네트워크에 있는 것처럼 사설 IP 통신을 가능하게 합니다.

아키텍처

✅ In this demo we create
✨ Networking
- Two VPCs – one in us‑east‑1 and one in us‑west‑2
- One public subnet in each VPC
- An Internet Gateway for each VPC (to allow internet access)
- Custom route tables with routes to the Internet and the peered VPC
- A cross‑region VPC peering connection between the two VPCs
✨ Compute Resources
- One EC2 instance in each VPC
✨ Security Groups
- SSH access from anywhere (port 22)
- ICMP (ping) allowed from the peered VPC
- 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 프로비저닝

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

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

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


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

(추가 단계 – 라우팅 테이블 업데이트, 보안 그룹 규칙, EC2 인스턴스 프로비저닝 – 은 동일한 패턴을 따르며 전체 Terraform 구성에 포함됩니다.)
결과:
두 VPC가 리전 간에 피어링되어 EC2 인스턴스가 각각의 인터넷 게이트웨이를 통해 인터넷에 접근하면서도 프라이빗 IP 주소를 사용해 안전하게 통신할 수 있게 됩니다. 이 설정은 AWS에서 크로스‑리전 네트워킹을 Terraform으로 깔끔하게 구현한 예시입니다.
📌 Step 8 – 라우트 추가
양쪽 VPC 라우팅 테이블에 피어 VPC CIDR 로 향하는 트래픽을 피어링 연결을 통해 전달하도록 라우트를 추가했습니다. 이를 통해 프라이빗 IP 주소를 이용한 양방향 통신이 가능해집니다.

동일한 라우팅 구성을 보조 VPC에서도 기본 VPC로 적용해야 합니다.
📌 Step 9 – 보안 그룹
각 VPC에 보안 그룹을 정의하여 관리용 SSH 접근을 허용했습니다. VPC CIDR 범위 간에 ICMP 및 TCP 트래픽을 허용해 연결성을 검증했습니다.
| 이미지 | 설명 |
|---|---|
![]() | SSH, ICMP, TCP 규칙 |
| 동일하게 아웃바운드 규칙 |
보조 VPC에도 동일한 보안 그룹 구성을 적용해야 합니다.
📌 Step 10 – EC2 인스턴스 시작
각 서브넷에서 지역에 맞는 AMI와 키 페어를 사용하여 EC2 인스턴스를 시작했습니다.

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

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

📌 variables.tf

📌 Outputs
| Output | Screenshot |
|---|---|
| Primary VPC 출력 | ![]() |
| Secondary VPC 출력 | ![]() |
| Additional outputs | ![]() |
추가 리소스
- YouTube 동영상: Terraform Full Course – AWS VPC Peering (Day 15)
- GitHub 저장소: Terraform‑Full‑Course‑Aws / lessons / day15
DevOps #Terraform #AWS
Piyush Sachdeva와 The CloudOps Community에 감사드립니다




