cron ジョブは定期的な間隔でスケジュールされ、unix-cron に基づく形式で指定します。ジョブを 1 日に複数回実行するか、または具体的な日と月に実行するようにスケジュールを定義できます。(おすすめしませんが、従来の App Engine cron 構文は既存のジョブで引き続きサポートされます。)
cron ジョブの形式
スケジュールは、unix-cron 文字列形式(* * * * *
)を使用して定義されます。これは、1 行に 5 つのフィールドのセットであり、ジョブが実行されるタイミングを示しています。
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
の両方をHour
フィールドで使用して、2時間ごとに実行を指定できます。- リストは、カンマ(
,
)で区切られた数値(または範囲)のセットです。たとえば、Day of the month
フィールドの1,2,5,6
は、月の 1 日、2 日、5 日、6 日の実行を指定します。
タイムゾーン
スケジュールを評価するタイムゾーンは、Google Cloud コンソール(ジョブの作成ページで選択)で選択できます。リストからタイムゾーンを選択します。またはジョブの作成時に 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 |