본문 바로가기
Infra & Cloud/AWS (아마존 웹 서비스)

[AWS] AWS로 서버 배포(Deployment) (1) : EC2 인스턴스 생성

by newstellar 2021. 9. 10.
반응형

[AWS] 1. EC2 입문 : 인스턴스 생성

 

0. AWS 가입하기

  • AWS는 가입 후 1년까지 매우 낮은 수준의 가상 컴퓨터를 무료로 제공하는 프리티어 (Free Tier) 서비스를 제공하고 있습니다. (단, 가입 시 1$가 소비되니 넉넉하게 가입 시 등록할 카드의 잔고를 1$ 이상으로 준비할 것) 무료 클라우드를 제공해주는만큼 성능이 그다지 뛰어나지 않고 한 달에 750시간의 제한이 있다는 점에서 웹 서비스를 배포하려고 준비하는 분들은 개발 단계가 아니라면 티어를 높이는 걸 추천합니다.

  • 백문이 불여일견이니 우선 aws에 접속하여 가입을 해봅시다!

  • 대한민국 서울에 ap-northeast-2 서버를 할당받아 쓸 수 있습니다.

 


1. EC2 (Elastic Compute Cloud) 접근하기

  • AWS에서 가장 많이 쓰이는 EC2를 검색하여 들어가봅시다. (사실 가장 많이 쓰이는 서비스기 때문에 제일 위의 추천 목록에 뜰 것입니다.)

  • EC2란 Elastic Compute Cloud 글자 그대로 Amazon이 확장가능한 컴퓨팅 용량과 서버를 제공하는 클라우드 서비스입니다.

  • AWS 말고도 Azure, GCP 등의 클라우드 서비스가 존재하는데, 각자의 장단점이 존재하니 자신의 서비스에 맞는 것을 선택합시다.

여담으로 Azure는 Microsoft에서 제공하기 때문에 윈도우서버 이미지와 가장 최신 버젼인 윈도우10 이미지를 제공해준다는데 누가 배포 서버를 윈도우로...

 

 


 

2.인스턴스 생성

(1) 인스턴스 시작

  • EC2를 클릭하여 들어오면 왼쪽 메뉴에서 인스턴스를 클릭하여 인스턴스 시작 버튼을 누릅니다.

 

 

(2) AMI (Amazon Machine Image)

  • 프리 티어에서 사용가능한 Amazon Linux 2 AMI (HVM), SSD Volume Type를 선택합니다.

 

 

(3) 인스턴스 유형 선택

  • 만약 프리티어 사용자라면 선택지는 하나 뿐입니다. t2.micro 사용하자. CPU 수가 1이고 메모리가 1GB인데, 요새 나오는 스마트폰의 메모리가 6GB라는 것을 생각하면 몇 년 전 휴대폰만도 못한 컴퓨터입니다.

  • 인스턴스 세부 정보 구성 (Configure Instance Details) 버튼으로 세부 사항을 설정할 수도 있는데, 프리 티어에서는 그냥 스토리지 추가 단계로 넘어가도 좋습니다. 단, 인스턴스 세부 정보 구성 버튼을 누르지 않으면 바로 다른 설정 없이 후술할 (7)번 단계인 인스턴스 시작 검토로 넘어가게 되니 꼭 인스턴스 세부 정보 구성을 누르도록 합니다.

 

 

(4) 스토리지 추가

  • 스냅샷, 스토리지 크기, 볼륨유형, 처리량 등의 설정을 바꿀 수 있습니다. 건드리지 않고 태그 추가로 넘어갑니다.

 

 

(5) 태그 추가

  • 우리가 사용할 수 있는 AWS의 자원들에는 Tag를 달아둘 수 있기 때문에 나중에 어떤 자원인지 한 눈에 알아보기 위해 태그를 설정해두도록 합니다. key - value로 이루어져 있다. (Name - {server_name} 등 자기 마음대로...)

 

 

