IT,프로그래밍/AWS

[ AWS + Serverless.js ] 2. 환경설정

우선 도커를 이용해서 Mysql 을 설치해주도록 하자.

도커 mysql 링크

 

이미지를 받은 후 run 해준다.

 

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password --name minjunKim-mysql -v /Users/minjunKim/datadir:/var/lib/mysql mysql:8.0.17 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

이후 mysql에 접속한뒤에 DB 를 만들어주자

방금 만든 testdb 에 table을 하나 만들어 주자.

 

create table test( id int unsigned auto_increment comment 'ID (PK)'  primary key, name varchar(255) not null comment '이름', memo varchar(255) not null comment '메모')comment 'test' collate=utf8mb4_unicode_ci;

Nodejs 템플릿 설치

sls create -t aws-nodejs -p ./sample

를 쳐서 보일러 플레이트를 설치하도록 하자.

그러면 하위 폴더에 sample이 나타날 것이다.

먼저 npm init을 해준뒤에 진행하자.

이제 필요한 모듈을 설치해보자

Babel설정

 

 

npm install --save source-map-supportnpm install --save-dev @babel/core @babel/plugin-transform-modules-commonjs @babel/preset-env babel-jest babel-loader babel-plugin-source-map-support babel-plugin-transform-runtime babel-preset babel-preset-es2015

설치후에 sample 프로젝트 폴더에서 .babelrc 파일을 만들어준다.

 

 

{ 
	"plugins": ["source-map-support"], 
	"presets": [   
		[     "@babel/preset-env",     
			{
            	"targets": {
                	"node": "10" 
                 } 
            }   
		] 
	]
}

Jest 설정

 

npm install --save-dev jest

jest를 설치해 주자.

 

이후 src와 test 폴더를 루트 위치에 만들자.

test : 테스트 코드를 위한 파일

src : 실제 백앤드를 구성하는 코드 작성

이제 테스트 코드가 잘 동작 하는지 확인해 보자.

위와 같이 test 파일을 작성후

 

const arr = [1, 2]test('테스트', () => {   expect(arr.length).toBe(2)})

소스를 넣어서 작동 유무를 확인 해보자

그런데 여기서 그냥 Jest 라고 치면 아래와 같은 오류가 발생한다.

 

jest: command not found

 

해결링크 : https://stackoverflow.com/questions/50138532/command-not-found-jest

 

command not found: jest

I have a test file like so: (I am using create-react-app) import React from 'react'; import ReactDOM from 'react-dom'; import App from './components/Calculator'; import { getAction, getResult } f...

stackoverflow.com

./node_modules/.bin/jest 로 실행시 동작한다.

이것을 jest 만으로 실행을 하려면 추가적으로 Jest-cli을 설치해 줘야한다.

 

 

npm install jest-cli --save-dev

Package.json의 script 까지 손봐주고 나면 정상적으로 cli 로 jest사용이 가능하다!

그리고 테스트 코드 역시 제대로 작동한다!

serverless 플러그인 설치

webpack

 

npm install --save webpack

 

serverless-mysql

 

npm install --save serverless-mysql

 

serverless-aws-alias

 

Serverless Deploy시에 alias옵션으로 dev와 prod로 나뉘어서 반영할수 있도록 별칭을 람다에 만들어서 관리하게 해주는 핵심 라이브러리다.

 

npm install --save-dev serverless-aws-alias

 

serverless-domain-manager

 

Route53에서 등록된 도메인의 레코드 생성과 yml 설정안에 옵션으로 Cloud Front 를 자동으로 생성해준다.

 

npm install --save serverless-domain-manager

 

serverless-offline

람다에 배포하기전 먼저 로컬에서 서버를 띄워서 yml에 정의된대로 람다를 테스트 할 수 있도록 만들어주는 플러그인

 

npm install --save-dev serverless-offline

 

serverless-webpack

 

npm install --save-dev serverless-webpack webpack-node-externals

 

설치완료후 sample밑에 webpack.config.js 설정 파일을 만들어서 저장한다.