Serverless Node.js 스타터
Serverless Node.js Starter
이 가이드에서 다룬 내용을 바탕으로, 앞으로의 프로젝트를 위한 좋은 출발점을 마련하는 것이 합리적입니다. 이를 위해 Serverless Node.js Starter라는 이름의 서버리스 스타터 프로젝트를 몇 가지 만들었습니다. TypeScript를 사용한다면, Serverless TypeScript Starter도 준비되어 있습니다. Python 버전인 Serverless Python Starter도 있습니다. 이 스타터 프로젝트들은 Seed와도 잘 작동합니다. Seed는 Serverless Framework를 위한 완전히 구성된 CI/CD 파이프라인입니다.
Serverless Node.js Starter는 serverless-bundle 플러그인(serverless-webpack 플러그인의 확장)과 serverless-offline 플러그인을 사용합니다. 이 프로젝트는 다음과 같은 기능을 지원합니다:
- Lambda 함수 코드에서 ES6 또는 TypeScript 사용
- Webpack을 사용한 최적화된 패키지 생성
- 로컬에서 API Gateway 실행
serverless offline start
명령어 사용
- 단위 테스트 지원
npm test
를 실행하여 테스트 실행
- 적절한 오류 메시지를 위한 소스맵 지원
- 오류 메시지가 올바른 줄 번호를 표시
- CloudWatch에서도 작동
- 스테이지별 환경 변수 추가
- Webpack 또는 Babel 설정을 관리할 필요 없음
데모
이 서비스의 데모 버전은 AWS에 호스팅되어 있습니다 - https://z6pv80ao4l.execute-api.us-east-1.amazonaws.com/dev/hello
.
그리고 여기에 해당하는 ES7 소스 코드가 있습니다.
export const hello = async (event, context, callback) => {
const response = {
statusCode: 200,
body: JSON.stringify({
message: `Go Serverless v1.0! ${(await message({ time: 1, copy: 'Your function executed successfully!'}))}`,
input: event,
}),
};
callback(null, response);
};
const message = ({ time, ...rest }) => new Promise((resolve, reject) =>
setTimeout(() => {
resolve(`${rest.copy} (with a delay)`);
}, time * 1000)
);
요구사항
- AWS CLI 설정하기
- Serverless Framework 설치하기
npm install serverless -g
설치
새로운 Serverless Framework 프로젝트를 생성하려면 다음 명령어를 실행하세요.
$ serverless install --url https://github.com/AnomalyInnovations/serverless-nodejs-starter --name my-project
새로 생성된 디렉토리로 이동합니다.
$ cd my-project
Node.js 패키지를 설치합니다.
$ npm install
사용법
로컬에서 함수를 실행하려면:
$ serverless invoke local --function hello
serverless-offline을 사용해 API Gateway를 로컬에서 시뮬레이트하려면:
$ serverless offline start
테스트를 실행하려면:
$ npm test
테스트 실행에는 Jest를 사용합니다. 테스트 설정에 대해 더 알아보려면 여기를 참고하세요.
프로젝트를 배포하려면:
$ serverless deploy
단일 함수를 배포하려면:
$ serverless deploy function --function hello
프로젝트에 환경 변수를 추가하려면:
env.example
파일을.env
로 이름을 변경합니다.- 로컬 스테이지에 필요한 환경 변수를
.env
파일에 추가합니다. serverless.yml
파일에서environment:
블록의 주석을 해제하고, 환경 변수를${env:MY_ENV_VAR}
형식으로 참조합니다. 여기서MY_ENV_VAR
는.env
파일에 추가한 변수입니다..env
파일을 커밋하지 않도록 주의하세요.
For help and discussion
Comments on this chapter