[AWS] S3, EC2, RDS 생성 방법 및 RDS 접근 에러 핸들링

유자·2020년 12월 18일
0

AWS Amazon Web Services

아마존 웹 서비스는 아마존닷컴의 클라우드 컴퓨팅 사업부다. 아마존 웹 서비스는 다른 웹 사이트나 클라이언트측 응용 프로그램에 대해 온라인 서비스를 제공하고 있다. - 위키백과

배포를 공부하며 AWS를 사용해보게 되었다.
배포를 위한 다양한 클라우드 컴퓨팅 플랫폼이 존재하는데, 대표적으로 Google Cloud Platform(firebase), Microsoft Azure, Amazon Web Services 가 있다.
오늘은 Amazon Web Services, AWS의 사용법에 대해 포스팅하려고 한다.

AWS에는 수많은 기능들이 있는데, 그 중에서 S3, EC2, RDS 에 대해서 볼 것이다.

시작하기에 앞서 간단하게 정리하자면,
S3는 Simple Storage Service의 약자로 클라우드 저장소이다. 구글드라이브나, 드롭박스같은 저장소이다. 프론트엔드에서 주로 사용한다.
EC2는 Elastic Compute Cloud의 약자로 클라우드 컴퓨터, 즉 가상 컴퓨터이다. 백엔드의 서버를 구동하기위해 사용한다.
RDS는 Relational Database Service의 약자로 클라우드 데이터베이스이다. 서버와 통신할 수 있는 데이터베이스를 구동하기위해 사용한다.

1. AWS 회원가입

승인에 시간이 꽤 걸리니 미리 가입해놔야 한다.
가입한 시점에서 1년동안은 프리티어로 무료로 서비스 이용이 가능하다. (한정적인 기능만 무료로 사용 가능)

2. 프론트엔드 파일들은 어디로? S3!

리액트 앱으로 작업을 하고 서버와 연결시키기 위해서는 build라는 작업을 거쳐 하나의 압축된 형태로 폴더를 만들어내야 한다.
이 빌드된 폴더의 내용을 클라우드 저장소에 올리면 로컬호스트에서만 확인할 수 있던 페이지가 아마존에서 제공하는 퍼블릭 주소와 바인딩된다.

2.1. 버킷 생성하기

  • AWS 로그인 후 서비스 - 스토리지 - S3 를 찾는다.
  • 왼쪽 메뉴바에서 버킷을 클릭하고 나온 화면에서 버킷만들기를 찾아 클릭한다.
  • 버킷 이름과 지역(리전)을 설정하고, 퍼블릭 액세스 차단 설정을 한다. 시험 삼아 만들어보았을 때는 모든 퍼블릭 액세스 차단의 체크를 해제하였다. 즉 모든 퍼블릭의 액세스를 허용시켰다.
  • 버킷 만들기 클릭 하면 화면이 전환되고, 생성된 버킷을 목록에서 확인할 수 있다.
  • 생성된 버킷의 이름을 누르면 상세 페이지로 이동된다.
  • 상세 페이지의 객체탭에서 리액트의 빌드된 내용을 업로드 한다.
  • 속성탭에서 아래로 스크롤을 내리면 정적 웹 사이트 호스팅이라는 섹션이 있다. 편집을 눌러 상세창에서 호스팅을 활성화해주고, 호스팅 유형은 정적 웹 사이트 호스팅으로 바꿔준다. 인덱스 문서와 오류 문서는 임의로 지정해준다. 인덱스 문서는 보통 index.html 이렇게 짓는다.
  • 설정 후 변경사항을 저장하면, 버킷 웹 사이트 엔드포인트에 적혀 있는 주소로 리액트로 설계했던 클라이언트에 접근할 수 있음을 확인할 수 있다.

3. 서버 PC를 만들어보자. EC2

  • AWS의 메인메뉴에서 서비스 - 컴퓨팅 - EC2를 찾는다.
  • 왼쪽 메뉴바에서 인스턴스를 클릭하고 나온 화면에서 인스턴스 시작을 찾아 클릭한다.
  • 프리티어 사용 가능 OS를 잘 찾아서 사용한다. 이번 테스트에서 사용한 OS는 Ubuntu Server 20.04 LTS (HVM), SSD Volume Type, 64비트(x86)이다.
  • 그 다음은 인스턴스 유형 선택이 나온다. 다양한 스펙을 가진 서버 PC를 구성할 수 있다.(CPU,메모리, 스토리지, 네트워킹 용량 등) 이번 테스트에서는 프리티어가 사용할 수 있는 스펙을 선택했다.
  • 검토 및 시작 클릭 후 시작하기를 누르면, 기존 키 페어 선택 또는 새 키 페어 생성이라는 모달창이 뜬다.
  • 이것은 임대한 가상 PC에 접근할 수 있도록 하는 키를 만들어준다. 새 키 페어 생성을 고르고, 키 페어 이름을 설정해준 후, 다운로드 받는다.
  • .pem 파일이 다운로드 될 것이고 저장 위치를 알아놓는다. 인스턴스 시작을 누른다.
  • 설정이 완료되고 인스턴스의 목록이 나오면, 새로 생성된 인스턴스의 이름을 알기 쉽게 바꾼다.
  • 인스턴스 목록 상단에서 연결이라는 버튼을 클릭하면, 가상 pc와 로컬 pc를 연결 할 수 있는 방법이 설명되어져 있다. (CLI)
  • 연결하기 위해서는 해당 인스턴스를 선택했을 때, 상세 창에서 확인할 수 있는 IPv4 퍼블릭 IP 주소와, 다운로드 받은 .pem파일의 경로가 필요하다.

