크론 표현식
크론 표현식은 스케쥴 기반으로 프로그래밍을 하고자 할 때 유용하게 쓰인다.
- 특정 작업을 주기적으로 실행 시키고자 할 때 사용.
예)
AWS CloudWatch에서 Cron Expression을 통해 Events 에 스케쥴을 걸어줄 수 있다.
CloudWatch에서 '매주 월요일 0시 0분 0초' 스케쥴링을 건 결과 모습
만약 잘 못된 cron expression을 입력한다면 예상 Trigger Date
이 보이지 않으며 다음 스탭을 진행하는 과정에서 아래와 같은 오류를 만나게 된다.
Error Message : Parameter ScheduleExpression is not valid
[Fields]
크론 표현식은 보통 6~7 개의 필드가 사용된다.
* * * * * * *
1 2 3 4 5 6 7
- 1 번째 필드
초 Second - 2 번째 필드
분 Minute - 3 번째 필드
시 Hour - 4 번째 필드
일 Day - 5 번째 필드
월 Month - 6 번째 필드
주 Week
요일은 숫자와 문자로 표현 가능하다.- 0-6
- SUN-SAT (case-insensitive)
- 7 번째 필드 (Optional)
년 Year
이를 알기 쉽게 이미지로 표현하자면 아래와 같다.
크론 표현식의 문법을 자세히 살펴보자.
- *
모든 값
예) 초 자리에 위치했을 시 '매 초(ever second)' 를 의미 - -
범위를 지정해 줄 때
예) 1시부터 3시까지 - ?
특정값이 없을 때 - ,
여러 값(Mutiple Values)를 지정해 줄 때
예)MON, WED, FRI
'월, 수, 금 마다'를 의미 - L
Last 마지막을 의미
예)3L
'달의 마지막 수요일'을 의미 - W
Weekday (Mon-Fri) 가장 가까운 평일
예)12W
'이달의 12일과 가장 가까운 평일' 을 의미 - #
Day of Week 몇번째 특정 요일
예)0#3
'세번째 주 일요일'을 의미 - /
증가 값
0 0 0 ? * SUN *
└─ At 12:00 AM, only on Sunday
0 0/10 * * * *
└── Every 10 Minutes
0 24 ? * MON-FRI
└── At 12:00 PM, Monday through Friday
0 30 10 12 * ?
└── At 10:30 AM, on day 12 of the month
0 0 0 * * ? 2022
└── At 12:00 AM, only in 2022
0 0 11 L-1 * ?
└── At 11:00 AM, 1 days before the last day of the month