Skip to content

AWS EC2 (Elastic Compute Cloud) 완벽 가이드

1. EC2란?

EC2는 Elastic Compute Cloud의 약자로, AWS가 제공하는 가상 컴퓨터 임대 서비스이다.

EC2 이름의 유래

문자개수설명
E1개Elastic
C2개Compute Cloud

E가 1개, C가 2개이므로 EC2라고 부른다. 정식 명칭은 Amazon Elastic Compute Cloud이다.

핵심 개념

EC2의 핵심은 매우 단순하다. AWS 데이터 센터에 있는 서버 컴퓨터 한 대를 빌려 쓰는 것이다.

물리적으로 서버를 구매하고, 전기를 연결하고, 네트워크를 세팅하고, OS를 설치하는 모든 과정을 AWS가 대신 해준다. 사용자는 웹 콘솔에서 클릭 몇 번이면 몇 분 만에 서버 한 대를 가동할 수 있다.

비유: 컴퓨터를 직접 사서 집에 두는 대신, AWS라는 거대한 PC방에서 컴퓨터를 시간 단위로 빌려 쓰는 것과 같다.

Elastic(탄력적) 이라는 단어가 붙은 이유는 필요에 따라 서버 사양을 늘리거나 줄일 수 있고, 서버 대수도 자유롭게 조절할 수 있기 때문이다.


2. EC2 인스턴스(Instance) 개념

EC2에서 가장 많이 듣는 용어가 인스턴스(Instance) 이다.

하나의 가상 컴퓨터 = 하나의 인스턴스

인스턴스는 실제 물리 서버 위에서 가상화 기술을 통해 만들어진 독립된 컴퓨터 환경이다. 각 인스턴스는 자신만의 CPU, 메모리, 스토리지, 네트워크를 가진다.

개념비유
물리 서버아파트 건물 전체
인스턴스아파트 건물 안의 개별 세대
AMI (Amazon Machine Image)세대를 꾸미는 인테리어 패키지 (OS + 소프트웨어 묶음)

인스턴스를 만들 때는 AMI(Amazon Machine Image) 를 선택한다. AMI는 운영체제와 기본 소프트웨어가 미리 설치된 템플릿이다. Amazon Linux, Ubuntu, Windows Server 등 다양한 AMI가 제공된다.


3. 인스턴스 유형(Instance Types)

EC2 인스턴스는 용도에 따라 여러 시리즈(Family) 로 나뉜다. 각 시리즈는 특정 워크로드에 최적화되어 있다.

주요 인스턴스 시리즈

시리즈최적화 대상사용 사례예시
T 시리즈범용(General Purpose)웹 서버, 소규모 DB, 개발 환경t2.micro, t3.medium
C 시리즈CPU 최적화(Compute Optimized)배치 처리, 미디어 인코딩, 과학 계산c5.large, c6g.xlarge
R 시리즈메모리 최적화(Memory Optimized)Redis, Memcached 같은 인메모리 DBr5.large, r6g.xlarge
G 시리즈GPU 최적화(Accelerated Computing)딥러닝, 머신러닝, 그래픽 렌더링g4dn.xlarge, g5.xlarge

T 시리즈 상세 - 가장 많이 쓰는 범용 타입

T 시리즈는 버스터블(Burstable) 성능 모델을 사용한다.

  • 평소에는 기본 성능(baseline)으로 동작하면서 CPU 크레딧(Credit) 을 축적한다.
  • 트래픽이 몰리면 축적된 크레딧을 소비하며 일시적으로 높은 성능(burst) 을 발휘한다.
  • 크레딧이 소진되면 다시 기본 성능으로 돌아간다.

Free Tier(무료 등급) 대상 인스턴스는 계정 생성일과 리전에 따라 다르다. 2025년 7월 15일 이전 계정은 t2.micro, t3.micro가 대표적이고, 이후 계정은 t3.micro, t3.small, t4g.micro, t4g.small, c7i-flex.large, m7i-flex.large 등이 Free Tier eligible로 표시될 수 있다. 실습 전에는 콘솔의 Free tier eligible 라벨을 확인한다.

