AWS EC2 Amazon Linux 2 인스턴스 만들기

안녕하세요. 앤글입니다. 때는 2020년 8월 25일. 게임을 굉장히 좋아하는 저로서는 편하게 게임 얘기를 할 수 있는 커뮤니티가 없는 게 아쉬웠습니다. 그래서 갑자기 “그냥 내가 만들어서 직접 관리하자.”라는 획기적인(?) 생각이 떠올랐습니다.

이 글은 게임 커뮤니티 웹 애플리케이션을 만들기 위한 첫 걸음입니다.

들어가기에 앞서


본문에 들어서기 전 이 글을 작성하는 시점에서 AWS 같은 웹 서비스와 웹 서버에 대한 지식이 어느 정도 되냐고 물으신다면 별로 없습니다. 여러분들과 비슷할 거예요. 그래서 갈림길을 만나 선택을 해야 되는 순간이 오면 즉흥적으로 선택하고 뒷일은 미래의 나에게 맡기는 타입입니다. 문제가 생기면 미래의 제가 해법을 찾아줄 거라고 믿습니다ㅎㅎ.

쓸데없는 말을 왜 하냐면 AWS에 관한 글들은 제가 커뮤니티 사이트를 만들기 위해 스스로 해본 내용들, 또는 생긴 문제를 어떻게 해결하였는지에 관해 작성할 것입니다. 여러분들이 이 블로그의 AWS 글들을 보고 서버를 만들면 문제가 생길 수도 아닐 수도 있습니다.

혹시나의 조바심 때문에 주저리주저리 했네요. 그럼 시작하겠습니다.

AWS를 선택한 이유


웹 애플리케이션을 만들기 위해서는 웹 서버가 필요합니다. 웹 서버는 서버 컴퓨터가 필요한데 서버 컴퓨터를 가정집에서 관리하기는 매우 힘듭니다. 거의 매일 켜놓아야 되니 소음도 날것이고 여러 가지 문제가 따르겠죠. 그래서 평소 이용하던 AWS(아마존 웹 서비스)를 이용하기로 했습니다.

AWS는 서울에 4개의 가용 영역이 있고 전 세계적으로 분포되어 있어 데이터가 없어질 걱정은 안해도 됩니다. 집에 서버 컴퓨터가 있는데 귀여운 우리집 멍멍이가 사고를 쳐서 갑자기 서버가 망가지고 웹 서버에 축적된 데이터가 없어질 위험은 없는 것이죠.

더군다나 처음 시작하면 서버 컴퓨터의 사양을 어느 정도로 맞출지 의문이지만 AWS는 그런 걱정 안해도 됩니다. Elastic Compute Cloud(EC2)는 상황에 맞춰 역동적으로 낮은 사양에서 높은 사양으로 변경 가능(인스턴스 유형 변경)합니다.

EC2는 무엇일까?


우선 EC2에 대해 얘기해야겠군요. 최대한 간단하게 설명하자면 EC2는 아마존에서 지원하는 가상 컴퓨터입니다. 아마존은 엄청 거대한 컴퓨터를 가지고 있고 사용자들에게 컴퓨터에 관련된 여러 가지 서비스(제품)을 지원하면서 돈을 벌고 있죠. EC2는 AWS 서비스 중에 가상으로 컴퓨터를 만들어주는 서비스입니다. 단어만 가상이지 진짜로 존재하는 컴퓨터를 만들어 준답니다.

EC2를 생성하려면 Amazon Machine Image(AMI)를 선택해야 하는데 AMI는 인스턴스를 시작하는 데 필요한 소프트웨어 구성(운영체제, 애플리케이션 서버, 애플리케이션)이 포함된 템플릿입니다. 간단히 말하면 가상 컴퓨터의 운영체제(윈도우10 같은 것)를 선택하는 거예요.

간단히 알아보았으니 이제 실제로 EC2를 만들어봅시다. 앗, 참고로 AWS 회원가입 절차는 생략하겠습니다.

1. Amazon Machine Image(AMI) 선택


AWS 사이트에서 EC2 대시보드로 들어간 후 인스턴스 시작을 선택합니다.

프리 티어 사용 가능한 AMI중에 저는 Amazon Linux 2를 선택했습니다. 프리 티어는 AWS를 가입한지 얼마 안지난 계정이 프리 티어 서비스를 이용할 경우 1년동안 무료로 AWS를 사용할 수 있습니다. 무료로 가상 컴퓨터를 얻는 거예요. 엄청나죠?

Amazon Linux 2는 설명에 EC2에 최적화돼있다고 적혀있어서 골랐습니다. 그리고 Amazon Linux 2는 CentOS를 기반으로 만들어졌다고 합니다. 명령어를 입력할 때 필요한 내용이니 기억해 두는 게 좋습니다.

2. 인스턴스 유형 선택


인스턴스는 애플리케이션을 실행할 수 있는 가상 서버입니다. 이러한 인스턴스에는 CPU, 메모리, 스토리지 및 네트워킹 용량의 다양한 조합이 있으며, 애플리케이션에 사용할 적절한 리소스 조합을 유연하게 선택할 수 있습니다.

