참조: Systems Manager용 Cron 및 Rate 표현식 - AWS Systems Manager

참조: Systems Manager용 Cron 및 Rate 표현식

State Manager에 유지 관리 기간 또는 AWS Systems Manager 연결을 생성할 때는 창 또는 연결이 작동해야 할 시점에 대한 일정을 지정합니다. cron 표현식이라는 시간 기반 항목이나 rate 표현식이라는 빈도 기반 항목으로 일정을 지정할 수 있습니다.

Cron 및 Rate 표현식에 대한 일반 정보

다음 정보는 유지 관리 기간 및 연결 모두에 대해 cron 및 rate 표션식에 적용됩니다.

단일 실행 일정

연결 유지 관리 기간을 생성할 때 지정된 시간에 한 번 실행되도록 협정 세계 표준시(UTC) 형식으로 타임스탬프를 지정할 수 있습니다. 예: "at(2020-07-07T15:55:00)"

일정 오프셋

연결 및 유지 관리 기간은 cron 표현식에 대해서만 일정 오프셋을 지원합니다. 일정 오프셋은 연결 또는 유지 관리 기간을 실행하기 전에 cron 표현식에 의해 지정된 날짜 및 시간 이후에 대기할 일 수입니다.

Maintenance window example

다음 명령에서 cron 표현식은 매월 셋째 화요일 오후 11:30에 실행되도록 유지 관리 기간을 예약합니다. 그러나, 일정 오프셋이 2인 경우 2일 후 오후 11시 30분까지 유지 관리 기간이 실행되지 않습니다.

aws ssm create-maintenance-window \ --name "My-Cron-Offset-Maintenance-Window" \ --allow-unassociated-targets \ --schedule "cron(30 23 ? * TUE#3 *)" \ --duration 4 \ --cutoff 1 \ --schedule-offset 2
Association example

다음 명령에서 cron 표현식은 매월 두 번째 목요일에 실행되도록 연결을 예약합니다. 하지만 스케줄 오프셋이 3이므로 3일 후인 다음 일요일까지 연결이 실행되지 않습니다.

aws ssm create-association \ --name "AWS-UpdateSSMAgent" \ --targets "Key=instanceids,Values=i-0cb2b964d3e14fd9f" \ --schedule-expression "cron(0 0 ? * THU#2 *)" \ --schedule-offset 3 --apply-only-at-cron-interval
참고

연결과 함께 오프셋을 사용하려면 --apply-only-at-cron-interval 옵션을 지정해야 합니다. 이 옵션은 시스템에 연결을 만든 직후에 연결을 실행하지 말라고 알려줍니다.

현재 기간에 이미 경과한 날짜를 대상으로 하는 cron 표현식을 사용하여 연결 또는 유지 관리 기간을 생성하지만, 미래에 해당하는 일정 오프셋 날짜를 추가하면 연결 또는 유지 관리 기간이 해당 기간에 실행되지 않습니다. 다음 기간에 적용됩니다. 예를 들어 어제 유지 관리 기간을 실행한 cron 표현식을 지정하고 일정 오프셋을 2일로 추가하면 유지 관리 기간은 내일 실행되지 않습니다.

필수 필드

유지 관리 기간에 대한 cron 표현식에는 필수 필드가 6개 있습니다. 연결에 대한 cron 표현식에는 5개가 있습니다. (State Manager은(는) 현재 연결에 대한 cron 표현식에서 월 지정을 지원하지 않습니다.) 추가 필드인 Seconds 필드(cron 표현식의 첫 번째 필드)는 선택 사항입니다. 각 필드는 공백으로 구분됩니다.

Cron 표현식의 예
시간 요일 연도 의미
0 10 * * ? * 매일 오전 10시(UTC)에 실행
15 12 * * ? * 매일 오후 12시 15분(UTC)에 실행
0 18 ? * 월-금 * 매주 월요일부터 금요일까지 오후 6시(UTC)에 실행
0 8 1 * ? * 매월 1일 오전 8시(UTC)에 실행
지원되는 값

