본문으로 건너뛰기
김신건의 로그

[AWS] EC2: 인스턴스 타입, AMI, EBS

· 수정 · 📖 약 3분 · 989자/단어 #aws #ec2 #compute #cloud
EC2, AWS EC2, AMI, EBS, instance type, Spot Instance, Reserved Instance, Savings Plans, Instance Profile, Placement Group

정의

EC2 (Elastic Compute Cloud) = AWS 의 VM 서비스. instance type (CPU / RAM / NW) 결정 + AMI (OS 이미지) + EBS (스토리지).

사용 상황

상황선택
웹 서버, 앱 서버m/c family On-Demand
비용 절감 (예측 가능 트래픽)Reserved / Savings Plans
배치, 비동기 처리, CISpot Instance
GPU 딥러닝 학습p/g family
고메모리 DB 인스턴스r/x family
로컬 NVMe 캐시 필요i family
컨테이너 worker nodem/c Graviton + Spot

인스턴스 타입 명명

m6i.large
│ │ │
│ │ └── size (nano, micro, small, medium, large, xlarge, 2xlarge, ...)
│ └──── generation modifier (i=Intel, a=AMD, g=Graviton ARM, n=network, ...)
└────── family (m=general, c=compute, r=memory, x=extreme memory, p=GPU, ...)
        세대 (6 = 6세대)
Family용도
tburstable (가벼운 워크로드)
mgeneral purpose
ccompute optimized
rmemory optimized
x/uhigh memory
istorage optimized (NVMe)
ddense HDD
p/g/inf/trnGPU / AI accelerator

Graviton (ARM) vs Intel/AMD

Intel (m7i)AMD (m7a)Graviton (m7g)
아키텍처x86-64x86-64ARM64
가격 (vs Intel)1.0x~0.9x~0.8x
성능 (workload)기준비슷비슷 또는 우수
호환성모든 OS모든 OSARM 빌드 필요

IMPORTANT

2026 시점 Graviton (ARM) 이 비용 효율 최강. 모든 새 워크로드는 ARM 호환 빌드부터.

Purchase Options

flowchart TB
    Q{사용 패턴}
    Q --> OD["On-Demand (기본 가격)"]
    Q --> Spot["Spot (최대 90% 할인, 중단 위험)"]
    Q --> Reserved["Reserved (1/3년 약정, 최대 72% 할인)"]
    Q --> SP["Savings Plans (약정 시간당 $, 유연)"]
옵션할인적합
On-Demand0%임시 / 테스트
Spot60-90%batch, stateless, K8s worker
Reserved Instances40-72%안정 워크로드
Savings Plans25-72%가장 유연
Dedicated Host비쌈컴플라이언스

Spot Instance

sequenceDiagram
    participant User
    participant AWS

    User->>AWS: Spot request
    AWS-->>User: "Spot instance (90% 할인)"
    Note over AWS: capacity 부족
    AWS->>User: 2분 중단 알림
    Note over User: graceful shutdown
    AWS->>User: instance reclaim

TIP

Karpenter / EKS managed node group 의 spot + on-demand 혼합이 2026 표준. 비용 60%+ 절감.

AMI (Amazon Machine Image)

aws ec2 describe-images --owners amazon --filters \
  "Name=name,Values=al2023-ami-*-x86_64" \
  "Name=state,Values=available"
옵션의미
Amazon Linux 2023AWS 최신
Ubuntu LTS가장 흔함
Bottlerocketcontainer 전용 (EKS)
Custom AMIPacker 로 빌드
MarketplaceRHEL, Windows, 3rd-party

User Data (부팅 스크립트)

#!/bin/bash
yum update -y
yum install -y nginx
systemctl enable --now nginx

EC2 부팅 시 1회 실행. cloud-init 기반.

Instance Metadata Service (IMDS)

TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" \
  -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
  http://169.254.169.254/latest/meta-data/instance-id

CAUTION

IMDSv2 (token 필수) 가 SSRF 공격 방어. IMDSv1 비활성 강력 권장.

EBS Volume 타입

타입용도최대 IOPS최대 처리량
gp3범용 SSD (기본 권장)16,0001,000 MB/s
gp2범용 SSD (구형)16,000250 MB/s
io2 Block Express고성능 DB256,0004,000 MB/s
io1고성능 (구형)64,0001,000 MB/s
st1순차 처리량 HDD500500 MB/s
sc1저비용 콜드 HDD250250 MB/s
# gp2 -> gp3 마이그레이션 (비용 20% 절감)
aws ec2 modify-volume \
  --volume-id vol-xxxx \
  --volume-type gp3 \
  --iops 3000 \
  --throughput 125

gp3 는 IOPS/처리량을 독립적으로 설정. gp2 의 IOPS 연동 방식보다 유연하고 저렴.

Security Group

EC2 인바운드/아웃바운드 트래픽 제어. Stateful (응답 자동 허용).

# Security Group 생성
aws ec2 create-security-group \
  --group-name web-sg \
  --description "Web Server SG" \
  --vpc-id vpc-xxxx

# 규칙 추가
aws ec2 authorize-security-group-ingress \
  --group-id sg-xxxx \
  --protocol tcp --port 443 --cidr 0.0.0.0/0

# SG 간 참조 (내부 통신)
aws ec2 authorize-security-group-ingress \
  --group-id sg-db \
  --protocol tcp --port 5432 \
  --source-group sg-app   # IP 아닌 SG 참조

