AWS Day 4 - 0115
AWS Day 4 - 0115
목차
- VPC Architecture
- VPC 생성 구성표
- EC2 생성
- AMI 생성
- Target Group & Load Balancer
- Auto Scaling
- Installation Scripts
VPC Architecture
VPC 워크플로 생성 완료
| 리소스 타입 | 리소스 ID | 상태 |
|---|---|---|
| VPC | vpc-0217f2fbe39a25c1d | ✅ 생성 완료 |
| S3 Endpoint | vpce-05bd9d59a285fac92 | ✅ 생성 완료 |
| Internet Gateway | igw-0f775bf918c698150 | ✅ 연결 완료 |
| NAT Gateway | nat-0e81945c0b580713b | ✅ 활성화 완료 |
| Elastic IP | eipalloc-00da42b2f94366036 | ✅ 할당 완료 |
VPC 생성 구성표
1. VPC 기본 설정
| 항목 | 값 |
|---|---|
| VPC Name | pista-vpc |
| VPC ID | vpc-0217f2fbe39a25c1d |
| IPv4 CIDR | 10.0.0.0/16 |
| DNS 호스트 이름 | 활성화 |
| DNS 확인 | 활성화 |
2. 서브넷 구성
퍼블릭 서브넷 (Public Subnets)
| 서브넷 ID | 서브넷 이름 | 가용 영역 | CIDR 블록 |
|---|---|---|---|
| subnet-06df70d34d815a011 | pista-subnet-public1-ap-south-1a | ap-south-1a | 10.0.0.0/20 |
| subnet-04a5e97911d5f9893 | pista-subnet-public2-ap-south-1b | ap-south-1b | 10.0.16.0/20 |
프라이빗 서브넷 (Private Subnets)
| 서브넷 ID | 서브넷 이름 | 가용 영역 | CIDR 블록 |
|---|---|---|---|
| subnet-06957dbccecbf67d5 | pista-subnet-private1-ap-south-1a | ap-south-1a | 10.0.128.0/20 |
| subnet-014c426d2ed520633 | pista-subnet-private2-ap-south-1b | ap-south-1b | 10.0.144.0/20 |
3. 인터넷 게이트웨이 (Internet Gateway)
| 항목 | 값 |
|---|---|
| IGW ID | igw-0f775bf918c698150 |
| 연결 대상 | pista-vpc (vpc-0217f2fbe39a25c1d) |
4. 라우팅 테이블 (Route Tables)
| 라우팅 테이블 ID | 연결된 서브넷 | 용도 |
|---|---|---|
| rtb-0787b468e025d9a56 | Public 서브넷 | 인터넷 연결 |
| rtb-0ad303e664c907446 | Private 서브넷 | NAT Gateway 연결 |
| rtb-0abcd9fc52cdc8641 | Private 서브넷 | NAT Gateway 연결 |
5. NAT Gateway
| 항목 | 값 |
|---|---|
| NAT Gateway ID | nat-0e81945c0b580713b |
| Elastic IP | eipalloc-00da42b2f94366036 |
| 상태 | 활성화 |
6. VPC Endpoints
| 항목 | 값 |
|---|---|
| Endpoint ID | vpce-05bd9d59a285fac92 |
| 서비스 | S3 |
| 연결된 라우팅 테이블 | Private 서브넷 라우팅 테이블 |
7. 리소스 요약
| 리소스 타입 | 개수 | 비고 |
|---|---|---|
| VPC | 1 | 10.0.0.0/16 |
| 퍼블릭 서브넷 | 2 | Multi-AZ (ap-south-1a, ap-south-1b) |
| 프라이빗 서브넷 | 2 | Multi-AZ (ap-south-1a, ap-south-1b) |
| Internet Gateway | 1 | VPC 당 1개 |
| NAT Gateway | 1 | Public 서브넷 배치 |
| 라우팅 테이블 | 3 | Public 1개, Private 2개 |
| S3 VPC Endpoint | 1 | Gateway 타입 |
EC2 생성
아키텍처 개요
┌─────────────────────────────────────────────────┐
│ pista-vpc (10.0.0.0/16) │
│ vpc-0217f2fbe39a25c1d │
└─────────────────────────────────────────────────┘
│
┌────────────────────────┴────────────────────────┐
│ Internet Gateway (igw-xxx) │
└────────────────────────┬────────────────────────┘
│
┌───────────────────────────────────────┴───────────────────────────────────────┐
│ │
┌───────────┴───────────┐ ┌─────────────┴───────────┐
│ ap-south-1a (AZ-A) │ │ ap-south-1b (AZ-B) │
├───────────────────────┤ ├─────────────────────────┤
│ ┌───────────────────┐ │ │ ┌─────────────────────┐ │
│ │ Public Subnet 1 │ │ │ │ Public Subnet 2 │ │
│ │ 10.0.0.0/20 │ │ │ │ 10.0.16.0/20 │ │
│ │ subnet-06df70... │ │ │ │ subnet-04a5e... │ │
│ │ │ │ │ │ │ │
│ │ ┌───────────────┐ │ │ │ │ ┌─────────────────┐ │ │
│ │ │pista-ec2-pub1 │ │ │ │ │ │ pista-ec2-pub2 │ │ │
│ │ │13.233.184.126 │ │ │ │ │ │ 3.109.203.118 │ │ │
│ │ │(Nginx+AMI) │ │ │ │ │ │ (Nginx+AMI) │ │ │
│ │ └───────────────┘ │ │ │ │ └─────────────────┘ │ │
│ │ ┌───────────────┐ │ │ │ │ │ │
│ │ │ NAT Gateway │ │ │ │ │ │ │
│ │ └───────────────┘ │ │ │ │ │ │
│ └───────────────────┘ │ │ └─────────────────────┘ │
│ ┌───────────────────┐ │ │ ┌─────────────────────┐ │
│ │ Private Subnet 1 │ │ │ │ Private Subnet 2 │ │
│ │ 10.0.128.0/20 │ │ │ │ 10.0.144.0/20 │ │
│ └───────────────────┘ │ │ └─────────────────────┘ │
└───────────────────────┘ └─────────────────────────┘
EC2 인스턴스 구성표
Public EC2 (Multi-AZ)
| 항목 | pista-ec2-public1 | pista-ec2-public2 |
|---|---|---|
| Instance ID | i-04faedf4be101aa90 | i-0b74975cc11789343 |
| AMI ID | ami-02b8269d5e85954ef (Ubuntu 24.04) | ami-07f154542028f106a (pista-nginx-ami) |
| Instance Type | t3.micro | t3.micro |
| 가용 영역 | ap-south-1a | ap-south-1b |
| 서브넷 | pista-subnet-public1-ap-south-1a | pista-subnet-public2-ap-south-1b |
| 퍼블릭 IPv4 | 13.233.184.126 | 3.109.203.118 |
| 퍼블릭 DNS | ec2-13-233-184-126.ap-south-1.compute.amazonaws.com | ec2-3-109-203-118.ap-south-1.compute.amazonaws.com |
| 프라이빗 IPv4 | 10.0.7.232 | 10.0.25.36 |
| 보안 그룹 | pista-sb-public1 | pista-sb-public1 |
| Key Pair | pista-key | pista-key |
| 상태 | 실행 중 ✅ | 실행 중 ✅ |
| 시작 시간 | 2026/01/15 09:59 GMT+9 | 2026/01/15 10:20 GMT+9 |
| 역할 | Web Server (Nginx) | Web Server (Nginx) |
Private EC2 (Multi-AZ)
| 항목 | pista-ec2-private1 | pista-ec2-private2 |
|---|---|---|
| Instance ID | i-019fe787e872c272b | i-08a0966b733f511e9 |
| AMI ID | ami-07f154542028f106a (pista-nginx-ami) | ami-07f154542028f106a (pista-nginx-ami) |
| Instance Type | t3.micro | t3.micro |
| 가용 영역 | ap-south-1a | ap-south-1b |
| 서브넷 | pista-subnet-private1-ap-south-1a | pista-subnet-private2-ap-south-1b |
| 프라이빗 IPv4 | 10.0.139.129 | 10.0.147.168 |
| 보안 그룹 | pista-sg-private | pista-sg-private |
| Key Pair | pista-key | pista-key |
| 상태 | 실행 중 ✅ | 실행 중 ✅ |
| 시작 시간 | 2026/01/15 10:58 GMT+9 | 2026/01/15 11:19 GMT+9 |
인스턴스 세부 정보
| 항목 | 값 |
|---|---|
| 테넌시 | default |
| 가상화 유형 | hvm |
| 크레딧 사양 | unlimited |
| 부트 모드 | uefi-preferred (uefi) |
| IMDSv2 | Required |
| 종료 방지 | 비활성 |
| 중지 방지 | 비활성 |
| Enclaves Support | 비활성 |
AMI 생성
AMI 구성표
| 항목 | 값 |
|---|---|
| Name | pista-nginx-ami |
| AMI ID | ami-07f154542028f106a |
| 원본 AMI | ami-02b8269d5e85954ef |
| 원본 리전 | ap-south-1 |
| 소유자 계정 | 824065647982 |
| 상태 | 사용 가능 |
| 생성 날짜 | 2026/01/15 10:10 GMT+9 |
| 아키텍처 | x86_64 |
| 플랫폼 | Linux/UNIX |
| 가상화 유형 | hvm |
| 루트 디바이스 유형 | EBS |
| 부트 모드 | uefi-preferred |
| 설명 | ubuntu-nginx-image |
| 표시 여부 | 프라이빗 |
| 등록 취소 보호 | Disabled |
블록 디바이스 매핑
| 디바이스 | 스냅샷/유형 | 크기 |
|---|---|---|
| /dev/sda1 | snap-0133ed5b677defaa0 (gp3) | 10 GB |
| /dev/sdb | ephemeral0 | - |
| /dev/sdc | ephemeral1 | - |
Target Group & Load Balancer
아키텍처 개요
┌─────────────────────────┐
│ Internet │
└───────────┬─────────────┘
│
┌───────────┴─────────────┐
│ pista-alb-web1 │
│ (Application LB) │
│ HTTP:80 → pista-nginx │
└───────────┬─────────────┘
│
┌───────────┴─────────────┐
│ Target Group │
│ (pista-nginx) │
│ Port: 80 │
└───────────┬─────────────┘
│
┌───────────────────┴───────────────────┐
│ │
┌───────────┴───────────┐ ┌─────────────┴───────────┐
│ pista-ec2-public1 │ │ pista-ec2-public2 │
│ ap-south-1a │ │ ap-south-1b │
│ 10.0.7.232:80 │ │ 10.0.25.36:80 │
└───────────────────────┘ └─────────────────────────┘
Application Load Balancer 구성표
기본 구성
| 항목 | 값 |
|---|---|
| Name | pista-alb-web1 |
| Type | Application Load Balancer |
| 상태 | ✅ 활성 |
| 체계 (Scheme) | Internet-facing |
| IP 주소 유형 | IPv4 |
| VPC | pista-vpc (vpc-0217f2fbe39a25c1d) |
| 호스팅 영역 | ZP97RAFLXTNZK |
| DNS 이름 | pista-alb-web1-906245508.ap-south-1.elb.amazonaws.com |
| ARN | arn:aws:elasticloadbalancing:ap-south-1:824065647982:loadbalancer/app/pista-alb-web1/effd8a4890ae6334 |
| 생성 날짜 | 2026/01/15 10:40 GMT+9 |
네트워크 매핑
| 가용 영역 | 서브넷 ID | 서브넷 이름 | CIDR 블록 |
|---|---|---|---|
| ap-south-1a | subnet-06df70d34d815a011 | pista-subnet-public1-ap-south-1a | 10.0.0.0/20 |
| ap-south-1b | subnet-04a5e97911d5f9893 | pista-subnet-public2-ap-south-1b | 10.0.16.0/20 |
보안 그룹
| 보안 그룹 이름 | 보안 그룹 ID | VPC |
|---|---|---|
| default | sg-0bbb85f3798dd9fc0 | vpc-0217f2fbe39a25c1d |
리스너 및 라우팅
| 프로토콜 | 포트 | 기본 작업 | 대상 그룹 |
|---|---|---|---|
| HTTP | 80 | 대상 그룹으로 전달 | pista-nginx (가중치: 1, 100%) |
Target Group 구성표 (pista-nginx)
| 항목 | 값 |
|---|---|
| Name | pista-nginx |
| Target Type | Instances |
| Protocol | HTTP |
| Port | 80 |
| VPC | pista-vpc (vpc-0217f2fbe39a25c1d) |
| Health Check Protocol | HTTP |
| Health Check Path | / |
| 대상 고정성 | 끔 |
등록된 대상 (Registered Targets)
| 인스턴스 ID | 이름 | 포트 | 가용 영역 | 프라이빗 IPv4 | 서브넷 ID | Health |
|---|---|---|---|---|---|---|
| i-04faedf4be101aa90 | pista-ec2-public1 | 80 | ap-south-1a | 10.0.7.232 | subnet-06df70d34d815a011 | ✅ healthy |
| i-0b74975cc11789343 | pista-ec2-public2 | 80 | ap-south-1b | 10.0.25.36 | subnet-04a5e97911d5f9893 | ✅ healthy |
💡 Multi-AZ 구성: 두 가용 영역(ap-south-1a, ap-south-1b)에 분산 배치하여 고가용성 확보
🌐 접속 URL: http://pista-alb-web1-906245508.ap-south-1.elb.amazonaws.com
Internal ALB 구성표 (pista-alb-web2)
기본 구성
| 항목 | 값 |
|---|---|
| Name | pista-alb-web2 |
| Type | Application Load Balancer |
| 상태 | ✅ 활성 |
| 체계 (Scheme) | Internal |
| IP 주소 유형 | IPv4 |
| VPC | pista-vpc (vpc-0217f2fbe39a25c1d) |
| 호스팅 영역 | ZP97RAFLXTNZK |
| DNS 이름 | internal-pista-alb-web2-467231669.ap-south-1.elb.amazonaws.com |
| ARN | arn:aws:elasticloadbalancing:ap-south-1:824065647982:loadbalancer/app/pista-alb-web2/9b76fd11712a1d05 |
| 생성 날짜 | 2026/01/15 11:05 GMT+9 |
네트워크 매핑 (Private Subnets)
| 가용 영역 | 서브넷 ID | 서브넷 이름 | CIDR 블록 |
|---|---|---|---|
| ap-south-1a | subnet-06957dbccecbf67d5 | pista-subnet-private1-ap-south-1a | 10.0.128.0/20 |
| ap-south-1b | subnet-014c426d2ed520633 | pista-subnet-private2-ap-south-1b | 10.0.144.0/20 |
보안 그룹
| 보안 그룹 이름 | 보안 그룹 ID |
|---|---|
| pista-sg-private | sg-0d2a23ba2827e1eff |
리스너 및 라우팅
| 프로토콜 | 포트 | 기본 작업 | 대상 그룹 |
|---|---|---|---|
| HTTP | 80 | 대상 그룹으로 전달 | pista-tg-private (100%) |
Target Group 구성표 (pista-tg-private)
| 항목 | 값 |
|---|---|
| Name | pista-tg-private |
| ARN | arn:aws:elasticloadbalancing:ap-south-1:824065647982:targetgroup/pista-tg-private/220b225dcf1aab2d |
| Target Type | Instances |
| Protocol | HTTP |
| Port | 80 |
| VPC | pista-vpc (vpc-0217f2fbe39a25c1d) |
등록된 대상 (Private)
| 인스턴스 ID | 이름 | 포트 | 가용 영역 | 프라이빗 IPv4 | Health |
|---|---|---|---|---|---|
| i-019fe787e872c272b | pista-ec2-private1 | 80 | ap-south-1a | 10.0.139.129 | ⏳ 초기화 |
💡 Internal ALB: VPC 내부에서만 접근 가능. Public EC2에서 Private EC2로 트래픽 라우팅 시 사용
Auto Scaling
아키텍처 개요
┌─────────────────────────────────────┐
│ Internet │
└──────────────────┬──────────────────┘
│
┌──────────────────┴──────────────────┐
│ pista-alb-web3 (ALB) │
│ Internet-facing, HTTP:80 │
└──────────────────┬──────────────────┘
│
┌──────────────────┴──────────────────┐
│ Target Group: pista-alb-web3 │
└──────────────────┬──────────────────┘
│
┌──────────────────────────────────┴──────────────────────────────────┐
│ Auto Scaling Group: pista-as-1 │
│ (원하는: 1, 최소: 1, 최대: 3) │
├─────────────────────────────────┬───────────────────────────────────┤
│ ap-south-1a │ ap-south-1b │
├─────────────────────────────────┼───────────────────────────────────┤
│ ┌─────────────────────────┐ │ ┌─────────────────────────┐ │
│ │ Public Subnet 1 │ │ │ Public Subnet 2 │ │
│ │ 10.0.0.0/20 │ │ │ 10.0.16.0/20 │ │
│ │ ┌───────────────────┐ │ │ │ ┌───────────────────┐ │ │
│ │ │ EC2 (Auto Scale) │ │ │ │ │ EC2 (Auto Scale) │ │ │
│ │ └───────────────────┘ │ │ │ └───────────────────┘ │ │
│ └─────────────────────────┘ │ └─────────────────────────┘ │
│ ┌─────────────────────────┐ │ ┌─────────────────────────┐ │
│ │ Private Subnet 1 │ │ │ Private Subnet 2 │ │
│ │ 10.0.128.0/20 │ │ │ 10.0.144.0/20 │ │
│ │ ┌───────────────────┐ │ │ │ ┌───────────────────┐ │ │
│ │ │ EC2 (Auto Scale) │ │ │ │ │ EC2 (Auto Scale) │ │ │
│ │ └───────────────────┘ │ │ │ └───────────────────┘ │ │
│ └─────────────────────────┘ │ └─────────────────────────┘ │
└─────────────────────────────────┴───────────────────────────────────┘
│
┌──────────────────┴──────────────────┐
│ Launch Template: pista-template-web1 │
│ AMI: Ubuntu 24.04 + Nginx │
└─────────────────────────────────────────┘
Launch Template 구성표
| 항목 | 값 |
|---|---|
| Template Name | pista-template-web1 |
| Template ID | lt-0faea3501f9d01252 |
| Version | 1 (기본값) |
| 설명 | web server template |
| 생성 날짜 | 2026/01/15 11:55 GMT+9 |
| 소유자 | pyh5523@gmail.com |
인스턴스 세부 정보
| 항목 | 값 |
|---|---|
| AMI ID | ami-02b8269d5e85954ef (Ubuntu 24.04) |
| Instance Type | t2.micro |
| Key Pair | pista-key |
| 서브넷 | pista-subnet-public1-ap-south-1a (subnet-06df70d34d815a011) |
| Security Group | pista-sb-public1 (sg-07c24c47b85248aad) |
스토리지
| 디바이스 | 스냅샷 | 크기 | 볼륨 타입 | 종료 시 삭제 |
|---|---|---|---|---|
| /dev/sda1 | snap-02aec5d73c95cb35b | 10 GB | gp3 | 예 |
User Data
#!/bin/bash
sudo apt-get update && sudo apt-get -y install nginx vim
sudo systemctl enable nginx
sudo systemctl restart nginx
HOSTNAME=$(hostname)
IP=$(hostname -I | awk '{print $1}')
sudo tee /var/www/html/index.html << 'EOF'
<!DOCTYPE html>
<html lang="ko">
...
</html>
EOF
sudo sed -i "s/HOSTNAME_PLACEHOLDER/$HOSTNAME/" /var/www/html/index.html
sudo sed -i "s/IP_PLACEHOLDER/$IP/" /var/www/html/index.html
echo "charset utf-8;" | sudo tee /etc/nginx/conf.d/charset.conf
sudo systemctl restart nginx
💡 User Data: 인스턴스 시작 시 Nginx 설치 및 Hostname/IP 표시 페이지 자동 생성
Auto Scaling Group 구성표
| 항목 | 값 |
|---|---|
| ASG Name | pista-as-1 |
| Launch Template | pista-template-web1 (lt-0faea3501f9d01252) |
| Template Version | Default (1) |
| VPC | pista-vpc (vpc-0217f2fbe39a25c1d) |
| 가용 영역 배포 | 균형 잡힌 최선 노력 |
네트워크 구성 (Public 서브넷만)
| 가용 영역 | 서브넷 | CIDR |
|---|---|---|
| ap-south-1a | pista-subnet-public1-ap-south-1a | 10.0.0.0/20 |
| ap-south-1b | pista-subnet-public2-ap-south-1b | 10.0.16.0/20 |
💡 Public 서브넷만 사용: 웹 서버는 인터넷 연결이 필요하므로 Private 서브넷 제거
로드 밸런서 연결 (pista-alb-web3)
| 항목 | 값 |
|---|---|
| LB Name | pista-alb-web3 |
| LB Type | Application Load Balancer |
| 체계 | Internet-facing |
| VPC | pista-vpc |
| 서브넷 | public1 (ap-south-1a), public2 (ap-south-1b) |
| 리스너 | HTTP:80 |
| 대상 그룹 | pista-alb-web3 (신규 생성) |
상태 확인
| 상태 확인 유형 | 상태 |
|---|---|
| EC2 상태 확인 | ✅ 항상 활성화 |
| Elastic Load Balancer 상태 확인 | ✅ 활성화 (권장) |
| 상태 확인 유예 기간 | 15초 |
그룹 크기 및 크기 조정
| 항목 | 값 |
|---|---|
| 원하는 용량 | 1 |
| 최소 용량 | 1 |
| 최대 용량 | 3 |
| 크기 조정 정책 | 없음 (수동 조정) |
| 인스턴스 유지관리 정책 | 혼합 동작: 정책 없음 |
| 용량 예약 기본 설정 | 기본값 |
| 인스턴스 축소 보호 | 비활성화 |
Installation Scripts
Web Server (Nginx)
📄 web.sh - Nginx 웹 서버 설치 스크립트
Database Initialization
📄 init_database.sh - 데이터베이스 초기화 스크립트
FastAPI Installation
📄 install_fastapi.sh - FastAPI 설치 스크립트