확인 항목이유
Free tier eligible 라벨계정 생성일과 리전에 따라 무료 대상 타입이 달라질 수 있음
vCPU / 메모리micro, small, large라도 패밀리별 사양이 다름
CPU 아키텍처t4g는 Arm 기반이므로 AMI와 패키지 호환성 확인 필요
무료 사용량/크레딧Free plan, Paid plan, 기존 12개월 Free Tier 여부에 따라 다름

인스턴스 이름 읽는 법

인스턴스 이름 t2.micro를 분해하면 다음과 같다.

부분의미
t인스턴스 패밀리(Family) - 범용
2세대(Generation) - 2세대
micro크기(Size) - 가장 작은 사이즈

크기 순서: nano < micro < small < medium < large < xlarge < 2xlarge < ...


4. EC2 구성요소 관계도

EC2 인스턴스는 단독으로 존재하지 않고, 여러 구성요소와 함께 동작한다.

각 구성요소 요약

구성요소역할비유
AMIOS와 소프트웨어가 포함된 이미지컴퓨터의 복원 이미지
인스턴스 유형CPU, 메모리 등 하드웨어 사양컴퓨터 사양표
EBS영구 저장 스토리지외장 하드디스크
보안 그룹인바운드/아웃바운드 트래픽 제어건물 출입 보안 시스템
키 페어인스턴스 접속 인증집 열쇠
탄력적 IP고정된 공인 IP 주소고정 전화번호
VPC격리된 가상 네트워크사설 네트워크 공간

5. EBS (Elastic Block Storage) - 하드디스크

EBS는 EC2 인스턴스에 연결하는 네트워크 기반 블록 스토리지이다. 일반 컴퓨터의 하드디스크(HDD)나 SSD에 해당한다.

EBS의 특징

  • 네트워크로 연결: EC2와 EBS는 네트워크를 통해 연결되므로, 인스턴스를 종료해도 EBS 데이터는 보존된다.
  • 독립적 수명: EC2 인스턴스와 별개로 존재할 수 있다. 인스턴스를 삭제해도 EBS 볼륨은 남길 수 있다(설정에 따라 다름).
  • 하나의 인스턴스에 여러 EBS 연결 가능: 하드디스크를 여러 개 꽂는 것처럼, 하나의 EC2에 여러 EBS를 붙일 수 있다.
  • 스냅샷(Snapshot) 지원: EBS 전체를 특정 시점의 백업으로 저장할 수 있다.

EBS 볼륨 유형

유형이름특징사용 사례
gp3General Purpose SSD 3세대최신 범용 SSD, 비용과 성능 조절 유연대부분의 워크로드
gp2General Purpose SSD이전 범용 SSD, 기존 워크로드에서 사용부트 볼륨, 개발/테스트
io1/io2Provisioned IOPS SSD고성능, IOPS 보장대규모 DB (Oracle, SAP)
st1Throughput Optimized HDD높은 처리량 HDD로그 처리, 빅데이터
sc1Cold HDD가장 저렴아카이브, 접근 빈도 낮은 데이터

GP3 타입 상세 (기본 선택)

GP3는 대부분의 새 사용 사례에서 먼저 검토할 만한 범용 SSD이다. GP2와 달리 스토리지 크기와 별개로 IOPS/처리량을 조정할 수 있어 비용과 성능을 맞추기 쉽다.

  • 크기: 1 GiB ~ 16 TiB
  • 기본 성능: 일반적인 개발/테스트와 중간 규모 워크로드에 충분
  • 성능 조절: 필요한 경우 IOPS와 처리량을 별도로 프로비저닝
  • Free Tier: 월 30 GiB의 EBS 스토리지 무료

주의: EC2 인스턴스를 중지(Stop) 해도 EBS 볼륨은 계속 존재하므로, EBS 스토리지 요금은 발생할 수 있다. 완전히 비용을 없애려면 볼륨 자체를 삭제해야 한다.


6. 보안 그룹(Security Group) - 방화벽

보안 그룹은 EC2 인스턴스의 가상 방화벽(Firewall) 역할을 한다. 인스턴스로 들어오고 나가는 트래픽을 규칙(Rule) 기반으로 허용하거나 차단한다.