SG 간 참조는 IP 변경에 강건. 앱 SG → DB SG 패턴 필수.

Systems Manager Session Manager

SSH 포트 없이 인스턴스 접속. IAM 기반 접근 제어.

# SSM으로 접속 (22 포트 불필요)
aws ssm start-session --target i-xxxx

# 포트 포워딩 (로컬 DB 접근)
aws ssm start-session \
  --target i-xxxx \
  --document-name AWS-StartPortForwardingSession \
  --parameters '{"portNumber":["5432"],"localPortNumber":["15432"]}'

필요 IAM 권한:

{
  "Action": [
    "ssm:StartSession",
    "ssm:TerminateSession",
    "ec2:DescribeInstances"
  ],
  "Resource": "arn:aws:ec2:*:*:instance/*"
}

TIP

배스천 호스트 제거 가능. CloudTrail + Session Manager 로그로 모든 접속 감사.

Placement Groups

타입특성사용
Cluster같은 AZ, 낮은 latencyHPC, 분산 캐시
Spread다른 하드웨어, HA소수의 중요 인스턴스
Partition파티션별 격리Hadoop, Kafka, Cassandra
aws ec2 create-placement-group \
  --group-name hpc-cluster \
  --strategy cluster

aws ec2 run-instances \
  --placement '{"GroupName":"hpc-cluster"}' \
  ...

CloudWatch 모니터링

기본 메트릭 (5분 간격, 무료):

메트릭의미
CPUUtilizationCPU 사용률
NetworkIn/Out네트워크 트래픽
DiskReadOps/WriteOps디스크 I/O
StatusCheckFailed인스턴스/시스템 장애

상세 메트릭 (1분 간격, 유료):

aws ec2 monitor-instances --instance-ids i-xxxx

메모리/디스크 사용률은 CloudWatch Agent 설치 필요:

# Agent 설치 (Amazon Linux)
sudo yum install -y amazon-cloudwatch-agent
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

Auto Recovery

하드웨어 장애 시 자동 재시작 (같은 EIP, 동일 인스턴스 ID).

aws cloudwatch put-metric-alarm \
  --alarm-name ec2-auto-recover \
  --namespace AWS/EC2 \
  --metric-name StatusCheckFailed_System \
  --statistic Maximum --period 60 --evaluation-periods 2 \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --threshold 1 \
  --alarm-actions arn:aws:automate:us-east-1:ec2:recover

흔한 함정

WARNING

  1. t family 의 CPU credit = burst 후 credit 소진baseline 으로 떨어짐 → 느려짐. unlimited 모드 또는 다른 family.
  2. Spot 의 갑작스런 중단 = stateful 워크로드 금지. checkpoint + retry.
  3. AMI 가 오래됨 = 보안 패치 없음. 정기 AMI rebake + AMI ID 자동화.
  4. EBS 만 보고 instance store 무시 = NVMe 의 극도로 빠른 임시 스토리지. 캐시 / shuffle 용.
  5. gp2 를 아직 사용 = gp3 가 20% 저렴하고 더 유연. 모든 gp2 를 gp3 로 마이그레이션 권장.
  6. SSH 22 포트 열어둠 = SSM Session Manager 로 대체. SG 에서 22 포트 닫기.
  7. IMDSv1 비활성 안 함 = SSRF 취약점 시 IAM credentials 탈취. 모든 인스턴스 IMDSv2 강제.
  8. Spot 인스턴스 2분 알림 미처리 = IMDS에서 중단 알림 폴링하거나 EventBridge로 graceful shutdown 구현.

관련 위키

이 글의 용어 (7개)
[AWS] Auto Scaling: EC2 ASG, target tracking, predictivecloud
정의 Auto Scaling Group (ASG) = EC2 instance 자동 증감. desired / min / max + scaling policy. 구조 Scaling …
[AWS] CloudWatch: 메트릭, 로그, 알람cloud
정의 CloudWatch = AWS 의 모니터링 + 로그 + 알람 통합 서비스. 메트릭 수집, 로그 집계, 대시보드, 알람, 이상 감지를 하나의 서비스에서 제공. 사용 상황 | …
[AWS] EBS vs Instance Store: 영속 vs 임시 스토리지cloud
정의 | | EBS | Instance Store | |---|---|---| | 영속성 | 영속 | 임시 (instance 종료 시 손실) | | 위치 | 네트워크 attach…
[AWS] EKS: managed Kubernetescloud
정의 EKS (Elastic Kubernetes Service) = AWS 의 managed K8s control plane. worker node 는 사용자 (또는 Fargat…
[AWS] IAM: User, Role, Policy, STScloud
정의 IAM (Identity and Access Management) = AWS 의 권한 관리 전부. User, Group, Role, Policy 로 구성. "누가 어떤 리소…
[AWS] Security Group vs NACL: stateful vs stateless 방화벽cloud
정의 AWS VPC 에는 두 계층의 네트워크 방화벽이 존재. | 항목 | SG (Security Group) | NACL (Network ACL) | |:---|:---|:---…
[AWS] VPC: subnet, route, NAT, peeringcloud
정의 VPC (Virtual Private Cloud) = AWS 안의 논리적 격리 네트워크. CIDR 정의 + subnet 분할 + 라우팅. AWS 리소스를 격리된 네트워크에 …

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기