본문 바로가기
[AWS-FRF]/SSM

[중요][AWS] Systems Manager용 Cron 및 비율 표현식!!

by METAVERSE STORY 2024. 9. 23.
반응형
728x170

 

 

## 매주 월~금 아침 8시 30분에 시작 명령
cron(0 30 8 ? * MON-FRI *)

 

 

 

 

cron 및 rate 표현식에 대한 일반 정보

 

다음 정보는 유지 관리 창과 연결에 대한 cron 및 비율 표현식에 적용됩니다.

단일 실행 일정

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

일정 오프셋

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

 
  • 유지 관리 창 예
  • 연관 예

다음 명령에서 cron 표현식은 매월 셋째 화요일 오후 11시 30분에 실행되도록 유지 관리 기간을 예약합니다. 그러나 스케줄 오프셋이 이므로 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

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

필수 필드

유지 관리 윈도우에 대한 Cron 표현식에는 필수 필드가 6개 있습니다. 연결에 대한 Cron 표현식에는 5개가 있습니다. (State Manager는 현재 연결에 대한 Cron 표현식에서 월을 지정하는 것을 지원하지 않습니다.) 추가 필드인 field 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
월(유지관리 기간만 해당) 1- 12또는 JAN-DEC , - * /
요일 1- 7또는 SUN-SAT , - * ? / L #
년도 1970-2199 , - * /
메모

같은 cron 표현식에서 일자 필드와 요일 필드에 값을 지정할 수 없습니다. 필드 중 하나에 값을 지정하는 경우 다른 필드에 ? (물음표)를 사용합니다.

Cron 표현식을 위한 와일드카드

다음 표는 Cron 표현식이 지원하는 와일드카드 값을 보여줍니다.

메모

5분(5)보다 빠른 속도로 이어지는 Cron 표현식은 지원되지 않습니다. 요일 및 월 일 값을 모두 지정하는 지원이 완료되지 않았습니다. 이러한 필드 중 하나에서 물음표(?) 문자를 사용하세요.

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

요율 표현식에는 다음 두 가지 필수 필드가 있습니다. 필드는 공백으로 구분됩니다.

요율 표현식에 필요한 필드필드가치
양수, 예: 1또는 15
단위 minute
minutes
hour
hours
day
days

값이 와 같으면 1단위는 단수여야 합니다. 마찬가지로, 보다 큰 값의 경우 1단위는 복수여야 합니다. 예를 들어, rate(1 hours)및 는 rate(5 hour)유효하지 않지만 rate(1 hour)및 는 rate(5 hours)유효합니다.

연관관계에 대한 Cron 및 비율 표현식

 

이 섹션에는 State Manager 연관에 대한 cron 및 rate 표현식의 예가 포함되어 있습니다. 이러한 표현식 중 하나를 만들기 전에 다음 정보를 알고 있어야 합니다.

  • 협회는 다음과 같은 cron 표현식을 지원합니다: 1/2시간, 1시간, 2시간, 4시간, 8시간 또는 12시간마다; 매일, 매주 또는 매주 지정된 요일과 시간마다; 매월 특정 주의 특정 요일 또는 매월 마지막 x날의 특정 시간.
  • 협회는 다음과 같은 요금 표현을 지원합니다: 30분 이상, 31일 미만 간격.
  • 선택 필드를 지정하면 Seconds해당 값은 0(영)이 될 수 있습니다. 예:cron(0 */30 * * * ? *)
  • AWS Systems Manager의 기능인 인벤토리에 대한 메타데이터를 수집하는 연결의 경우 속도 표현식을 사용하는 것이 좋습니다.
  • 현재 State Manager는 연결에 대한 Cron 표현식에서 월을 지정하는 것을 지원하지 않습니다.