다음 표에는 필수적인 cron 항목에 대해 지원되는 값이 나와 있습니다.

Cron 표현식에 대해 지원되는 값
필드 와일드카드
0-59 , - * /
시간 0-23 , - * /
날짜 1-31 , - * ? / L W
월(유지 관리 기간에만 해당) 112 또는 JAN-DEC , - * /
요일 17 또는 SUN-SAT , - * ? / L #
연도 1970-2199 , - * /
참고

동일한 cron 표현식에서 월 필드와 주 필드 모두에 값을 지정할 수는 없습니다. 이들 필드 중 하나에 값을 지정하는 경우에는 다른 필드에서 반드시 ?(물음표)를 사용합니다.

cron 표현식에 대한 와일드카드

다음 표에는 cron 표현식에서 지원되는 와일드카드 값이 나와 있습니다.

참고

5분보다 빠른 속도로 이어지는 cron 표현식은 지원되지 않습니다. day-of-week 및 day-of-month 값을 모두 지정하기 위한 지원 기능은 완전하지 않습니다. 이들 필드 중 하나에 ?(물음표)를 사용합니다.

Cron 표현식에 대해 지원되는 와일드카드
와일드카드 설명
, ,(쉼표) 와일드카드는 추가 값을 포함합니다. 예컨대, Month 필드에서 JAN, FEB, MAR은 1월, 2월, 3월을 포함한다는 의미입니다.
- -(대시) 와일드카드는 범위를 지정합니다. 예컨대, Day 필드에서 1-15는 지정된 달의 1일에서 15일까지 포함한다는 의미입니다.
* *(별표) 와일드카드는 필드의 모든 값을 포함합니다. 예컨대, 시간 필드에서 *는 모든 시간을 포함한다는 의미입니다.
/ /(슬래시) 와일드카드로 증분을 지정합니다. 분 필드에서 1/10을 입력하면 지정한 시간의 1분부터 시작해서 매 10분 간격을 지정할 수 있습니다. 따라서 1/10은 첫 번째, 11번째, 21번째, 31번째 분 등을 지정합니다.
? ?(물음표) 와일드카드는 어떤 한 가지나 다른 것을 지정합니다. Day-of-month 필드에 7을 입력하고 Day-of-week 필드에는 ?을 입력하면 매월 7일이 무슨 요일이든 상관없이 7번째 되는 날을 지정한다는 의미입니다.
L 월(Day-of-month) 필드 또는 주(Day-of-week) 필드에는 L 와일드카드로 해당 월 또는 주의 마지막 날을 지정할 수 있습니다.
W '날짜' 필드에서는 W 와일드카드로 어떤 한 평일을 지정할 수 있습니다. 예컨대, Day-of-month 필드에 3W를 입력하면 해당 월의 세 번째 평일에 가장 가까운 날을 지정할 수 있습니다.
# 요일 필드의 # 와일드카드 뒤에 1~5 사이의 숫자는 해당 월의 지정된 요일을 지정합니다. 5#3은 해당 월의 셋째 목요일을 지정합니다.
rate 표현식

rate 식에는 다음과 같은 필수 필드가 2개 있습니다. 각 필드는 공백으로 구분됩니다.

Rate 표현식의 필수 필드
필드

양수(예: 1 또는 15)

단위

minute

minutes

hour

hours

day

days

값이 1(와)과 같을 경우에는 단위가 단수여야 합니다. 마찬가지로, 1보다 큰 값에 대해서는 단위가 복수여야 합니다. 예를 들어 rate(1 hours)rate(5 hour)는 유효하지 않으며 rate(1 hour)rate(5 hours)는 유효합니다.

연결에 대한 Cron 및 Rate 표현식