보안 그룹의 핵심 특징

  1. 허용(Allow) 규칙만 존재: 차단(Deny) 규칙은 설정할 수 없다. 규칙에 명시하지 않은 트래픽은 자동으로 차단된다.
  2. 상태 저장(Stateful): 인바운드로 허용된 요청에 대한 응답은 아웃바운드 규칙과 무관하게 자동 허용된다.
  3. 인스턴스 레벨: 하나의 보안 그룹을 여러 인스턴스에 적용할 수 있고, 하나의 인스턴스에 여러 보안 그룹을 적용할 수 있다.

인바운드(Inbound) vs 아웃바운드(Outbound)

구분방향설명기본 설정
인바운드(Inbound)외부 -> 인스턴스외부에서 인스턴스로 들어오는 트래픽모든 트래픽 차단
아웃바운드(Outbound)인스턴스 -> 외부인스턴스에서 외부로 나가는 트래픽모든 트래픽 허용

자주 사용하는 인바운드 규칙

프로토콜포트 번호용도소스(Source) 예시
SSH22리눅스 서버 원격 접속내 IP (예: 203.0.113.50/32)
RDP3389윈도우 서버 원격 접속내 IP
HTTP80웹 서버 (비암호화)0.0.0.0/0 (모든 IP)
HTTPS443웹 서버 (암호화)0.0.0.0/0 (모든 IP)
MySQL/Aurora3306MySQL 데이터베이스특정 보안 그룹
PostgreSQL5432PostgreSQL 데이터베이스특정 서브넷 CIDR
사용자 지정 TCP8080개발용 웹 서버내 IP

보안 그룹 트래픽 흐름도

보안 그룹 설정 시 주의사항

  • SSH(22번 포트)를 0.0.0.0/0으로 열지 말 것. 이렇게 하면 전 세계 누구나 SSH 접속을 시도할 수 있어 보안 위험이 크다. 반드시 내 IP 또는 특정 IP 대역으로 제한해야 한다.
  • HTTP/HTTPS(80, 443번)는 보통 0.0.0.0/0으로 연다. 웹 서버는 누구나 접속할 수 있어야 하므로 모든 IP를 허용하는 것이 일반적이다.
  • 데이터베이스 포트(3306, 5432 등)는 절대 외부에 직접 노출하지 말 것. 애플리케이션 서버의 보안 그룹만 소스로 지정한다.

7. 인스턴스 라이프사이클(Instance Lifecycle)

EC2 인스턴스는 3가지 주요 상태를 갖는다. 각 상태에 따라 과금 방식이 달라지므로 반드시 이해해야 한다.

상태 다이어그램

상태별 상세 설명

실행 중 (Running)

  • 인스턴스가 정상적으로 동작하는 상태이다.
  • 시간당(또는 초당) 요금이 부과된다.
  • SSH, RDP 등을 통해 접속할 수 있다.
  • 애플리케이션이 실행되고 트래픽을 처리한다.
  • 재부팅(Reboot) 을 해도 Running 상태를 유지한다. 재부팅 시 공인 IP는 변경되지 않는다.

중지 (Stopped)

  • 인스턴스를 잠시 꺼둔 상태이다.
  • EC2 컴퓨팅 요금은 부과되지 않는다.
  • 단, 다음 요금은 계속 발생할 수 있다:
    • EBS 볼륨 스토리지 요금 (데이터가 디스크에 남아있으므로)
    • 탄력적 IP(Elastic IP) 요금 (연결된 인스턴스가 중지되면 유휴 IP로 과금)
  • 다시 시작(Start)하면 Running 상태로 돌아간다.
  • 중지 후 재시작하면 공인 IP 주소가 변경된다. 고정 IP가 필요하면 탄력적 IP를 사용해야 한다.

종료 (Terminated)

  • 인스턴스가 완전히 삭제된 상태이다.
  • 복구가 불가능하다. 한 번 종료하면 되돌릴 수 없다.
  • EBS 볼륨은 기본 설정에서 인스턴스와 함께 삭제된다 (DeleteOnTermination = true).
  • 종료 전에 반드시 AMI 생성이나 EBS 스냅샷으로 백업해야 한다.
  • 종료된 인스턴스는 콘솔에서 잠시 보이다가 사라진다.

비용 요약표

상태EC2 요금EBS 요금탄력적 IP 요금
Running부과부과무료 (연결된 상태)
Stopped무료부과부과 (유휴)
Terminated무료무료 (삭제 시)무료 (해제 시)