저는 웹서버에 사용할 목적이므로 높은 사양이 필요 없습니다. 프리 티어를 지원하는 t2.micro 유형을 선택하고 다음으로 넘어갔습니다.

3. 인스턴스 세부 정보 구성


이 항목에서 인스턴스의 여러가지 구성을 할 수 있습니다만 우발적인 종료로부터 보호만 선택했습니다.

나머지는 어떤 도움이 되는지 정확히 이해하기 힘들어 그냥 넘어갔습니다.

4. 스토리지 추가


볼륨 유형에 관한 설명 딱히 바꿀건 없습니다. 태그 추가 선택인 다음으로 넘어갑니다.

5. 태그 추가


태그에 관한 설명을 보면 나중에 소유자나 스택 수준을 추적하는데 도움이 된다고 합니다. 적당히 사용할 목적에 맞춰 추가합니다.

저는 키(Name) 값(WebServer)으로 추가하였습니다. 다음, 보안 그룹 구성으로 넘어갑니다.

6. 보안 그룹 구성


인스턴스에 대한 트래픽(*간단한 설명! 웹 서버의 경우에는 브라우저가 서버에 요청하는 명령)을 제어하는 방화벽 규칙 세트입니다. 인스턴스(EC2로 만든 가상 컴퓨터)의 웹 서버 구성이 끝나도 특정 트래픽이 인스턴스에 도달하도록 허용할 규칙 설정이 안되있으면 말짱 도루묵입니다.

기본적으로 SSH(포트 22), HTTP(포트 80), HTTPS(포트 443) 연결을 허용할 수 있도록 구성해야 합니다. SSH 유형은 개발자 PC에서만 접근 가능하도록 허용하는 포트입니다. HTTP 유형은 모두에게 접근 가능하도록 허용하는 포트입니다. HTTPS 유형 또한 모두에게 허용하지만 보안 설정이 되어있습니다.

각 유형에 대한 세부 설정은 보통 유형을 추가하면 알아서 설정이 됩니다. 저는 SSH 유형의 소스만 내 IP로 설정했습니다.

자세한 내용은 Linux 인스턴스의 인바운드 트래픽 권한 부여를 확인하세요.

7. 인스턴스 시작 검토


시작하기를 선택합니다.

7-1. 키 페어


우리가 생성한 Linux(운영체제) 인스턴스에는 암호가 없으므로 인스턴스에 로그인하기 위해 키 페어를 사용합니다. EC2 Linux 인스턴스를 사용하기 위해선 반드시 필요한 파일이죠.

7단계에서 인스턴스 시작을 선택하면 키 페어를 생성하라는 메세지가 나옵니다. 물론 실수로 생성하지 않은 경우에는 Amazon EC2 콘솔을 사용하여 생성할 수 있습니다.

그리고 이건 대부분의 사람에겐 해당하지 않는 내용인데 다른 나라의 컴퓨터로 인스턴스를 접속하려면 그 지역에 해당하는 지역에서 키 페어를 생성해야 합니다. 만약 해외이동이 잦은 분은 참고해야 겠지요? 자세한 내용은 리전 및 영역 설명서를 참고하세요.

Create key pair(키 페어 생성)을 선택하여 키 페어 이름을 입력합니다. 파일 형식에서 피라이빗 키를 저장할 형식을 선택하는데 OpenSSH에서 사용할 수 있는 형식으로 프라이빗 키를 저장하려면 pem을 선택합니다. PuTTY에서 사용할 수 있는 형식으로 프라이빗 키를 저장하려면 ppk를 선택하라고 하는데 저는 PuTTY는 사용해 본적이 없네요.

Create key pair(키 페어 생성)을 선택하여 프라이빗 키 파일을 다운로드합니다. 이때가 프라이빗 키 파일을 저장할 수 있는 유일한 기회인데 아마존은 안전한 장소에 파일을 저장하라고 권유하고 있습니다.

로컬 컴퓨터에서 적절한 키 페어의 보관 위치는 /Users/$USER/.ssh/ 입니다. ‘.ssh’ 디렉토리는 권한 700으로 이 디렉토리를 보호해야합니다.

그리고 아마존은 pem 파일에 사용자만 프라이빗 키 파일을 읽을 수 있도록 권한 설정을 하지 않으면 인스턴스에 연결할 수 없도록 하였습니다.

attrib +r my-key-pair.pem

위 명령어는 윈도우10 cmd에서 권한 설정을 할 때 사용합니다. macOS 또는 Linux 운영체제 컴퓨터에서는 chmod 400 my-key-pair.pem 명령어를 사용하여 설정합니다.


수고하셨습니다! 🙂 이제 여러분은 AWS EC2를 통해 가상 컴퓨터(인스턴스)를 소유하였습니다. 이제 이 컴퓨터는 여러분겁니다! :O

해당 게시글을 그대로 따라 하셨다면 Amazon Linux 2 운영제체 컴퓨터가 생성 되었을겁니다. 이제 차근 차근 웹 서버로 사용하기 위해 인스턴스에 여러 설정들을 해야 합니다. 생각보다 긴 프로젝트가 될 수 있지만 함께 나아가 봅시다.

다음 글에서는 SSH를 사용하여 인스턴스에 연결하는 방법을 알아보겠습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다