3.1. 터미널에서 연결 세팅하기

  • .ssh 가 없을 시엔 $ mkdir .ssh 로 만든다.
  • .ssh 폴더로 이동한다.
  • 앞서 다운받은 pem 파일을 ssh 폴더 안으로 이동시킨다. $ mv ~/Downloads/(파일이름.pem) ./
  • 키에 권한을 부여한다. $ chmod 400 (파일이름.pem)
  • 가상 PC 접속한다. $ ssh -i ~/.ssh/(파일이름.pem) ubuntu@(IPv4 퍼블릭 IP 주소)
  • 최초 접속 시 물어보는 질문에 yes 를 해주면 접속 완료.
  • 가상 PC의 서버 환경을 만들어주면 끝. node.js라면 node.js를 설치하면 된다.
  • 구글링 how to install node on ubuntu 18.04(가상 pc 버전) 참고 링크
$ sudo apt update
$ sudo apt install nodejs
$ sudo apt install npm

$ nodejs -v 
  • 모두 완료되면 깃의 레포를 클론해온다.
  • 이 다음부터는 똑같이 서버를 실행하면 된다.

3.2. Security Group 설정하기

  • 인스턴스 목록에서 해당 인스턴스를 찾은 후, 스크롤을 오른쪽으로 밀어보면 보안 그룹을 찾을 수 있다. 클릭해서 상세창으로 들어간다.
  • 인바운드 설정을 해준다. EC2에 접속할 때, http 요청(80)을 허용할 것이고, 사용자 지정 TCP 규칙을 사용해 서버구축 때 사용했던 포트 번호도 규칙에 넣어준다.
  • (IPv4 퍼블릭 IP 주소):(포트번호)가 서버의 주소가 된다.

3.3. 터미널이 꺼져도 서버는 꺼지지 않게 하기 PM2

4. DB를 만들어보자. RDS

  • AWS의 메인메뉴에서 서비스 - DB - RDS를 찾는다.
  • 데이터베이스 생성하기를 클릭하고 프리티어에 적용될 수 있는 엔진 옵션을 선택한다. 테스트는 Mysql을 사용했다. 버전은 8.0.11
  • DB 인스턴스 식별자, 마스터 사용자 이름(마스터 유저 네임), 마스터 암호를 설정해준다. mysql 접속할 때 사용하는 이름과 암호이다.
  • 네트워크 및 보안에서 퍼블릭 액세스 가능성을 체크해준다. 테스트에서는 를 선택했다.
  • 데이터베이스 이름,포트를 설정해준다. 여기서 데이터베이스 이름은 mysql에서 사용되는 데이터베이스의 이름이다. 포트는 기본 3306이지만 변경해도 좋다.
  • 후에 데이터베이스 생성하기 클릭. 생성되는데 시간이 꽤 걸린다. (대략 20분정도?)

4.1. 로컬에서 RDS 접근할 수 있도록 연결하기

  • 생성이 완료되면 데이터베이스 목록에서 DB 식별자의 해당 DB를 클릭해 상세창으로 넘어간다.
  • 연결 & 보안탭에서 엔드포인트가 주소가 되고, 설정한 포트까지 확인할 수 있다.
  • 구성탭에서는 마스터 유저 네임을 확인할 수 있다. 위에서 설정한 마스터 암호도 기억하고 있어야 하며, 기억하지 못한다면 DB 인스턴스 수정 으로 들어가 마스터 암호를 지정해줄 수 있다.
  • 터미널 창으로 돌아간다.
  • mysql을 방금 설치했다면 $ mysql.server start 작성 한다. 우분투나 윈도우에서는 다른 방식일 수 있으므로 상황에 따라 알아봐가며 작성이 필요하다.
  • $ mysql -u (마스터 유저 네임) --host (엔드포인트) -P (포트넘버) -p (마스터 암호) 작성하면 mysql 접속 가능하다.

4.2. 에러 핸들링 : mysql ERROR 2003 (HY000)

필자의 경우, 바로 위의 스텝으로 절차를 진행 후 mysql에 접속하려고 하면 한참 후에 ERROR 2003이 발생했다.
여기서 중요한건 에러가 바로 발생하지 않으니, 패스워드를 입력 후 기다려야 한다는 것이다.
필자는 잘못 설치 된 줄 알고 비밀번호도 바꿔서 다시 시도해보았고.. 계속 안돼서 RDS 삭제 후에 다시 설치해보려고 했으나, 인고의 시간 끝에 에러가 떴다!

위 에러는 보안그룹 설정에서 EC2가 RDS가 사용하고 있는 포트 번호의 접근을 허용해주지 않았기 때문이다.
이미 생성헀던 EC2의 보안그룹 설정으로 들어가, 인바운드설정에서 사용자 지정 TCP 규칙으로 해당 포트번호를 넣고, 소스 또한 모든 접속 허용으로 처리 해주면 에러가 해결 된다.

여기까지 AWS 사용법을 블로깅해보았다.

배포 관련 참고

profile
No one left behind

0개의 댓글