8. 서버 접속 방법

EC2 인스턴스에 접속하는 방법은 운영체제(OS) 에 따라 달라진다.

접속 방법 비교 흐름도

8-1. 윈도우 서버 접속: RDP (Remote Desktop Protocol)

윈도우 서버는 RDP(Remote Desktop Protocol) 프로토콜을 사용하여 원격 데스크톱으로 접속한다. 포트 번호는 3389번이다.

접속 순서

  1. 키 페어(.pem) 파일 준비: 인스턴스 생성 시 다운로드한 .pem 파일이 필요하다.
  2. 관리자 비밀번호 해독:
    • AWS 콘솔 -> EC2 -> 인스턴스 선택 -> 연결(Connect) -> RDP 클라이언트 탭
    • "Get Windows Password" 클릭
    • .pem 파일을 업로드하면 Administrator 계정의 비밀번호가 복호화되어 표시된다.
  3. RDP 클라이언트로 접속:
    • Windows: mstsc.exe (원격 데스크톱 연결) 실행
    • macOS: Microsoft Remote Desktop 앱 사용
    • 접속 주소: 인스턴스 공인 IP:3389
    • 사용자: Administrator
    • 비밀번호: 2단계에서 해독한 비밀번호

보안 그룹에 RDP(3389) 인바운드 규칙이 있어야 접속할 수 있다.

8-2. 리눅스 서버 접속: SSH

리눅스 서버는 SSH(Secure Shell) 프로토콜을 사용하여 터미널(명령줄) 로 접속한다. 포트 번호는 22번이다.

macOS / Linux에서 접속

bash
# 1. 키 페어 파일 권한 설정 (최초 1회)
chmod 400 my-key-pair.pem

# 2. SSH 접속
ssh -i my-key-pair.pem ec2-user@54.123.45.67
  • chmod 400: 파일 소유자만 읽기 가능하도록 권한을 설정한다. 이 설정이 없으면 SSH가 "키 파일 권한이 너무 열려있다"며 접속을 거부한다.
  • ec2-user: Amazon Linux의 기본 사용자명이다. Ubuntu는 ubuntu, CentOS는 centos를 사용한다.

Windows에서 PuTTY를 사용한 접속

PuTTY는 Windows용 SSH 클라이언트인데, .pem 형식을 직접 사용할 수 없어 .ppk 형식으로 변환이 필요하다.

  1. PuTTYgen 실행
    • "Load" 클릭 -> .pem 파일 선택
    • "Save private key" 클릭 -> .ppk 파일로 저장
  2. PuTTY 설정
    • Host Name: ec2-user@공인IP
    • Port: 22
    • Connection -> SSH -> Auth -> Credentials: .ppk 파일 선택
  3. "Open" 클릭으로 접속

EC2 Instance Connect (브라우저 접속)

AWS 콘솔에서 별도 프로그램 설치 없이 브라우저에서 바로 SSH 접속할 수 있다.

  • EC2 콘솔 -> 인스턴스 선택 -> "연결(Connect)" 클릭 -> "EC2 Instance Connect" 탭 -> "연결" 클릭
  • 키 페어 없이도 접속 가능하다 (임시 키가 자동 생성됨).
  • Amazon Linux 2, Ubuntu 20.04 이상에서 지원된다.

보안 그룹에 SSH(22) 인바운드 규칙이 있어야 접속할 수 있다.


9. 기본 Linux 명령어

리눅스 서버에 접속하면 GUI가 아닌 CLI(Command Line Interface) 환경이다. 기본 명령어를 알아야 서버를 다룰 수 있다.

필수 명령어

명령어풀네임기능예시
pwdPrint Working Directory현재 위치(디렉토리) 출력pwd -> /home/ec2-user
cdChange Directory디렉토리 이동cd /var/log
lsList현재 디렉토리의 파일/폴더 목록ls -la
mkdirMake Directory새 디렉토리 생성mkdir my-app

pwd - 현재 위치 확인

bash
$ pwd
/home/ec2-user

현재 내가 파일 시스템의 어디에 있는지 알려준다. 길을 잃었을 때 가장 먼저 치는 명령어이다.

cd - 디렉토리 이동

bash
# 절대 경로로 이동 (루트부터 전체 경로)
$ cd /var/log

