Post-IT

AWS EC2 인스턴스 생성하기 본문

카테고리 없음

AWS EC2 인스턴스 생성하기

생각없는 개발자 2025. 12. 4. 21:43

AWS EC2 인스턴스 생성하기 - 기본편

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

AMI는 EC2를 만들 때 사용하는 템플릿이다. AMI안에는 다음과 같은 내용이 포함된다.

  • 운영체제(OS)
  • 기본 패키지 및 설정
  • 보안 업데이트
    어떤 OS + 기본 설정으로 서버를 시작할 것인지 결정하는 옵션이다. Ubuntu, Linux, Mac뿐만 아니라 TensorFlow, PyTorch, CUDA 같은 딥러닝 AMI도 프리티어로 존재한다.

2. 인스턴스 유형

EC2 인스턴스 유형은 CPU, 메모리, 스토리지, 네트워크 성능, GPU가 어떻게 구성 될지 결정하는 "서버 사양 패키지"이다.

  • t2.micro -> CPU 1개 + 메모리 1GB
  • c6g.large -> CPU 2개 + 메모리 4GB
  • g5.xlarge -> GPU 포함
AWS 인스턴스 패밀리

앞에 붙은 t,c,g 같은 알파벳들을 인스턴스 패밀리라고한다.

  • t, m : 범용
  • c : CPU 고성능
  • r : 메모리 최적화
  • i, d : 스토리지 최적화
  • g, p : GPU 포함
인스턴스 크기

.뒤는 인스턴스의 크기를 나타낸다.

  • micro : vCPU 1개, 1GB
  • small : vCPU 1개 , 2GB
  • medium : vCPU 2개, 4GB
  • large : vCPU 2개, 8GB

3. 키 페어(로그인)

SSH

Secure Shell의 줄임말로, 네트워크 상에서 원격 컴퓨터에 안전하게 접속하고 명령을 실행하거나 파일을 복사할 수 있게 해주는 프로토콜입니다. SSH를 사용하면 다음과 같은 작업들을 할 수 있습니다.

  • 서버 내부 파일 수정
  • 패키지 설치
  • Docker 실행
  • FastAPI 실행
  • 로그 확인

AWS EC2는 기본적으로 SSH를 이용한 접속만 허용하고, 보안을 위해 비밀번호 방식은 막혀있습니다. 키 페어 기반 인증을 사용해야 합니다.

키 페어

키 페어는 EC2 내부에 Public Key(공개키)를 저장하고 본인이 Private Key(개인키)를 가지고 있다가 두 키가 매칭될 때 접속을 허용하는 방식이다. Private Key가 없으면 EC2에 접속할 수 없다. 잃어버리면 재발급하거나 인스턴스를 다시 만들어야 한다.

RSA vs ED25519

두 가지 모두 공개키 암호 방식으로, SSH TLS, Git, GPG 인증키에서 사용되는 알고리즘이다.

  1. RSA : RSA는 소인수 분해를 기반으로 둔 알고리즘으로 호환성이 좋아 많은 서비스에서 "기본값"으로 많이 채택한다.
  2. ED25519 : 타원곡선 암호(ECC)의 한 종류로 RSA와 같은 수준의 보안을 훨씬 짧은 키로 제공한다.
    .pem vs .ppk
    파일 형식은 어떤 프로그램에서 키를 사용할지에 따라 다르다.
  3. .pem : Mac, Linux, GitBash, VSCode Remote 등에서 사용하고 OpenSSH 기반으로 보편적이고 호환성이 좋아 대부분의 개발환경에서 사용된다.
  4. .ppk : Windows 용 PuTTY 프로그램 전용 포멧이다.

4. 네트워크 설정

1. 네트워크(VPC)/서브넷

VPC는 AWS에서 제공하는 독립된 네트워크 영역을 말한다. VPC에는 각 리전의 각 가용성 영역에 하나의 서브넷이 존재하고, 각 서브넷에 EC2 인스턴스가 있고, VPC의 리소스와 인터넷 간의 통신을 허용하는 인터넷 게이트웨이가 있습니다.

 

