リファレンス: Systems Manager の Cron 式および rate 式 - AWS Systems Manager

リファレンス: Systems Manager の Cron 式および rate 式

AWS Systems Manager で State Manager の関連付けまたはメンテナンスウィンドウを作成するときは、ウィンドウまたは関連付けを実行するスケジュールを指定します。スケジュールは、時間ベースのエントリ (cron 式) または頻度ベースのエントリ (rate 式) を使用して指定できます。

cron 式または rate 式に関する一般情報

次の情報は、メンテナンスウィンドウとアソシエーションの両方の cron および rate 式に適用されます。

単一実行のスケジュール

メンテナンスウィンドウの関連付けを作成するときは、指定された時刻に 1 回実行されるように、協定世界時 (UTC) 形式でタイムスタンプを指定できます。例: "at(2020-07-07T15:55:00)"

スケジュールオフセット

関連付けおよびメンテナンスウィンドウでサポートされるのは、cron 式のスケジュールオフセットだけです。スケジュールオフセットは、cron 式で指定された日時から関連付けまたはメンテナンスウィンドウを実行するまでに待機する日数です。

Maintenance window example

たとえば、以下の cron 式では、毎月第 3 火曜日の午後 11:30 にメンテナンスウィンドウがスケジュールされます。スケジュールオフセットが 2 の場合、メンテナンスウィンドウは 2 日後の 11:30 PM まで実行されません。

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 式は、毎月第 2 木曜日にアソシエーションを実行するようにスケジュールしています。ただし、スケジュールのオフセットは 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:00 (UTC) に実行
15 12 * * ? * 毎日午後 12:15 (UTC) に実行
0 18 ? * MON-FRI * 毎週月曜日から金曜日まで午後 6:00 (UTC) に実行
0 8 1 * ? * 毎月 1 日の午前 8:00 (UTC) に実行
サポートされる値

次の表は、サポートされている必須 cron エントリの値の一覧です。

cron 式でサポートされている値
フィールド ワイルドカード
0-59 , - * /
時間 0-23 , - * /
1-31 , - * ? / L W
月 (メンテナンスウィンドウのみ) 112 または JANDEC , - * /
曜日 17 または SUNSAT , - * ? / L #
1970-2199 , - * /
注記

同じ cron 式で日フィールドと曜日フィールドの両方に値を指定することはできません。一方のフィールドに値を指定する場合、もう一方のフィールドで ? (疑問符) を使用してください。

cron 式のワイルドカード

以下の表に示しているのは、cron 式がサポートするワイルドカード値です。

注記

5 分より短いレートを導き出す Cron 式はサポートされていません。曜日フィールドと日フィールドの値の両方を指定することはまだ完全にはサポートされていません。これらのフィールドのいずれかで疑問符 (?) 文字を使用してください。

cron 式でサポートされているワイルドカード
ワイルドカード 説明
, , (カンマ) ワイルドカードには追加の値が含まれます。月フィールドの、「JAN,FEB,MAR」は、1 月、2 月、3 月を含みます。
- - (ダッシュ) ワイルドカードは範囲を指定します。日フィールドの、「1-15」は、指定した月の 1 日から 15 日を含みます。
* * (アスタリスク) ワイルドカードにはフィールドのすべての値が含まれます。時間フィールドの、* にはすべての時間が含まれています。
/ / (スラッシュ) ワイルドカードは増分を指定します。Minutes フィールドで、「1/10」と入力して、その時間の最初の分から始めて、10 分毎を指定できます。したがって、「1/10」は、1 分、11 分、21 分、31 分などを指定します。
? ? (疑問符) ワイルドカードは任意の文字を意味します。[日] フィールドに 7 と入力し、7 日が何曜日であってもかまわない場合、[曜日] フィールドに ? を入力できます。
L Day-of-month (日) フィールドまたは Day-of-week (曜日) フィールドの L ワイルドカードは、月または週の最終日を指定します。
W Day-of-month フィールドのワイルドカード W は、平日を指定します。Day-of-month フィールドで、「3W」は月の 3 番目の平日に最も近い日を指定します。
# Day-of-week (曜日) フィールドの # ワイルドカードの後に 1 ~ 5 の数値を入力すると、その月の特定の曜日が指定されます。5#3 は、その月の第 3 木曜日を指定します。
rate 式