(6) 보안 그룹 구성 (중요!)

  • 인스턴스에 대한 트래픽을 제어하는 아주 중요한 단계입니다. 분명히 설정을 잘 한 것 같은데 Public IPv4 주소로 들어가려고 해도 브라우저에서 계속 부팅되는 상황도 보안 그룹을 제대로 설정하지 않아 생기는 상황입니다.

  • 들어가자마자 설정되어 있는 SSH 유형의 보안 그룹에는 0.0.0.0/0이라는 주소가 있는데, 이는 모든 IP에서 해당 클라우드 컴퓨터를 이용할 수 있다는 뜻입니다.

  • 다른 사람들이 이용하는 것을 원치 않는다면 (당연한 이야기지만) IP 주소를 자신의 IP 주소로 변경합시다. 소스에서 "내 IP"를 클릭하면 손쉽게 현재 IP로 바꿀 수 있습니다.
    (설명란에 해당 IP가 어디서 사용되는지 적는 것 추천)

  • 인바운드 규칙에는 22번 포트인 SSH, 3306번 포트인 MYSQL/Aurora, 80번 포트인 HTTP, 443번 포트인 HTTPS 등 다양한 유형이 존재합니다. 로컬 컴퓨터를 통해 EC2에 접근하기 위해 SSH 유형에 현재 자신의 IP를 추가해줘야 하며, RDS에 접근하기 위해서 MYSQL/Aurora 역시 추가해줘야 합니다.

  • 또한, 생성된 EC2의 Public IPv4 주소를 인터넷으로 접근하고 싶다면 (가령 http://54.180.155.219 ) HTTP 80번 포트에 IP를 등록해야 하는데, 내 IP만을 입력하면 말 그대로 현재 IP에서만 http://54.180.155.219 에 접근할 수 있습니다. 따라서 모든 IP에서의 접근을 허용하고자 "내 IP" 대신 "위치 무관" 소스를 선택하여 0.0.0.0/0 및 ::/0을 추가합니다.

 

인바운드 규칙에 HTTP 설정 전
(해당 주소로 접근할 수 없다)

 

 

인바운드 규칙에 HTTP 설정 후
(해당 주소로 접근했으나 서버로부터의 응답이 없다.)

 

(7) 인스턴스 시작 검토

  • 지금까지 인스턴스 단계에서 설정한 것들을 한 눈에 살펴볼 수 있습니다. 시작하기 버튼을 누르면 "기존 키 페어 선택 또는 새 키 페어 생성" 이라는 팝업이 뜨는데, 지금은 아무런 기존 키 페어가 없기 때문에 키 페어 이름을 설정한 후 .pem 확장자인 키 페어를 다운로드 받습니다.

 

 

(8) 인스턴스 생성 완료

  • 이제 인스턴스를 시작할 수 있으며, 인스턴스 창에 자신이 태그 추가 단계에서 설정한 Name에 해당하는 인스턴스가 실행중인 것을 볼 수 있습니다. 해당 인스턴스를 클릭하여 이것저것 살펴보도록 합니다.

 

 


3. 인스턴스 연결

인스턴스에 연결하는 방법에는 세 가지가 존재합니다. EC2 인스턴스 연결, Session Manager, SSH 클라이언트를 통한 방법이 그것인데, 저는 Mac OS의 bash (지금은 zsh) Terminal을 자주 사용하기 때문에 굳이 브라우저를 통해 AWS에 접속하지 않더라도 EC2 인스턴스에 접근할 수 있는 SSH 클라이언트 방식을 사용하고자 합니다.

 

(1) SSH 클라이언트 열기

  • terminal, cmd 등 자신의 OS에 부합하는 CLI (Command Line Interface) 엽니다.

 

 

(2) Private Key File 관리

  • 인스턴스 생성 직전에 .pem 확장자를 가진 파일을 다운로드했을텐데 이를 .ssh directory로 옮긴 후 chmod 400 {Name}.pem 명령을 실행하여 키를 공개적으로 볼 수 없게 합니다.

 

 

(3) Public DNS로 인스턴스에 연결

  • 본인에게 할당된 Public IPv4 DNS (ex. ec2-54-180-155-219.ap-northeast-2.compute.amazonaws.com)를 사용하여 인스턴스에 연결합니다. 연결 명령어는 다음과 같습니다.

  • ssh -i "waffle-backend.pem" ec2-user@ec2-{IP주소 : 11-100-111-111 형태}.ap-northeast-2.compute.amazonaws.com

 

 


2021.09.10 - [클라우드 컴퓨팅 (Cloud Computing)/AWS (아마존 웹 서비스)] - [AWS] AWS로 서버 배포(Deployment) (2) : EC2 인스턴스 환경설정 (Git 설치, Python 가상환경, RDS 연동)

 

[AWS] AWS로 서버 배포(Deployment) (2) : EC2 인스턴스 환경설정 (Git 설치, Python 가상환경, RDS 연동)

2021.09.10 - [웹 & 앱 개발] - [AWS] AWS로 서버 배포(Deployment) (1) : EC2 인스턴스 생성 [AWS] AWS로 서버 배포(Deployment) (1) : EC2 인스턴스 생성 [AWS] 1. EC2 입문 : 인스턴스 생성 0. AWS 가입하기 AW..

newstellar.tistory.com

 

반응형

댓글