# 상대 경로로 이동 (현재 위치 기준)
$ cd my-app

# 상위 디렉토리로 이동
$ cd ..

# 홈 디렉토리로 이동
$ cd ~
# 또는 그냥
$ cd

ls - 파일/폴더 목록 보기

bash
# 기본 목록
$ ls
Desktop  Documents  Downloads

# 상세 목록 (-l: 자세히, -a: 숨김파일 포함)
$ ls -la
total 12
drwxr-xr-x 4 ec2-user ec2-user 4096 Mar 29 10:00 .
drwxr-xr-x 3 root     root     4096 Mar 29 09:00 ..
-rw-r--r-- 1 ec2-user ec2-user  220 Mar 29 09:00 .bashrc
drwxr-xr-x 2 ec2-user ec2-user 4096 Mar 29 10:00 my-app

ls -la 출력에서 각 열의 의미:

예시의미
1drwxr-xr-x권한 (d=디렉토리, r=읽기, w=쓰기, x=실행)
24하드 링크 수
3ec2-user소유자
4ec2-user소유 그룹
54096파일 크기 (바이트)
6Mar 29 10:00최종 수정 시간
7my-app파일/디렉토리 이름

mkdir - 디렉토리 생성

bash
# 디렉토리 생성
$ mkdir my-app

# 중첩 디렉토리 한 번에 생성 (-p 옵션)
$ mkdir -p projects/web/frontend

추가로 알아두면 유용한 명령어

명령어기능예시
cat파일 내용 출력cat /etc/hostname
cp파일 복사cp file.txt backup.txt
mv파일 이동/이름 변경mv old.txt new.txt
rm파일 삭제rm file.txt
rm -rf디렉토리 강제 삭제rm -rf my-folder (주의!)
sudo관리자 권한으로 실행sudo yum update
yum install패키지 설치 (Amazon Linux)sudo yum install httpd
apt install패키지 설치 (Ubuntu)sudo apt install nginx

10. VI 에디터 기초

리눅스 서버에서 파일을 편집할 때 가장 많이 사용하는 텍스트 에디터가 VI (또는 VIM) 이다. GUI 에디터와 달리 모드(Mode) 개념이 핵심이다.

VI의 두 가지 모드

모드이름역할진입 방법
Normal 모드명령 모드커서 이동, 복사, 붙여넣기, 삭제 등 명령 실행Esc
Insert 모드입력 모드실제 텍스트 입력i, a, o

기본 사용 흐름

1. vi 파일명으로 파일 열기      → Normal 모드로 시작
2. i 키를 눌러 Insert 모드 진입 → 텍스트 입력
3. Esc 키를 눌러 Normal 모드 복귀
4. :wq 입력하여 저장 후 종료

VI 실행

bash
# 새 파일 생성하며 열기
$ vi hello.txt

# 기존 파일 열기
$ vi /etc/nginx/nginx.conf

Normal 모드 주요 명령어

기능
h, j, k, l좌, 하, 상, 우 이동 (방향키도 가능)
dd현재 줄 삭제
yy현재 줄 복사
p붙여넣기
u실행 취소 (Undo)
x현재 커서 위치 글자 삭제
G파일 맨 끝으로 이동
gg파일 맨 처음으로 이동
/검색어텍스트 검색 (n으로 다음 결과)

Insert 모드 진입 방법

기능
i현재 커서 에서 입력 시작
a현재 커서 에서 입력 시작
o현재 줄 아래에 새 줄 추가하고 입력 시작
O현재 줄 에 새 줄 추가하고 입력 시작

저장 및 종료 (Normal 모드에서)

명령기능
:w저장 (Write)
:q종료 (Quit)
:wq저장 후 종료 (가장 많이 사용)
:q!저장하지 않고 강제 종료
:wq!강제 저장 후 종료 (읽기 전용 파일 등)

실습 예제

bash
# 1. 파일 생성 및 열기
$ vi hello.txt

# 2. Insert 모드 진입 (i 키 누르기)
# 화면 하단에 -- INSERT -- 표시 확인

# 3. 내용 입력
Hello, AWS EC2!
This is my first server.

# 4. Normal 모드로 복귀 (Esc 키 누르기)
# 화면 하단에 -- INSERT -- 표시 사라짐