rate 式には以下の 2 つの必須フィールドがあります。フィールドはスペースで区切ります。

rate 式の必須フィールド
フィールド

正数、115 など

単位

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 つを作成する前に、次の点に注意してください。

  • 関連付けは、1/2、1、2、4、8、または 12 時間ごと、毎日、毎週、n 日ごと、またはその月の最後の x 曜日などの特定の時間の cron 式をサポートしています。

  • 関連付けは、30 分以上 31 日未満の間隔の rate 式をサポートします。

  • オプションの Seconds フィールドを指定した場合、その値は 0 (ゼロ) が可能です。例: cron(0 */30 * * * ? *)

  • AWS Systems Manager の一機能であるインベントリのメタデータを収集する関連付けには、レート式を使用することをお勧めします。

  • 現在、State Manager では、関連付けの cron 式での月の指定はサポートされていません。

関連付けは、曜日と番号記号 (#) を含む cron 式をサポートしており、その月の n 番目の日を指定して関連付けを実行します。毎月、第 3 火曜日の 23:30 UTC に cron スケジュールを実行する例を次に示します。

cron(30 23 ? * TUE#3 *)

毎月第 2 木曜日の深夜 UTC に実行する例を次に示します。

cron(0 0 ? * THU#2 *)

関連付けは、その月の最後の X 曜日を示す (L) 記号もサポートしています。毎月、最後の火曜日の深夜 UTC に cron スケジュールを実行する例を次に示します。

cron(0 0 ? * 3L *)

パッチした火曜日の 2 日後に関連付けを実行するなど、関連付けを実行するタイミングをさらに制御するには、オフセットを指定できます。オフセットでは、関連付けの実行がスケジュールされている日の後に待機する日数を定義します。例えば、cron スケジュールを cron(0 0 ? * THU#2 *) とした場合、[Schedule offset] (スケジュールのオフセット) フィールドで番号 3 を指定して、その月の第 2 木曜日の後の毎週日曜日に関連付けを実行できます。

オフセットを使用するには、コンソールで [Apply association only at the next specified Cron interval] (次に指定した Cron の間隔でのみ関連付けを適用する) オプションを選択するか、コマンドラインから --apply-only-at-cron-interval パラメータの使用を指定する必要があります。このオプションにより、関連付けを作成した後、すぐに実行されないように State Manager に指示できます。

以下の表は、関連付けの cron 式の例を示します。

関連付けの cron の例
詳細

cron(0/30 * * * ? *)

30分毎

cron(0 0/1 * * ? *)

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 *)

毎月第 3 火曜日の午後 11:30

関連付けのためのいくつかの rate の例を示します。

関連付けの rate の例
詳細

rate(30 minutes)

30分毎

rate(1 hour)

1時間毎

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 の例
詳細

cron(0 2 ? * THU#3 *)

毎月第 3 木曜日の午前 02:00

cron(15 10 ? * * *)

毎日午前 10:15

cron(15 10 ? * MON-FRI *)

毎週月〜金の午前 10:15

cron(0 2 L * ? *)

毎月最終日の午前 02:00

cron(15 10 ? * 6L *)

毎月の最終金曜日の午前 10:15

次の表にメンテナンスウィンドウの rate 式の例を示します。

メンテナンスウィンドウの rate の例
詳細

rate(30 minutes)

30分毎

rate(1 hour)

1時間毎

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
詳細情報

Wikipedia ウェブサイトの「CRON expression」(cron 式)