cron ジョブ スケジュールの構成

cron ジョブは定期的な間隔でスケジュールされ、unix-cron に基づく形式で指定します。ジョブを 1 日に複数回実行するか、または具体的な日と月に実行するようにスケジュールを定義できます。(おすすめしませんが、従来の App Engine cron 構文は既存のジョブで引き続きサポートされます。)

cron ジョブの形式

スケジュールは、unix-cron 文字列形式(* * * * *)を使用して定義されます。これは、1 行に 5 つのフィールドのセットであり、ジョブが実行されるタイミングを示しています。

unix-cron 文字列形式

Google Cloud コンソール、Google Cloud CLI、または Cloud Scheduler REST API を使用して、スケジュールを設定できます。

時間フィールドの形式と有効な値は次のとおりです。

項目 有効な値の形式
0-59
時間 0-23
1-31
1~12(または JAN から DEC)
曜日 0~6(SUN から SAT)、または 7(日曜日)

特殊文字

  • フィールドにはアスタリスク(*)を含めることができます。これは常に「最後」を表します。
  • 範囲は、ハイフン(-)で区切られた 2 つの数値で、指定した範囲が含まれます。
  • /NUMBER とともに範囲を続けると、その範囲の数値がスキップされます。たとえば、0-23/2 フィールドと */2 の両方を [時間] フィールドで使用して、2 時間ごとに実行を指定できます。
  • リストは、カンマ(,)で区切られた数値(または範囲)のセットです。たとえば、Month フィールドの 1,2,5,6 は、月の 1 日、2 日、5 日、6 日の実行を指定します。

タイムゾーン

スケジュールを評価するタイムゾーンは、コンソール(ジョブの作成ページで選択)で選択できます。リストからタイムゾーンを選択します。 )、またはジョブの作成時に gcloud--time-zone フラグを使用します。デフォルトのタイムゾーンは Etc/UTC です。

一部のタイムゾーンでは、夏時間が原因で、ジョブが予期せず実行されるか、実行されない可能性があります。Cloud Scheduler が実時間で稼働するのが原因です。ある時刻が 2 回来て(時計の時刻が逆戻りする場合など)、その時刻にジョブがスケジュールされているインスタンスでは、スケジュールされたジョブの実行に異常が生じる可能性があります。

ジョブで非常に特殊な周期が必要な場合は、夏時間のないタイムゾーンを選択することを検討してください。特に、この問題を完全に回避するために、Cloud Scheduler には UTC をお勧めします。

スケジュールの例

以下の表に、cron ジョブ スケジュールの例とその説明を示します。

スケジュールの例 cron ジョブの形式
1 分おき * * * * *
毎週土曜日の 23:45(午後 11:45) 45 23 * * 6
毎週月曜日の 9:00(午前 9:00) 0 9 * * 1
毎週日曜日の 4:05(午前 4:05) 5 4 * * SUN
毎週平日(月~金)の 22:00(午後 10:00) 0 22 * * 1-5