AWS ES2 서비스로 할당 받은 리눅스 인스턴스에 Express 서버를 설치하고 클라이언트에서 서버로 데이터 요청을 통해 로그인하는 실습을 진행 했습니다.
우선 인스턴스에서 Session Manager을 이용해 가상 컴퓨터에 연결합니다.
터미널 창이 뜨면 bash로 변경하여 홈 디렉토리로 이동했습니다.
현재 개발환경이 구성되어 있지 않기 때문에 패키지 관리자 apt를 통해 업데이트를 진행합니다.
$ sudo apt update
Express를 사용하기 위해서 Node.js를 설치 합니다. 참고
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm 버전 확인을 통해서 설치된 것을 확인하고 apt를 통해 npm을 설치 합니다.
깃헙 저장소에서 클라이언트와 서버를 받아 오기 위해 git 환경 설정을 해줍니다. 비대칭 키인 ssh를 생성합니다. 명령어를 입력하면 비밀키와 공개키가 생성됩니다.
$ ssh-keygen
"~/.ssh/" 경로에 있는 공개키를 읽어와 깃허브에 등록해 줍니다.
$ cat ~/.ssh/id_rsa.pub
SSH를 이용하여 저장소의 자료를 클론합니다.
$ git clone git@github.com:lsx2003/fe-sprint-practice-deploy.git
우선 서버가 설치된 디렉토리로 이동해서 패키지를 설치합니다.
$ npm install
그리고 관리자 권한으로 서버를 열어주면, Express 서버가 잘 동작하는 것을 확인할 수 있습니다.
$ sudo npm run start
AWS에서 할당 받은 리눅스 인스턴스에 간단하게 밴엑드 배포를 해보았습니다. SSH 터널을 생성하기 위해 원격 호스트에 포트 포워딩을 사용할 수 있는 AWS Systems Manager의 기능인 세션 관리자를 사용할 수 있었습니다. 세션 관리자는 Systems Manager 인프라를 사용하여 인스턴스와 SSH와 유사한 세션을 생성합니다.
세션 관리자는 실제 SSH 연결을 터널링하므로 로컬 시스템에서 직접 Virtual Private Cloud(VPC) 내의 다른 리소스로 터널링할 수 있습니다. 공식문서에서 세션 관리자는 다음과 같은 이점이 있다고 합니다.
[보안 강화]: 이 구성은 1개의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스(배스천 호스트)만 사용하여 아웃바운드 포트 443을 Systems Manager 인프라에 연결합니다. 이렇게 하면 인바운드 연결 없이 세션 관리자를 사용할 수 있습니다. 로컬 리소스는 Bastion 호스트 역할을 하는 인스턴스의 인바운드 트래픽만 허용해야 합니다. 따라서 인바운드 규칙을 공개적으로 열 필요가 없습니다.
[사용 편의성]: 로컬 시스템에서 프라이빗 VPC의 리소스에 직접 액세스할 수 있습니다.