[IAC] Lambda Code 로 관리하기

Typescript와 Node.js를 기반으로 AWS Lambda를 사용하여 Cron Job을 관리하는 방법을 안내해 드립니다.

회사에서 구성되어있던 Cron Job 들을 AWS Lambda 로 옮기는 작업들을 진행하고 있다. Typescript, Nodejs 기반으로 가능한 방법을 작성하였다.
 
0. 준비사항
Lambda 배포시에 필요한 인증 정보가 필요하다. AWS 의 Access Key ID, Secret Access Key 가 필요하다.

npm install -g serverless

serverless config credentials --provider aws --key [YourKeyID] --secret [YourSecretKey]
 

1. 배포 템플릿 구성
AWS Lambda 에 필요한 배포 템플릿을 구성한다.

serverless create --template aws-nodejs
 

템플릿(serverless.yaml) 을 다음과 같이 구성한다.

service: SampleLambda
plugins:
 \- serverless\-plugin\-typescript
 \- serverless\-offline

provider:
 name: aws
 runtime: nodejs12.x
 stage: dev
 region: ap-northeast-2

functions:
 sample:
 handler: src/index.handler

 events:
 \- http:
 path: sample
 method: post
 

2. package.json 구성 Typescript 는 컴파일 시에만 사용되고, 실제로는 JS 가 배포되므로, devDependencies 위주로 구성한다.

 "devDependencies": {
 "@types/aws-sdk": "^2.7.0",
 "@types/node": "^10.0.0",
 "serverless-offline": "^6.8.0",
 "serverless-plugin-typescript": "^1.1.9"
 },
 

3. API 함수 작성

import { Handler, Context } from "aws-lambda";

interface LambdaResponse {
 statusCode: number;
 body: string;
}

const handler: Handler = async (
 event: any,
 context: Context
): Promise\ => {
 const data = {
 data: {
 name: "Heejae",
 },
 };

 const response: LambdaResponse = {
 statusCode: 200,
 body: JSON.stringify(data),
 };
 return response;
};

export { handler };
 

4. serverless 테스트 해보기

serverless offline
 

5. serverless 배포하기

serverless deploy
 

6. 정상적으로 API Gateway, Lambda 가 구성된다.


이것도 읽어보세요