개인적으로 표현이 조금 어려워서 각 단어들을 정리했습니다.

  • 리전(Region) : AWS에서 운영하는 전 세계 물리적 데이터 센터 묶음. 실제 데이터가 저장되는 위치이기도 하기 때문에 사용자와 물리적으로 가까울 수록 속도가 빠르고, 리전마다 가격과 제공 서비스가 다를 수 있습니다.
  • 가용성 영역 : 리전 안에도 여러 개의 독립적인 데이터 센터가 존재하는데 이 센터 한하나가 가용성 영역(AZ)라고 한다.
  • VPC : Virtual Private Cloud의 약자로 AWS 안에서 내가 사용할 수 있는 전용 네트워크 공간을 말한다.
  • 서브넷 : VPC는 큰 네트워크 영역이라면, 서브넷은 그 안에서 잘게 나눈 네트워크를 말한다. 각 서브넷은 하나의 가용성 영역(AZ)에 속한다는 특징이 있다. 서브넷도 퍼블릭 서브넷과 프라이빗 서브넷이 존재한다.
    • 퍼블릭 서브넷 : 인터넷 연결 가능 (EC2 외부에서 접근 가능)
    • 프아이빗 서브넷 : 인터넷 연결 안 됨 (DB, 백엔드 서버용)
  • EC2 인스턴스 : AWS에서 제공하는 가상 컴퓨터(서버)
  • 리소스 : EC2, RDS, S3, 로드밸런서 등 네트워크 안에 존재하는 모든 것을 리소스라고 한다.
  • 인터넷 게이트웨이(IGW) : VPC 내부 리소스가 인터넷과 통신할 수 있게 해주는 장치 VPC<->인터넷을 연결해주는 문이라고 생각하면 된다. IGW가 있어야 외부 인터넷에 요청을 보낼 수 있고, 외부에서 EC2에 접속할 수 있다.
2. 퍼블릭 IP 자동 할당

해당 옵션이 켜져 있어야 EC2가 공인 IP를 받는다. 공인 IP가 있어야 SSH 접속이 가능하고, 웹에서도 접속 가능하다.

3. 방화벽(보안 그룹)

보안 그룹은 EC2에 들어오는 외부 접근을 허용/차단하는 방패막이다.

  1. 보안 그룹 생성 : 새로운 보안 그룹을 만들어서 규칙을 자동으로 넣어준다.
  2. 기존 보안 그룹 선택 : 이미 만들어진 보안 그룹을 재사용
4. 트래픽 허용
  1. 다음에서 SSH 트래픽 허용
    • 위치무관("0.0.0.0/0) : 전세계 모든 IP 허용
    • 내 IP 주소
    • 사용자 지정
  2. 인터넷에서 HTTPS 트래픽 허용 : HTTPS(SSL 암호화) 연결을 허용하는 옵션
  3. 인터넷에서 HTTP 트래픽 허용 : TCP 80 포트를 오픈해서 웹 브라우저에서 접속이 가능해진다.
💡HTTP vs HTTPS

HTTP는 암호화 되지 않은 평문으로 통신하는 방식이다. 클라이언트 - 서버 간 전송되는 데이터가 그대로 노출된다. HTTPS는 SSL/TLS 암호화를 추가한 통신 방식으로 데이터가 암호화되어 전송돼 중간에 패킷을 가로채도 내용을 해독할 수 없다.

5. 스토리지 구성

EC2 인스턴스가 사용할 디스크(저장 공간)을 정하는 옵션이다. 기본적으로 스토리지 구성은 다음과 같이 되어 있었다.

  • 1x : 디스크 갯수
  • 8 GiB : 디스크 크기
  • gp3 : EBS 볼륨 타입
  • 루트볼륨 : 운영체제(OS) 설치되는 메인 디스크 like C드라이브(윈도우)
  • IOPS : Input/Output per Second, 디스크가 데이터를 읽고 쓰는 속도
  • 암호화됨/암호화되지 않음 : 디스크 데이터를 AWS KMS로 암호화 할 것인지
💡AWS KMS??

암호화 키를 안전하게 생성·관리 해주는 서비스이다. 루트 볼륨이 KMS 키로 암호돠 되면, 디스크에 저장된 모든 데이터가 암호화 되어, 누군가 물리 디스크를 훔쳐도 내용을 읽을 수 없다.