포스트

AWS 환경 설정하기

AWS 환경 설정하기

AWS 환경 세팅

개인 프로젝트를 시작하기 전에, AWS에서 기본적인 환경을 먼저 설정해보기로 했다. 루트 계정으로만 작업하는 건 보안에 좋지 않다고 해서, IAM 사용자 생성부터 차근차근 진행했다. 그다음으로는 파일을 저장할 S3 버킷과 서버를 띄우기 위한 EC2 인스턴스도 함께 설정하였다.

🔐 IAM 사용자 만들기

AWS에 가입하면 자동으로 루트 계정이 생성되는데, 이 계정은 말 그대로 모든 권한을 가진 관리자 계정이다. 하지만 이 계정은 너무 많은 권한을 가지고 있기 때문에, 만약 정보가 유출된다면 전체 계정이 위험해질 수 있다.

그래서 AWS에서는 루트 계정은 정말 꼭 필요할 때만 사용하고, 일반적인 작업은 별도의 IAM 사용자 계정을 만들어서 사용하는 걸 권장한다.

나도 이번 프로젝트를 시작하면서, 관리자 권한을 가진 IAM 사용자 하나를 만들어 사용하기로 했다.

먼저 AWS 콘솔 상단의 검색창에 IAM을 입력하고, IAM 콘솔로 이동한 뒤 [사용자 추가] 버튼을 클릭했다. 나는 사용자 이름을 admin으로 지정했다.

그 다음, “AWS Management Console 액세스 허용”에 체크를 했다. 이걸 체크해야 웹에서 로그인해서 콘솔로 작업할 수 있기 때문이다. (체크하지 않으면 API만 사용할 수 있고, 화면에서 작업은 불가능하다.)

비밀번호는 자동 생성으로 설정했고, “비밀번호 재설정 요구”는 체크를 해제했다. (이 설정은 개인이 사용할 경우에는 생략해도 된다.)

image

다음은 권한을 설정하는 단계였다. 나는 “기존 정책 직접 연결”을 선택했고, AdministratorAccess라고 검색해 이 정책을 추가했다.

이 정책은 AWS의 거의 모든 서비스와 리소스에 대해 전체 권한을 부여하는 정책이다. 즉, 이 사용자 계정으로는 무엇이든 설정하고 실행할 수 있다.

image

사용자 생성을 마치면, 사용자 이름, 콘솔 로그인 URL, 콘솔 비밀번호가 화면에 표시된다. 이 정보들은 꼭 따로 저장해두어야 한다. 잃어버리면 다시 로그인하거나 복구하는 데 불편할 수 있다.

이제부터는 루트 계정 대신, 내가 만든 admin 사용자 계정으로 로그인해 보다 안전하게 AWS 리소스를 관리할 수 있게 되었다.

☁️ S3 버킷 생성

이제 admin 사용자 계정으로 로그인한 뒤, AWS 콘솔 상단 검색창에 S3를 입력하고 S3 서비스로 들어간다. S3(Simple Storage Service)는 AWS에서 파일을 저장할 수 있는 공간이다. 이 안에 생성하는 버킷(bucket)은 폴더처럼 사용할 수 있는 개념으로, 내 프로젝트에서 생성하는 모든 데이터 파일들이 이 안에 담기게 된다.

S3 콘솔에서 [버킷 만들기] 버튼을 클릭한다. image

나는 de-stock-proj라는 이름의 버킷을 생성했다. 버킷 이름은 전 세계에서 고유해야 하기 때문에, 이미 존재하는 이름은 사용할 수 없다. image

버킷을 만들 때 기본 암호화 설정에서 Amazon S3 관리형 키(SSE-S3) 옵션을 선택했다. 이 설정은 AWS가 자동으로 파일을 암호화해주는 방식이라, 별도의 키 관리를 하지 않아도 되기 때문에 개인 프로젝트나 학습용으로는 충분하다.

또한 ‘버킷 키 활성화’는 체크하지 않았다. 이 옵션은 AWS Key Management Service(KMS)를 사용해 암호화 비용을 줄이는 기능인데, 학습용이나 간단한 프로젝트에서는 굳이 사용할 필요가 없다. image

버킷을 성공적으로 생성하고 나면, S3 콘솔에서 de-stock-proj라는 이름의 버킷이 목록에 나타난다. 이제 이 공간을 활용해 프로젝트 관련 파일을 저장할 수 있다.

🖥️ EC2 인스턴스 설정

이제 프로젝트에서 사용할 가상 서버를 만들 차례다. EC2는 AWS에서 제공하는 가상 머신 서비스로, 여기에 내가 만든 코드나 웹 서버 등을 올릴 수 있다.

먼저 AWS 콘솔 상단 검색창에 EC2를 입력하고, EC2 대시보드로 들어간다. 그리고 [인스턴스 시작] 버튼을 클릭한다. image

인스턴스 이름 & AMI 선택

인스턴스 이름은 de-stock-ec2로 설정했다. 운영체제는 전 프로젝트에서 한 그대로 Ubuntu를 선택했다. image

키 페어 생성

