[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 가 구성된다.

이것도 읽어보세요