-
CloudWatch 활용하기 2편 | 클라우드워치로 Lambda 반복 실행하기Serverless 2018. 11. 14. 23:09
CloudWatch Event
클라우드 워치를 통해서 20분마다 특정 데이터를 DynamoDB에 집어넣는 배치프로그램을 만들어보겠습니다.
대충 위와 같은 구조입니다.
클라우드워치 이벤트를 만들어봅시다
클라우드워치 > Events > Rules로 들어가서 룰을 생성합니다
Target 추가를 선택하면 람다함수 이름을 넣으라고 합니다.
그럼 먼저 람다 함수를 작성해봅시다!
Lambda 함수 작성
const AWS = require('aws-sdk'); AWS.config.region = 'ap-northeast-2'; const docClient = new AWS.DynamoDB.DocumentClient(); const BATCH_TABLE_NAME = 'batch-processing'; exports.handler = async (event) => { const timestamp = new Date().getTime(); const randomNumber = Math.floor(Math.random() * 1000); const params = { TableName: BATCH_TABLE_NAME, Item: {timestamp, randomNumber}, }; try { await docClient.put(params).promise(); } catch (err) { console.error('error when saving', err.message); throw err; } console.log('success', params); return params; };
테스트 결과는!!
당연히 실패입니다..
아직 DB 테이블을 안 만들었으니까요.
DynamoDB 테이블 생성
그럼 DynamoDB 테이블을 만들어봅시다.
테이블 생성을 선택하고
테이블 이름과 Primary Key를 넣어줍니다.
테이블 생성 끝입니다!
(DynamoDB는 NoSQL이고 스키마가 없어도 되기 때문에 Key를 제외한 나머지 Column을 미리 정의할 필요는 없습니다.)
다만, 테스트에 돈 쓸 필요는 없으니 capacity(용량)을 1로 내려줍시다.
테이블이 잘 생성되었습니다.
Lambda Function Test
이제 다시 람다함수를 테스트해봅시다.
이제 DB 테이블을 확인해볼까요?
데이터가 잘 들어갔습니다.
람다와 디비는 잘 연결이 되었고,
이제 클라우드워치에서 주기적으로 이벤트를 발생시켜 람다함수를 실행시켜주기만 하면 됩니다.
CloudWatch Event
위와 같이 클라우드워치 event rule을 만듭니다.
작성했던 람다 함수 이름을 입력하면 됩니다.
Cron expression 10,30,50 * * * ? * 은 매시 10분, 30분, 50분마다 실행한다는 뜻입니다.
(지금은 매시마다 실행하기 때문에 상관이 없지만, 시간을 설정하실 때 주의하실 점은 GMT 기준이기 때문에, 한국 시간으로는 +9를 하셔야합니다.
c.f. AWS Cron & Rate)
이벤트가 생성되었습니다.
이제 시간이 지나면 DB쪽에 데이터가 쌓이게 됩니다.
'Serverless' 카테고리의 다른 글
[AWS Re:Invent 2018 정리 (1)] AWS Lambda 로그 개선 (0) 2018.12.04 AWS API Gateway 인증(Authorizers) 활용하기 (0) 2018.11.15 CloudWatch 활용하기 1편 | 클라우드워치에서 Lambda 로그 확인하기 (0) 2018.11.14 AWS Lambda로 랜덤아재개그 카카오 플러스친구 만들기 6편 | 텍스트로 반응하는 API (2) (0) 2018.11.08 AWS Lambda로 랜덤아재개그 카카오 플러스친구 만들기 5편 | 텍스트로 반응하는 API (1) (0) 2018.11.07 댓글