SSH로 EC2에 접속하려면 키 페어가 필요하다. 나는 de-stock-key라는 이름으로 새 키 페어를 생성했다. 이때 .pem 파일이 자동으로 다운로드되는데, 이 파일은 반드시 잘 보관해야 한다. 잃어버리면 해당 인스턴스에는 다시 접속할 수 없다.

보안 그룹 설정

SSH 접속을 위해 22번 포트를 열어주어야 한다. 보안을 위해 “내 IP”만 허용하도록 설정했다. 이렇게 하면 현재 내 컴퓨터에서만 접속할 수 있게 되므로 기본적인 보안 수준을 확보할 수 있다. 설정을 모두 마치고 나면 맨 아래에서 [인스턴스 시작] 버튼을 클릭해 인스턴스를 생성했다.

image

인스턴스가 생성되면 EC2 대시보드에서 de-stock-ec2 인스턴스를 확인할 수 있다. 상태가 “실행 중”, 2/2 상태 검사 통과로 표시되면 정상적으로 생성된 것이다.

image

🔑 PuTTY를 이용한 EC2 SSH 접속

EC2 인스턴스를 생성하고 나면, 서버에 접속하기 위해 SSH 클라이언트를 사용해야 한다. Mac이나 Linux는 기본 터미널로 접속이 가능하지만, 나는 Windows 사용자이므로 PuTTY라는 프로그램을 사용해야한다.

이미 PuTTY (접속용), PuTTYgen (키 파일 변환용) 설치되어있기 때문에 설치는 생략한다. EC2 인스턴스를 만들 때 생성된 키 페어는 .pem 형식이다. 하지만 PuTTY는 .ppk 형식만 인식하기 때문에, PuTTYgen을 이용해서 키를 변환해야 한다.

PuTTYgen 실행

[Load] 클릭 → .pem 파일 선택 (파일 형식을 All Files로 바꿔야 보임)

[Save private key] 클릭 → 경고창이 뜨면 그냥 [Yes]

예: de-stock-key.ppk라는 이름으로 저장

인스턴스 퍼블릭 IPv4 주소가 필요하므로 콘솔에서 복사해서 메모장에 따로 적어둔다.

이제 PuTTY로 SSH 접속을 설정해야한다. PuTTY를 실행하면 일단 Host Name을 입력해야하는데, 나는 EC2 인스턴스를 Ubuntu로 만들었기 때문에, 접속할 때 사용자 이름으로 ubuntu를 사용한다. Host Name에 ubuntu@퍼블릭 DNS 주소를 입력한다.

Connection > SSH > Auth에서 .ppk 파일을 선택한다. 이 파일이 있어야 비밀번호 없이 안전하게 SSH에 접속할 수 있다. 접속 설정을 반복하지 않기 위해 Session으로 돌아간 뒤, Saved Sessions칸에 이름을 입력하고 save 버튼을 누르면 다음부터 클릭 한 번으로 바로 접속할 수 있다.

🚨 EC2 SSH 접속 실패 – IP 불일치로 인한 보안 그룹 차단 오류

PuTTY 설정을 다 했는데도, 접속 창에 아무 것도 안 뜨고 그냥 멈춰 있거나 꺼지는 경우가 있었다. 처음에는 이유를 몰라 한참 헤맸는데, 결론은 “보안 그룹에서 허용한 IP와 내가 접속 중인 IP가 달라서”였다.

원인

EC2 인스턴스를 만들 때 보안 그룹에서 SSH(22번 포트) 접속을 “내 IP에서만 허용”하도록 설정했었다. (기본 보안 권장) 그런데 나중에 와이파이를 바꿨더니 내 공인 IP도 바뀌었다! 그래서 EC2 입장에서는 “모르는 IP가 접속하려 한다”고 생각해서 차단한 것이다.

임시 해결

일단 나는 보안 그룹에서 인바운드 규칙을 수정해서 원본 항목을 0.0.0.0/0 으로 설정하였고, 일단 어느 IP에서나 접속 가능하게 해서 연결에 성공했다. 접속 시 로그인 계정은 ubuntu를 사용하면 된다. 당장 편의성을 위해 0.0.0.0/0으로 모든 IP를 열었지만, 개인 프로젝트이므로 SSH 키로만 접속 가능하게 설정되어 있다면 어느 정도 안전하게 운영할 수 있다. 단, 인스턴스를 사용하지 않을 땐 반드시 중지 또는 보안 그룹을 제한해두는 습관을 들이기로 했다.

image

탄력적 IP(Elastic IP) 설정하기

이전 문제를 해결했지만, EC2 인스턴스를 껐다 켜면 매번 IP가 바뀌어 Putty 접속이 번거로웠다. 이를 해결하기 위해 Elastic IP를 설정했다. 보안그룹의 탄력적 IP로 이동해서 Elastic IP를 할당받고 인스턴스와 연결하면 된다. EC2 대시보드에서 Public IPv4 address가 고정된 Elastic IP로 표시되며 이제 재시작해도 IP가 변경되지 않는다! Putty도 역시 Host Name 에 새로 할당된 Elastic IP로 바꿔줘야 한다.

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