연관은 요일과 숫자 기호(#)를 포함하는 cron 표현식을 지원하여 연관을 실행할 한 달의 n 번째 날을 지정합니다. 다음은 매월 세 번째 화요일 23:30 UTC에 cron 일정을 실행하는 예입니다.

cron(30 23 ? * TUE#3 *)

다음은 매월 두 번째 목요일 자정 UTC에 실행되는 예입니다.

cron(0 0 ? * THU#2 *)

협회는 또한 (L) 기호를 지원하여 해당 월의 마지막 X 일을 나타냅니다. 다음은 매월 마지막 화요일 자정 UTC에 cron 일정을 실행하는 예입니다.

cron(0 0 ? * 3L *)

예를 들어 패치 화요일로부터 이틀 후에 연결을 실행하려는 경우와 같이 연결이 실행되는 시기를 추가로 제어하려면 오프셋을 지정할 수 있습니다. 오프셋은 연결 을 실행하기 위해 예약된 날짜 이후 며칠을 기다려야 하는지 정의합니다. 예를 들어, cron 일정을 지정한 경우 일정 오프셋cron(0 0 ? * THU#2 *) 필드 에 숫자 3을 지정하여 매월 두 번째 목요일 이후 일요일마다 연결을 실행할 수 있습니다.

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

다음 표는 연관성에 대한 cron의 예를 보여줍니다.

연관관계에 대한 Cron 예시예세부
크론(0/30 * * * ? *) 30분마다
크론(0 0/1 * * ? *) 매 시간마다
크론(0 0/2 * * ? *) 2시간마다
크론(0 0/4 * * ? *) 4시간마다
크론(0 0/8 * * ? *) 8시간마다
크론(0 0/12 * * ? *) 12시간마다
크론(15 13 ? * * *) 매일 오후 1시 15분
크론(15 13 ? *월 *) 매주 월요일 오후 1시 15분
cron(30 23 ? * TUE#3 *) 매월 셋째 화요일 오후 11시 30분

협회의 요금에 대한 몇 가지 예는 다음과 같습니다.

협회에 대한 평가 예시예세부
요금(30분) 30분마다
요금(1시간) 매 시간마다
요금(5시간) 5시간마다
요금(15일) 15일마다

연결을 위한 AWS CLI 예제

AWS CLI를 사용하여 State Manager 연결을 만들려면 --schedule-expressioncron 또는 rate 표현식에 매개변수를 포함합니다. 다음 예에서는 로컬 Linux 머신에서 AWS CLI를 사용합니다.

메모

기본적으로 새 연결을 만들면 시스템은 연결을 만든 직후에 실행한 다음 지정한 일정에 따라 실행합니다. --apply-only-at-cron-interval연결을 만든 직후에 연결이 실행되지 않도록 지정합니다. 이 매개변수는 요율 표현식에 지원되지 않습니다.

 
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 및 비율 표현식

 

이 섹션에는 유지 관리 기간에 대한 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 예예세부
cron(0 2 ? * THU#3 *) 매월 셋째 목요일 오전 2시
크론(15 10 ? * * *) 매일 오전 10시 15분
cron(15 10 ? * 월-금 *) 매주 월, 화, 수, 목, 금 오전 10시 15분
크론(0 2 L * ? *) 매월 마지막 날 오전 2시
크론(15 10 ? * 6L *) 매월 마지막 금요일 오전 10시 15분

다음 표는 유지 관리 기간에 대한 요금 예시를 ​​보여줍니다.

유지 관리 창에 대한 평가 예시예세부
요금(30분) 30분마다
요금(1시간) 매 시간마다
요금(5시간) 5시간마다
요금(25일) 25일마다

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

AWS CLI를 사용하여 유지 관리 창을 만들려면 --schedulecron 또는 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

 

 

https://docs.aws.amazon.com/systems-manager/latest/userguide/reference-cron-and-rate-expressions.html#reference-cron-and-rate-expressions-maintenance-window

 

Reference: Cron and rate expressions for Systems Manager - AWS Systems Manager

Reference: Cron and rate expressions for Systems Manager When you create a State Manager association or a maintenance window in AWS Systems Manager, you specify a schedule for when the window or the association should run. You can specify a schedule as eit

docs.aws.amazon.com

 

반응형
그리드형(광고전용)

댓글