# 5. 저장 후 종료
:wq

# 6. 파일 내용 확인
$ cat hello.txt
Hello, AWS EC2!
This is my first server.

팁: VI가 처음이라 어렵다면 nano라는 더 쉬운 에디터도 있다. nano hello.txt로 실행하면 화면 하단에 단축키가 표시되어 직관적이다. 하지만 VI는 거의 모든 리눅스 서버에 기본 설치되어 있으므로 익혀두는 것이 좋다.


비용 주의사항 (매우 중요)

Free Tier 조건

AWS Free Tier는 계정 생성일에 따라 조건이 다르다. 2025년 7월 15일 이전 계정은 기존 12개월 Free Tier를 기준으로 보고, 2025년 7월 15일 이후 계정은 Free plan/Paid plan과 크레딧 잔액을 함께 확인한다.

항목무료 조건
EC2 인스턴스콘솔에서 Free tier eligible로 표시되는 인스턴스
EBS 스토리지30 GiB (gp2/gp3)
데이터 전송월 아웃바운드 100 GB
탄력적 IP1개 (실행 중인 인스턴스에 연결 시)

기존 12개월 Free Tier의 750시간 한도는 약 31일 x 24시간이므로 인스턴스 1개를 한 달 내내 켜놓는 수준이다. 하지만 계정 생성일과 플랜별 조건이 달라졌으므로 Billing과 EC2 Free Tier 사용량을 함께 확인해야 한다.

비용 발생하는 실수 TOP 3

  1. 인스턴스를 종료(Terminate)하지 않고 중지(Stop)만 한 경우

    • EC2 요금은 안 나오지만 EBS 스토리지 요금이 계속 발생한다.
    • 완전히 비용을 없애려면 종료(Terminate) 해야 한다.
  2. 탄력적 IP를 할당하고 인스턴스에 연결하지 않은 경우

    • 실행 중인 인스턴스에 연결된 탄력적 IP는 무료이다.
    • 하지만 인스턴스가 중지되거나, 아무 인스턴스에도 연결되지 않은 탄력적 IP는 시간당 요금이 부과된다.
    • 사용하지 않는 탄력적 IP는 반드시 릴리스(Release) 해야 한다.
  3. Free Tier eligible이 아닌 인스턴스를 선택한 경우

    • 계정 생성일과 리전에 따라 무료 대상 인스턴스가 다르다.
    • 같은 micro 크기라도 항상 무료는 아니다.
    • 인스턴스 생성 시 "프리 티어 사용 가능" 라벨을 반드시 확인해야 한다.

비용 관리 팁

  • AWS Billing 대시보드를 주기적으로 확인한다.
  • 결제 알림(Billing Alert) 을 설정하여 예상 비용이 특정 금액을 넘으면 이메일 알림을 받는다.
  • 학습이 끝나면 반드시 모든 리소스를 종료/삭제한다: EC2 종료, EBS 볼륨 삭제, 탄력적 IP 릴리스.
  • 종료(Terminated)하면 데이터가 완전히 삭제되므로, 중요한 데이터는 반드시 백업(AMI 또는 EBS 스냅샷) 해둔다.

핵심 요약

개념한 줄 설명
EC2AWS의 가상 컴퓨터 임대 서비스 (E 1개 + C 2개 = EC2)
인스턴스가상 컴퓨터 한 대
AMIOS + 소프트웨어 템플릿 이미지
인스턴스 유형T(범용), C(CPU), R(메모리), G(GPU) 등 사양 분류
Free Tier eligible계정 생성일과 리전에 따라 달라지는 무료 대상 인스턴스 라벨
EBS네트워크 기반 영구 스토리지 (가상 하드디스크)
GP3최신 범용 SSD 타입
보안 그룹인바운드/아웃바운드 트래픽 제어 방화벽
키 페어.pem 형식 인증 키 파일
Running실행 중 - 요금 부과
Stopped중지 - EC2 무료, EBS는 과금 가능
Terminated종료 - 복구 불가, 데이터 삭제
RDP윈도우 접속 프로토콜 (포트 3389)
SSH리눅스 접속 프로토콜 (포트 22)
VI리눅스 기본 텍스트 에디터 (Normal/Insert 모드)