[AWS] CloudWatch로 배치작업 처리하기
서비스를 구현하다보면 이게 즉시성 API만 필요한 것이 아니라, 정해진 시간에 맞춰서 로직을 실행해야 할 경우가 아주 빈번하다.
하루가 지날때마다 이메일을 보낸다든지, 자동결제를 수행한다든지 하는 그런 것들 말이다.
cloudwatch는 생각보다 방대한 기능들을 포함하고 있는 서비스다.
단순히 로그만 찍는 게 아니라, 이벤트를 등록해서 조건에 따라 특정 람다가 호출되도록 할 수 있다.
람다를 쓰니 배치서버가 죽을 일도 없고, 설정도 편하고... 정말 좋다.
이왕이면 이런걸 적극 활용하도록 하자
이벤트-규칙에 들어가서

규칙 생성으로 들어간다.

여기서 어떤 시간 조건에 맞춰 서비스가 호출되게 할지 지정할 수 있다.
고정 비율로 저렇게 해두면 5분마다 계속 호출되게 할 수 있는 것이고,
cron 표현식을 사용하면 좀더 세밀한 일정 처리가 가능하다.
이건 총 6개로 구분된 토큰을 받는데, 순서대로
분 시간 날짜 월 주 연도를 나타낸다.
그리고 와일드카드는 *로 나타내는데, 날짜와 주를 동시에 *로 쓸수 없다는 이상한 제약이 있다. 그럴때는 하나를 ?로 대체해야 한다.
그래서 아래의 크론식은 4시 00분마다 호출되는 스케줄이 된다.

또 저기에다 1시간마다 반복되게 하고 싶다면 슬래시를 붙이고 간격 값을 붙여주면 된다.

골자는 이렇고, 이외의 사항은 아래 문서를 참조하길 바란다,
https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions
그리고 저 값들은 다 UTC 값이라 한국시간에 맞추려면 손으로 뺄셈을 해줘야 한다는 점을 잊지 않길 바란다.
돌아가서, 나는 그냥 1분마다만 돌게 해뒀다.

다 됐다면 트리거로 걸어줄 람다를 지정한다.

람다 소스는 별거없다.
그냥 다이나모에 더미데이터만 막 넣어두도록 해뒀다.

그리고 생성하면 다음과 같이 규칙이 생성될 것이다.

그리고 좀 기다려보면 1분마다 저렇게 람다가 실행돼서 값을 넣어줄 것이다.

그렇다.