포스트

AWS 해부 (4) EC2: instance, security group, SSH

instance type 이름을 읽는 법, instance를 띄울 때 정하는 AMI와 key pair와 security group, SSH 접속, 중지와 종료의 과금 차이, access key 대신 IAM role을 붙이는 구성을 정리합니다.

AWS 해부 (4) EC2: instance, security group, SSH

AWS 해부 시리즈의 4편입니다. 전체 목차는 0편에 있습니다.

instance type 이름을 읽는 법

EC2 instance type은 t3.micro처럼 “패밀리 세대 . 크기” 구조입니다. t 패밀리의 3세대, micro 크기라는 뜻입니다. 패밀리가 용도를 정합니다.

패밀리용도
t범용, 버스트 방식. 평소 낮은 CPU 기준선에 크레딧으로 순간 성능. 개발 서버 용도
m범용, 고정 성능
c컴퓨트 최적화. CPU 비중이 큰 작업
r메모리 최적화. 큰 데이터를 메모리에 올리는 작업
g, pGPU. 학습과 추론

이 시리즈의 실습은 t3.micro로 충분합니다. 이름 끝에 g가 붙는 type(t4g 등)은 ARM(Graviton) CPU라는 뜻인데, 이 구분이 5편의 컨테이너 이미지 아키텍처 문제로 이어집니다.

instance를 띄울 때 정하는 세 가지

콘솔에서 instance를 생성할 때 실제로 고민이 필요한 항목은 세 개입니다.

  1. AMI: 부팅할 OS 이미지입니다. 이 시리즈는 Ubuntu 24.04 LTS를 씁니다
  2. key pair: SSH 접속에 쓸 키입니다. 생성하면 개인 키(.pem)가 한 번만 다운로드되고, AWS는 공개 키만 보관합니다. 잃어버리면 재발급이 아니라 instance를 다시 만드는 쪽이 빠릅니다
  3. security group: instance 단위 방화벽입니다. 기본은 인바운드 전체 차단이고, 허용 규칙만 추가합니다. SSH(22번 포트)를 “내 IP”로만 여는 것이 시작점입니다

SSH 접속

1
2
chmod 400 ~/.ssh/mlops-key.pem
ssh -i ~/.ssh/mlops-key.pem ubuntu@<public-ip>

chmod 400은 필수입니다. 권한이 넓은 키 파일은 SSH 클라이언트가 거부합니다. 접속 계정 이름은 AMI가 정하며 Ubuntu AMI는 ubuntu입니다. public IP는 콘솔의 instance 상세에서 확인합니다.

중지와 종료는 다르다

  • 중지(stop): instance는 멈추지만 디스크(EBS volume)는 남습니다. EC2 시간 과금은 멈추고 EBS 용량 과금은 계속됩니다. 다시 시작하면 public IP가 바뀝니다
  • 종료(terminate): instance와 기본 설정의 EBS가 삭제됩니다. 복구할 수 없습니다

“중지해 뒀으니 요금이 안 나온다”는 절반만 맞습니다. EBS와 별도로 잡아 둔 Elastic IP는 계속 과금됩니다. 전체 정리는 6편에서 다룹니다.

서버에는 access key 대신 IAM role

instance 안에서 S3에 접근해야 할 때, 2편에서 만든 access key를 서버에 복사해 두는 것이 첫 번째로 떠오르는 방법이지만 틀린 방법입니다. 서버가 뚫리면 key가 그대로 유출됩니다.

대신 IAM role을 만들어 instance에 붙입니다.

  1. IAM에서 role을 생성하고, 신뢰 대상(trusted entity)을 EC2로 지정합니다
  2. 필요한 policy를 붙입니다. 학습 단계에서는 AmazonS3FullAccess, 실무에서는 특정 bucket으로 좁힌 policy
  3. instance 생성 시(또는 실행 중 변경으로) 이 role을 지정합니다

이후 instance 안의 boto3와 AWS CLI는 설정 없이 임시 자격 증명을 자동으로 받아 씁니다. 3편의 예제 코드가 수정 없이 서버에서도 돕니다.

자주 밟는 함정

  1. SSH를 0.0.0.0/0으로 엽니다. 전 세계에 22번 포트를 여는 설정이고, 무차별 로그인 시도가 즉시 시작됩니다. security group의 SSH 규칙은 내 IP로 제한하고, IP가 바뀌면 규칙을 갱신합니다
  2. 중지 후 재시작했더니 접속이 안 됩니다. public IP가 바뀌었기 때문입니다. 바뀐 IP를 다시 확인해 접속하거나, 고정 IP가 필요하면 Elastic IP를 씁니다. 단 Elastic IP는 과금 대상입니다
  3. 프리 티어 조건을 확인하지 않고 큰 type을 띄웁니다. 무료 범위는 계정 생성 시점과 플랜에 따라 다릅니다. 실습 전에 본인 계정의 프리 티어 조건을 확인하고, 6편의 Budgets 알람을 먼저 걸어 둡니다

다음 편에서 로컬에서 만든 컨테이너 이미지를 ECR에 올리고 이 instance에서 구동합니다.

다음 글: AWS 해부 (5) 컨테이너 배포: ECR에서 EC2까지

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.