카테고리 없음

[Cloud 10] AWS EC2 인스턴스 생성부터 보안 그룹 설정까지 완벽 가이드

jumemory 2025. 9. 3. 18:39

[Cloud 10] AWS EC2 인스턴스 생성부터 보안 그룹 설정까지 완벽 가이드

**EC2(Elastic Compute Cloud)**는 AWS에서 제공하는 가장 대표적인 서비스로, 클릭 몇 번으로 가상 서버를 임대할 수 있게 해줍니다. 우리가 만든 Django 프로젝트가 24시간 잠들지 않고 돌아갈 터전을 마련해 봅시다.


1. EC2 인스턴스 생성 프로세스 (7단계)

AWS 콘솔에 로그인한 뒤 'EC2' 서비스를 선택하고 [인스턴스 시작] 버튼을 누릅니다.

① 이름 및 태그

서버의 이름을 정합니다. (예: my-django-server) 나중에 서버가 많아졌을 때 구분하기 위함입니다.

② 애플리케이션 및 OS 이미지 (AMI)

서버의 운영체제를 고릅니다.

  • 추천: Ubuntu Server 24.04 LTS (가장 대중적이며 커뮤니티 지원이 활발합니다.)

③ 인스턴스 유형

서버의 사양(CPU, RAM)을 고릅니다.

  • 추천: t3.micro 또는 t2.micro (프리 티어 계정이라면 1년간 무료로 사용 가능한 사양입니다.)

④ 키 페어(로그인) 생성 [중요]

서버에 접속할 때 필요한 '열쇠'입니다.

  • 새 키 페어 생성: 이름(예: my-key)을 정하고 .pem 형식으로 다운로드합니다.
  • 주의: 이 파일은 단 한 번만 다운로드 가능하며, 잃어버리면 서버에 접속할 수 없습니다. 안전한 곳에 보관하세요.

⑤ 네트워크 설정 (보안 그룹)

서버에 들어오고 나가는 트래픽을 통제하는 방화벽 설정입니다. (아래 2번 항목에서 상세 설명)

⑥ 스토리지 구성

서버의 하드디스크 용량입니다.

  • 설정: 기본 8GB를 30GB(프리 티어 최대치)로 올리는 것을 추천합니다.

⑦ 요약 및 시작

모든 설정을 확인한 뒤 **[인스턴스 시작]**을 누르면 약 1~2분 뒤 서버가 가동됩니다.


2. 보안 그룹(Security Group) 설정의 정석

보안 그룹은 서버의 **인바운드(들어오는 문)**와 **아웃바운드(나가는 문)**를 관리합니다. Django 배포를 위해 반드시 열어야 할 문은 다음과 같습니다.

✅ 필수 인바운드 규칙 (Inbound Rules)

포트 범위 프로토콜 설명 소스(Source)
22 SSH 터미널 원격 접속을 위해 필요 내 IP (My IP)
80 HTTP 일반 웹 접속용 0.0.0.0/0 (누구나)
443 HTTPS 보안 웹 접속용 (나중에 SSL 적용 시) 0.0.0.0/0 (누구나)
8000 Custom Django 테스트 확인용 (임시) 0.0.0.0/0 (누구나)

보안 팁: SSH(22번) 포트의 소스를 Anywhere(0.0.0.0/0)로 두면 전 세계 해커들의 공격 대상이 됩니다. 반드시 **'내 IP'**로 설정하여 나만 접속할 수 있게 하세요.


3. SSH를 통한 서버 원격 접속

인스턴스가 생성되었다면, 다운로드한 .pem 키를 이용해 서버에 접속해 봅니다.

💻 Mac / Linux / WSL 사용 시

Bash
 
# 1. 키 파일 권한 변경 (나만 읽을 수 있게)
chmod 400 my-key.pem

# 2. 접속 시도 (퍼블릭 IPv4 주소 사용)
ssh -i "my-key.pem" ubuntu@<내-EC2-공인-IP>

💻 Windows (PowerShell/CMD)

PowerShell
 
ssh -i .\my-key.pem ubuntu@<내-EC2-공인-IP>

4. [선생님의 심화 보충] 탄력적 IP (Elastic IP)의 필요성

기본적으로 생성된 EC2의 IP 주소는 서버를 껐다 켜면 바뀝니다(유동 IP). 서비스 운영 시 IP가 바뀌면 곤란하겠죠?

  • Elastic IP: 서버를 재시작해도 변하지 않는 고정 IP를 할당받는 서비스입니다.
  • 주의: 할당받고 인스턴스에 연결하지 않으면 비용이 발생하므로, 반드시 실행 중인 인스턴스에 즉시 연결해야 합니다.

✍️ 블로그 작성을 위한 마지막 조언

독자들에게 **"드디어 나만의 실제 서버가 생겼습니다!"**라는 성취감을 전달해 주세요. AWS 콘솔에서 인스턴스 상태가 '실행 중'으로 바뀌는 화면과 터미널 접속 성공 화면을 캡처해서 보여주면 아주 좋습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'DIRS': [BASE_DIR / 'templates']

 

 

참고 : 장고 5.0은 get이라는 매소드를 허용 x

 

CICD 데브옵