이 단원에는 State Manager 연결에 대한 cron 및 rate 표현식의 예제가 포함되어 있습니다. 이러한 표현식 중 하나를 생성하기 전에 다음 정보에 유의해야 합니다.

  • 연결은 1/2, 1, 2, 4, 8 또는 12시간마다, 매일, 매주, 또는 매주 특정 날짜 및 시간, 매월 특정 주의 특정 날짜나 달의 마지막 x일의 특정 시간과 같은 cron 표현식을 지원합니다.

  • 연결은 30분 이상 및 31일 미만의 간격과 같은 rate 표현식을 지원합니다.

  • 옵션인 Seconds 필드를 지정한 경우 값으로 0을 사용할 수 있습니다. 예: cron(0 */30 * * * ? *)

  • AWS Systems Manager의 기능인 인벤토리에 대한 메타데이터를 수집하는 연결의 경우 rate 표현식을 사용하는 것이 좋습니다.

  • State Manager은(는) 현재 연결에 대한 cron 표현식에서 월 지정을 지원하지 않습니다.

연결은 요일 및 숫자 기호(#)를 포함하는 cron 표현식을 지원함으로써 매달 n 번째 일을 지정하여 연결을 실행합니다. 매월 셋째 주 화요일 UTC 23:30에 cron 일정을 실행하는 예는 다음과 같습니다.

cron(30 23 ? * TUE#3 *)

매월 두 번째 목요일 UTC 자정에 실행하는 예는 다음과 같습니다.

cron(0 0 ? * THU#2 *)

또한 연결은 (L) 기호를 지원하여 매월 마지막 X 일을 표시합니다. 매월 마지막 화요일 UTC 자정에 cron 일정을 실행하는 예는 다음과 같습니다.

cron(0 0 ? * 3L *)

예를 들어, 화요일을 패치한 지 2일 후 연결을 실행하려는 경우 연결 실행 시기를 추가로 제어하려면 오프셋을 지정할 수 있습니다. 오프셋을 통해 연결을 실행하도록 예약된 날짜 이후에 대기할 일 수를 정의할 수 있습니다. 예를 들어, cron(0 0 ? * THU#2 *)의 cron 일정을 지정한 경우 일정 오프셋 필드에 숫자 3을 지정하여 매월 두 번째 목요일 이후 매주 일요일에 연결을 실행할 수 있습니다.

오프셋을 사용하려면 콘솔에서 지정된 다음 Cron 간격에서만 연결 적용(Apply association only at the next specified Cron interval) 옵션을 선택하거나 명령줄에서 --apply-only-at-cron-interval 파라미터를 지정해야 합니다. 이 옵션은 State Manager에게 연결을 만든 직후에 연결을 실행하지 말라고 알려줍니다.

다음 표에는 연결에 대한 cron 예제가 나와 있습니다.

연결에 대한 Cron 예제
Details

cron(0/30 * * * ? *)

30분마다

cron(0 0/1 * * ? *)

매 시간

cron(0 0/2 * * ? *)

2시간마다

cron(0 0/4 * * ? *)

4시간마다

cron(0 0/8 * * ? *)

8시간마다

cron(0 0/12 * * ? *)

12시간마다

cron(15 13 ? * * *)

매일 오후 1시 15분

cron(15 13 ? * MON *)

매주 월요일 오후 1시 15분

cron(30 23 ? * TUE#3 *)

매월 세 번째 화요일 오후 11:30

다음은 연결에 대한 몇 가지 rate 예제입니다.

연결에 대한 Rate 예제
Details

rate(30 minutes)

30분마다

rate(1 hour)

매 시간

rate(5 hours)

5시간마다

rate(15 days)

15일마다

연결에 대한 AWS CLI 예제

AWS CLI를 사용하여 State Manager 연결을 생성하려면 --schedule-expression 파라미터를 cron 또는 rate 표현식과 함께 포함합니다. 다음 예에서는 로컬 Linux 시스템에서 AWS CLI를 사용합니다.

참고

기본적으로 새 연결을 만들면 새 연결이 생성된 직후에 실행되고 그 후에 지정된 일정에 따라 실행됩니다. 연결을 생성한 직후 연결이 실행되지 않도록 --apply-only-at-cron-interval을 지정합니다. 이 파라미터는 rate 표현식에 대해 지원되지 않습니다.

aws ssm create-association \ --association-name "My-Cron-Association" \ --schedule-expression "cron(0 2 ? * SUN *)" \ --targets Key=tag:ServerRole,Values=WebServer \ --name AWS-UpdateSSMAgent
aws ssm create-association \ --association-name "My-Rate-Association" \ --schedule-expression "rate(7 days)" \ --targets Key=tag:ServerRole,Values=WebServer \ --name AWS-UpdateSSMAgent
aws ssm create-association \ --association-name "My-Rate-Association" \ --schedule-expression "at(2020-07-07T15:55:00)" \ --targets Key=tag:ServerRole,Values=WebServer \ --name AWS-UpdateSSMAgent \ --apply-only-at-cron-interval

유지 관리 기간에 대한 Cron 및 Rate 표현식

이 단원에는 유지 관리 기간에 대한 cron 및 rate 표현식의 예제가 포함되어 있습니다.

State Manager 연결과 달리 유지 관리 기간은 cron 및 rate 표현식 중 일부를 지원하지 않습니다. 여기에는 초 필드의 값에 대한 지원이 포함됩니다.

예를 들어 다음 6필드 cron 표현식은 매일 오전 9시 30분에 유지 관리 기간을 실행합니다.

cron(30 09 ? * * *)

Seconds 필드에 값을 추가하여 다음 7필드 cron 표현식은 매일 오전 9시 30분 24초에 유지 관리 기간을 실행합니다.

cron(24 30 09 ? * * *)

다음 표에는 유지 관리 기간에 대한 추가 6필드 cron 예제가 나와 있습니다.

유지 관리 기간에 대한 Cron 예제
Details

cron(0 2 ? * THU#3 *)

매월 셋째 목요일 오전 2시

cron(15 10 ? * * *)

매일 오전 10시 15분

cron(15 10 ? * MON-FRI *)

매주 월요일, 화요일, 수요일, 목요일, 금요일 오전 10시 15분

cron(0 2 L * ? *)

매월 말일 오전 2시

cron(15 10 ? * 6L *)

매월 마지막 금요일 오전 10시 15분

다음 표에는 유지 관리 기간에 대한 rate 예제가 나와 있습니다.

유지 관리 기간에 대한 Rate 예제
Details

rate(30 minutes)

30분마다

rate(1 hour)

매 시간

rate(5 hours)

5시간마다

rate(25 days)

25일마다

유지 관리 기간에 대한 예제AWS CLI

AWS CLI를 사용하여 유지 관리 기간을 생성하려면 --schedule 파라미터를 cron 또는 rate 표현식 또는 타임스탬프와 함께 포함합니다. 다음 예에서는 로컬 Linux 시스템에서 AWS CLI를 사용합니다.

aws ssm create-maintenance-window \ --name "My-Cron-Maintenance-Window" \ --allow-unassociated-targets \ --schedule "cron(0 16 ? * TUE *)" \ --schedule-timezone "America/Los_Angeles" \ --start-date 2021-01-01T00:00:00-08:00 \ --end-date 2021-06-30T00:00:00-08:00 \ --duration 4 \ --cutoff 1
aws ssm create-maintenance-window \ --name "My-Rate-Maintenance-Window" \ --allow-unassociated-targets \ --schedule "rate(7 days)" \ --duration 4 \ --schedule-timezone "America/Los_Angeles" \ --cutoff 1
aws ssm create-maintenance-window \ --name "My-TimeStamp-Maintenance-Window" \ --allow-unassociated-targets \ --schedule "at(2021-07-07T13:15:30)" \ --duration 4 \ --schedule-timezone "America/Los_Angeles" \ --cutoff 1
추가 정보

위키백과 웹사이트CRON 표현식