# TIL-20210420
# Today
- aws EC2, S3
# Content
# aws?
AWS(Amazon Web Services)는 아마존에서 제공하는 cloud Computing 서비스로,
amazon의 각지역의 IDC를 통해 컴퓨팅 서비스를 제공하며, 서버, 데이터베이스, 데이터 처리, 등 컴퓨팅 자원으로 할 수있는 많은 기능들이 있다.
EC2는 가상 instance를 통해 사용자가 가상 컴퓨터를 임대 받아 그 위에 자신만의 컴퓨터 애플리케이션들을 실행할 수 있게 한다, S3는 저장소의 역할을 하면서 정적파일 배포가 가능한 서비스이다.
# EC2 (Electric compute cloud)
아마존 웹 서비스는 전세계적으로 IDC 서버를 가지고 있으며, 해당 서버를 통해 cloud computing 서비스를 제공한다.
IDC에서 instance를 생성하여, 개인에게 필요한 부분과 필요한 스펙의 computing자원을 제공 각 개인은 제공된 computing자원을 통해 자신의 컴퓨터 애플리케이션을 실행하게 된다.
backend는 nodejs(express)로 구성되어 있기 때문에, EC2를 이용하여 배포할 수 있다.
이미 AWS 계정이 있다고 생각하고 간단한 과정을 살펴보면
- EC2를 생성한다.
EC2는 OS부터 하드웨어 스팩까지 다양한 부분을 커스텀 할 수 있다.
여기서는 가장 낮은 수준의 EC2를 사용할 것이며, toy나 작은 서비스는 이정도 스펙을 가지고도 충분히 운영 할 수 있다.
(트래픽이나 서버 자원이 많이 필요한 경우는 다를 수 있다.)
- EC2 OS 선택
OS는 여러가지가 있으며,
image
라는 이름을 통해 선택 할 수 있다.
image
라는 이름에서 볼 수 있듯이, 내가 필요한image
를 커스텀해서 나중에 instance를 새로 만들 때 적용할 수도 있다.
Ubuntu를 사용하여 deploy하기로 해서 Ubuntu pre tier를 사용하였다.
- instance type
인스턴스 유형은 간단하게 정리하면 하드웨어 스펙을 정하는 것이다.
cpu, memory등 실제 컴퓨팅 자원이 얼마나 필요한지를 예측하여 컴퓨팅 스펙을 정하는 과정이다.
이 과정에서도 pre tier(t2.micro)를 사용하였다.
나머지 과정은 크게 선택하지 않아도 EC2를 구성하는데는 큰 어려움이 없다.
이후에 실제 프로젝트단계에서는 내가 원하는 스펙에 따라 네트워크 및 다른 AWS 서비스와의 상관 관계에 따라 설정해야 할 값들이 있을 수 있다.
지금은 EC2를 열고 내 서비스를 Public을 통해 접근 가능하게 하는것이 목표이기 때문에 넘어가도록 한다.
이제 인스턴스 생성을 누르면 인스턴스가 생성 된다....?
아직 인증서 생성이 남았다.
인스턴스를 생성하면 기본적으로 인스턴스에 접속할 수 있는 방법이 SSh를 통한 방법이 있다.
ssh는 인증서를 통한 사용자 인증 방식으로 앞으로 사용할 인증서를 인스턴스 생성 직전에 설정 할 수 있다.
인증서를 만들거나, 기존 인증서가 있다면 그걸 사용할 수 있다.
인증서 생성은 내가 원하는 이름을 넣어 생성하면 만들 수 있다.
생성된 인증서는 다시 얻을 수 없으니 관리에 유의한다.
- instance 환경 설정
- instance에 접속하기
이제 터미널(Macbook)을 통해 EC2 instance에 접속할 수 있다.
접속하기 위해서는 인증서 사용자 권한을 설정해주고 endpoint를 통해 접속 할 수 있다.
접속 방식은 instance 목록 상단에 연결 버튼을 누르면
인스턴스에 연결할 수 있는 방식이 여러가지 있으며,
여기서 ssh연결을 누르면 상세한 설명을 볼 수 있다.
ssh연결이 완료되었다면,
내가 만든 프로젝트를 instance안으로 복사해와야 한다.
git을 통해 repo를 받아와 실행하는 방식을 사용해 프로젝트 파일을 받아 왔다.
- instance에 서버 환경 설정
instance는 이제 막 os를 설치한 컴퓨터와 같다.
우리는 막 산 컴퓨터에 하드웨어 설정도 해주고 드라이버도 설치하듯이,
istance안에서도 nodejs 서버를 돌리기 위한 설정을 간단하게 해준다.
- apt명령어 최신화
sudo apt updata
- npm 설치
sudo apt install npm
이제 npm을 설치완료하면 nodejs 서버를 구동하기 위한 기본적인 준비는 끝났다. 내 프로젝트를 받아와 테스트로 실행해 보자
- git ropo clone
git clone repoURL; cd repo
내 프로젝트 파일을 클론하고 프로젝트 경로로 간다.
경로에서 npm i
을 실행해 노드 script 구동환경을 만들어 준다.
sudo npm start
이제 서버가 구동되는 것을 볼 수 있다.
이제 instance public domain을 통해 접속을 하면, 장시간 로딩 끝에 접속이 불가능하게 된다.
이는 isntance 보안 그룹 설정 때문인데, aws console을 통해 EC2 보안 그룹을 변경해준다.
기본적으로 설정된 보안 그룹은, EC2목록에 각 instance에 할당된 보안그룹 필드 값을 확인하면 된다.
보안 그룹 설정을 편집해서 기본적으로 설정되 있는 ssh 이외에 http설정을 추가 해준다.
유형는 http
, source는 위치무관
를 설정하면
해당 보안그룹의 instance는 http요청을 어떤 컴퓨터에서도 받을 수 있게 된다.
이제 다시 public 도메인을 통해 ec2에 접속하면 내가 만든 서버의 get요청을 보내게 된다.