Pub/Sub ターゲット
Pub/Sub ターゲットを選択する場合は、次の手順に従います。ジョブの公開先トピックの名前を指定します。これは、プロジェクトですでに設定されている Pub/Sub トピックです。
トピックに送信するメッセージを指定します。これは、Pub/Sub メッセージ内の
data
パラメータとして送信されます。この処理の例については、クイックスタートをご覧ください。必要なメッセージ属性を追加します。
Configure optional settings
セクションを使用して、追加の構成を設定します。
Cloud Scheduler は、Google API サービス アカウントを使用してメッセージをこのトピックに対して公開します。
App Engine HTTP ターゲット
[App Engine HTTP] ターゲット タイプを選択した場合は、App Engine アプリと現在のプロジェクトに関連付けられているリージョンを使用する必要があります。現在のプロジェクトの外部にある他の App Engine アプリを使用する場合は、HTTP ではなく HTTP をターゲットとして選択してください。 ターゲット ファイアウォール ルールでは、0.1.0.2/32 IP 範囲からのリクエストを許可する必要があります。フォームを次のように設定します。
[ターゲット タイプ] リストで、[App Engine HTTP] を選択します。
Cloud Scheduler ジョブのハンドラを実行している App Engine サービスの名前を指定します。省略すると、
default
サービスが想定されます。設定する場合は、Google Cloud コンソールでサービス名を確認できます。必要に応じて、バージョンを指定します。未設定の場合、現在使用中のバージョンが使用されます。使用可能なバージョンは、Google Cloud コンソールで確認できます。
必要に応じて、インスタンスを指定します。未設定の場合は、使用可能なインスタンスのいずれかが使用されます。使用可能なバージョンは、Google Cloud コンソールで確認できます。
ジョブが接続する App Engine エンドポイントの相対 URL を指定します。デフォルト値
/
を使用する場合、ジョブはPROJECT-ID.appspot.com
を使用します(PROJECT-ID
は現在のプロジェクト ID です)。ジョブの実行時に使用する HTTP メソッドを設定します。デフォルトは
POST
です。必要なヘッダーをリクエストに追加します。
必要に応じて、ターゲットに送信する本文データを指定します。このデータは、HTTP メソッド
POST
とPUT
のいずれかが選択されると、バイトとしてリクエストの本文に入れて送信されます。
ターゲットとする App Engine エンドポイントは同じプロジェクト内に存在する必要があり、app.yaml
ファイルの handlers
要素で login: admin
で保護できます。
HTTP ターゲット
[HTTP] ターゲット タイプを選択した場合:ジョブが接続するエンドポイントの完全修飾 URL を指定します。
HTTP メソッドを指定します。デフォルトは
POST
です。必要に応じて、ターゲットに送信するデータを指定します。このデータは、HTTP メソッド
POST
とPUT
のいずれかが選択されると、リクエストの本文にバイト列として入れて送信されます。必要なヘッダーを追加します。
認証を必要とする HTTP ターゲット ジョブを作成するには、HTTP ターゲットで認証を使用するをご覧ください。
ターゲット HTTP エンドポイントは一般公開されている必要があります。
cron ジョブと呼ばれる定期的な作業単位を設定するには、Cloud Scheduler を使用します。cron ジョブは定期的なスケジュール(ジョブの間隔または頻度とも呼ばれる)でターゲットに送信されます。
どの時点をとっても同じジョブの複数インスタンスが同時に実行されないようにしてください。まれに、同じジョブの複数のインスタンスがリクエストされる可能性があります。このためリクエスト ハンドラはべき等である必要があります。またコードを記述する際は、このような状態が発生した場合に有害な副作用が発生しないようにする必要があります。
Cloud Scheduler は、繰り返しジョブ用です。 ジョブを 1 回だけ実行する必要がある場合は、Cloud Tasks の使用を検討してください。Cloud Tasks を使用すると、タスクを最大 30 日前までにスケジュールできます。
準備
Cloud Scheduler 用に環境を設定していることを確認します。
ターゲット タイプを選択する
Cloud Scheduler では、次のタイプのターゲットを呼び出すことができます。
HTTP エンドポイント
Pub/Sub トピック
App Engine サービス
内部 Ingress に限定されたターゲット サービスを呼び出す
Cloud Scheduler は、次のサービスを内部で呼び出すことができます。
- Cloud Run 関数
- Cloud Run(カスタム ドメインではなく
run.app
URL の)
これらのターゲットを内部で呼び出すには、ターゲットが Cloud Scheduler ジョブと同じ Google Cloud プロジェクトまたは VPC Service Controls の境界内に存在する必要があります。
上り(内向き)を制限することによるターゲットの保護の詳細については、上り(内向き)の制限(Cloud Run の場合)とネットワーク設定の構成(Cloud Run 関数の場合)をご覧ください。
ジョブの作成
ジョブを作成するには、Google Cloud コンソールまたは Google Cloud CLI を使用します。
コンソール
Google Cloud コンソールで、[Cloud Scheduler] ページに移動します。
[ジョブを作成] をクリックします。
[名前] フィールドに、プロジェクトに固有のジョブの名前を入力します。
関連付けられているジョブを削除すると、プロジェクトでジョブ名を再利用できるようになります。
[リージョン] リストでリージョンを選択します。
App Engine HTTP ターゲットを使用する場合は、App Engine アプリと同じリージョンを選択する必要があります。詳細については、ターゲットでサポートされているリージョンをご覧ください。
必要に応じて、ジョブの実行内容など、ジョブの簡単な説明を入力します。
この説明は、コンソールでジョブ名の横に表示されます。
構成文字列を使用して、ジョブを実行する頻度を指定します。
たとえば文字列
0 1 * * 0
を使用すると、毎週日曜日の午前 1 時にジョブが週 1 回実行されます。ここで指定する文字列には、unix-cron 互換の任意の文字列を使用できます。詳細については、cron ジョブ スケジュールの構成をご覧ください。[タイムゾーン] リストで、ジョブ スケジュールに使用するタイムゾーンを選択します。
[続行] をクリックします。
[ターゲット タイプ] を指定します。
Pub/Sub: プロジェクトですでに設定され、ジョブを公開する Pub/Sub トピックの名前を指定する必要があります。
App Engine HTTP: App Engine アプリと現在のプロジェクトに関連付けられているリージョンを使用する必要があります。
[続行] をクリックします。
再試行の動作を構成する場合は、[オプションの設定] をクリックします。期間を指定するには、次の単位のサフィックスが付いた負でない整数のシーケンスを使用します。
- h - 時
- m - 分
- s - 秒
- ms - ミリ秒
- us - マイクロ秒
- ns - ナノ秒
負の値と小数値は使用できません。
Max retry duration
フィールドはh
、m
、s
値のみをサポートします。Min backoff duration
とMax backoff duration
の両方が完全なセットをサポートします。必要に応じて、HTTP ターゲットと App Engine HTTP ターゲットの場合は、ジョブ試行の期限を構成します。この期限までにリクエスト ハンドラが応答しない場合、リクエストはキャンセルされ、試行は失敗とみなされます。Cloud Scheduler は、再試行構成に従ってジョブを再試行します。
ジョブを作成して保存するには、[作成] をクリックします。
ジョブは指定された頻度で実行されます。
gcloud
gcloud CLI を使用してジョブを作成する場合は、ターゲット タイプごとに異なるコマンドを使用します。
HTTP
HTTP または HTTPS エンドポイントにリクエストを送信できます。ターゲット HTTP エンドポイントは一般公開されている必要があります。
gcloud scheduler jobs create http JOB \ --location=LOCATION \ --schedule=SCHEDULE \ --uri=URI
以下を置き換えます。
JOB
: プロジェクト内で一意にする必要があるジョブ名。関連付けられているジョブを削除しても、プロジェクトでそのジョブ名を再利用できないので注意してください。LOCATION
: ジョブを実行するロケーション。SCHEDULE
: ジョブを実行する頻度(ジョブ間隔)(例:every 3 hours
)。ここで指定する文字列には、unix-cron 互換の任意の文字列を使用できます。(おすすめしませんが、従来の App Engine cron 構文は既存のジョブで引き続きサポートされます。)詳細については、cron ジョブ スケジュールの構成をご覧ください。
URI
: ジョブが接続するエンドポイントの完全修飾 URI。
その他のパラメータについては、gcloud コマンドライン リファレンスをご覧ください。
必要に応じて、HTTP メソッドを指定します。デフォルトは
POST
です。必要に応じて、ターゲットに送信するデータを指定します。このデータは、HTTP メソッド
POST
とPUT
のいずれかが選択されると、リクエストの本文にバイト列として入れて送信されます。必要に応じて再試行値を指定します。これは、App Engine ジョブが失敗した場合のジョブの再試行方法を指定します。ほとんどの場合、デフォルト値で十分です。
認証を必要とする HTTP ターゲット ジョブを作成するには、HTTP ターゲットで認証を使用するをご覧ください。
例
gcloud scheduler jobs create http my-http-job \ --schedule "0 1 * * 0" \ --uri "http://myproject/my-url.com" \ --http-method GET
Pub/Sub
プロジェクトですでに設定されている Pub/Sub トピックを使用する必要があります。Cloud Scheduler は、Google API サービス アカウントを使用してメッセージをこのトピックに対して公開します。
gcloud scheduler jobs create pubsub JOB \ --location=LOCATION \ --schedule=SCHEDULE \ --topic=TOPIC
以下を置き換えます。
JOB
: プロジェクト内で一意にする必要があるジョブ名。関連付けられているジョブを削除しても、プロジェクトでそのジョブ名を再利用できないので注意してください。LOCATION
: ジョブを実行するロケーション。SCHEDULE
: ジョブを実行する頻度(ジョブ間隔)(例:every 3 hours
)。ここで指定する文字列には、unix-cron 互換の任意の文字列を使用できます。(おすすめしませんが、従来の App Engine cron 構文は既存のジョブで引き続きサポートされます。)詳細については、cron ジョブ スケジュールの構成をご覧ください。
TOPIC
: ジョブが公開するトピックの名前。--message-body
フラグまたは--message-body-from-file
フラグを使用して、トピックに送信するメッセージを指定します。これは、Pub/Sub メッセージ内のdata
パラメータとして送信されます。この処理の例については、クイックスタートをご覧ください。
他のパラメータについては、gcloud コマンドライン リファレンスをご覧ください。
例
gcloud scheduler jobs create pubsub myjob \ --schedule "0 1 * * 0" \ --topic cron-topic \ --message-body "Hello"
App Engine HTTP
App Engine HTTP
ターゲットは現在のプロジェクトに関連付けられている App Engine アプリのみ使用可能です。現在のプロジェクトの外部にある他の App Engine アプリを使用する場合は、App Engine HTTP
ではなく HTTP
をターゲットとして選択します。 ターゲット ファイアウォール ルールで、0.1.0.2/32 IP 範囲からのリクエストを許可する必要があります。
App Engine エンドポイントは、app.yaml
ファイル内の handlers
要素の login: admin
で保護できます。
gcloud scheduler jobs create app-engine \ --JOB=JOB \ --location=LOCATION \ --schedule=SCHEDULE
以下を置き換えます。
JOB
: プロジェクト内で一意にする必要があるジョブ名。関連付けられているジョブを削除しても、プロジェクトでそのジョブ名を再利用できないので注意してください。LOCATION
: ジョブを実行するロケーション。App Engine アプリのロケーションと同じにする必要があります。SCHEDULE
: ジョブを実行する頻度(ジョブ間隔)(例:every 3 hours
)。ここで指定する文字列には、unix-cron 互換の任意の文字列を使用できます。(おすすめしませんが、従来の App Engine cron 構文は既存のジョブで引き続きサポートされます。)詳細については、cron ジョブ スケジュールの構成をご覧ください。
その他のパラメータについては、gcloud コマンドライン リファレンスをご覧ください。
ジョブが接続する App Engine エンドポイントの相対 URL を指定します。デフォルト値
/
を使用する場合、ジョブはPROJECT-ID.appspot.com
を使用します(PROJECT-ID
は現在のプロジェクト ID です)。Cloud Scheduler ジョブのハンドラを実行している App Engine サービスの名前を指定します。省略すると、
default
サービスが想定されます。設定する場合は、Google Cloud コンソールでサービス名を確認できます。必要に応じて、ジョブの実行時に使用する HTTP メソッドを設定します。 デフォルトは
POST
です。必要に応じて、バージョンを指定します。未設定の場合、現在使用中のバージョンが使用されます。使用可能なバージョンは、Google Cloud コンソールで確認できます。
必要に応じて、インスタンスを指定します。未設定の場合は、使用可能なインスタンスのいずれかが使用されます。使用可能なバージョンは、Google Cloud コンソールで確認できます。
必要に応じて、ターゲットに送信するデータを指定します。このデータは、HTTP メソッド
POST
とPUT
のいずれかが選択されると、リクエストの本文にバイト列として入れて送信されます。必要に応じて再試行値を指定します。これは、App Engine ジョブが失敗した場合のジョブの再試行方法を指定します。ほとんどの場合、デフォルトで十分です。
例
gcloud scheduler jobs create app-engine my-appengine-job \ --schedule "0 1 * * 0" \ --relative-url "/cron-handler"
ジョブの編集
ジョブの構成は編集できます。
コンソール
Google Cloud コンソールで、[Cloud Scheduler] ページに移動します。
編集するジョブを選択します。
[編集] をクリックします。
手順に沿ってジョブの作成時にスケジュールの定義、実行の構成、オプション設定の構成を行います。
gcloud
gcloud CLI を使用してジョブを編集する場合は、ターゲット タイプごとに異なるコマンドを使用します。
HTTP
HTTP または HTTPS エンドポイントにリクエストを送信できます。ターゲット HTTP エンドポイントは一般公開されている必要があります。
gcloud scheduler jobs update http JOB \ --location=LOCATION \ --schedule=SCHEDULE \ --uri=URI
以下を置き換えます。
JOB
: プロジェクト内で一意にする必要があるジョブ名。関連付けられているジョブを削除しても、プロジェクトでそのジョブ名を再利用できないので注意してください。LOCATION
: ジョブが実行されるロケーション。ロケーションを指定しない場合は、gcloud CLI はデフォルトのロケーションを使用します。編集するジョブが別のロケーションにある場合、ジョブを識別できるように、NAME
に加えてロケーションも指定する必要があります。ジョブのロケーションは更新できません。SCHEDULE
: ジョブを実行する頻度(ジョブ間隔)(例:every 3 hours
)。ここで指定する文字列には、unix-cron 互換の任意の文字列を使用できます。(おすすめしませんが、従来の App Engine cron 構文は既存のジョブで引き続きサポートされます。)詳細については、cron ジョブ スケジュールの構成をご覧ください。
URI
: ジョブが接続するエンドポイントの完全修飾 URI。
他のパラメータについては、gcloud コマンドライン リファレンスをご覧ください。
例
gcloud scheduler jobs update http my-http-job \ --schedule "0 1 * * 0" \ --uri "http://myproject/my-url.com" \ --http-method GET
Pub/Sub
プロジェクトですでに設定されている Pub/Sub トピックを使用する必要があります。Cloud Scheduler は、Google API サービス アカウントを使用してメッセージをこのトピックに対して公開します。
gcloud scheduler jobs update pubsub JOB \ --location=LOCATION \ --schedule=SCHEDULE \ --topic=TOPIC
以下を置き換えます。
JOB
: プロジェクト内で一意にする必要があるジョブ名。関連付けられているジョブを削除しても、プロジェクトでそのジョブ名を再利用できないので注意してください。LOCATION
: ジョブが実行されるロケーション。ロケーションを指定しない場合は、gcloud CLI はデフォルトのロケーションを使用します。編集するジョブが別のロケーションにある場合、ジョブを識別できるように、NAME
に加えてロケーションも指定する必要があります。ジョブのロケーションは更新できません。SCHEDULE
: ジョブを実行する頻度(ジョブ間隔)(例:every 3 hours
)。ここで指定する文字列には、unix-cron 互換の任意の文字列を使用できます。(おすすめしませんが、従来の App Engine cron 構文は既存のジョブで引き続きサポートされます。)詳細については、cron ジョブ スケジュールの構成をご覧ください。
TOPIC
: ジョブが公開するトピックの名前。--message-body
フラグまたは--message-body-from-file
フラグを使用して、トピックに送信するメッセージを指定します。これは、Pub/Sub メッセージ内のdata
パラメータとして送信されます。この処理の例については、クイックスタートをご覧ください。
他のパラメータについては、gcloud コマンドライン リファレンスをご覧ください。
例
gcloud scheduler jobs update pubsub myjob \ --schedule "0 1 * * 0" \ --topic cron-topic --message-body "Hello"
App Engine HTTP
App Engine HTTP
ターゲットは現在のプロジェクトに関連付けられている App Engine アプリのみ使用可能です。現在のプロジェクトの外部にある他の App Engine アプリを使用する場合は、App Engine HTTP
ではなく HTTP
をターゲットとして選択します。
App Engine エンドポイントは、app.yaml
ファイル内の handlers
要素の login: admin
で保護できます。
gcloud scheduler jobs update app-engine JOB \ --location=LOCATION \ --schedule=SCHEDULE
以下を置き換えます。
JOB
: プロジェクト内で一意にする必要があるジョブ名。関連付けられているジョブを削除しても、プロジェクトでそのジョブ名を再利用できないので注意してください。LOCATION
: ジョブが実行されるロケーション(ターゲットの App Engine アプリのロケーションと同じです)。ロケーションを指定しない場合は、gcloud CLI はデフォルトのロケーションを使用します。編集するジョブが別のロケーションにある場合、ジョブを識別できるように、NAME
に加えてロケーションも指定する必要があります。ジョブのロケーションは更新できません。SCHEDULE
: ジョブを実行する頻度(ジョブ間隔)(例:every 3 hours
)。ここで指定する文字列には、unix-cron 互換の任意の文字列を使用できます。(おすすめしませんが、従来の App Engine cron 構文は既存のジョブで引き続きサポートされます。)詳細については、cron ジョブ スケジュールの構成をご覧ください。
他のパラメータについては、gcloud コマンドライン リファレンスをご覧ください。
例
gcloud scheduler jobs update app-engine my-appengine-job \ --schedule "0 1 * * 0" \ --relative-url "/cron-handler"
ジョブの一時停止
ジョブの実行は一時停止できます。
コンソール
Google Cloud コンソールで、[Cloud Scheduler] に移動します。
一時停止するジョブを選択します。
[一時停止] をクリックします。
gcloud
gcloud CLI をインストールしたマシンでターミナル ウィンドウを開きます。
次のコマンドを実行します。
gcloud scheduler jobs pause MY_JOB
MY_JOB
は、一時停止するジョブの名前に置き換えます。
ジョブが一時停止している間、そのジョブを編集することもできます。編集した後、ジョブは再開するまで一時停止したままになります。
ジョブの再開
一時停止したジョブの実行を再開できます。
コンソール
Google Cloud コンソールで、[Cloud Scheduler] に移動します。
再開するジョブを選択します。
ジョブはすでに一時停止されている必要があります。
[再開] をクリックします。
gcloud
gcloud CLI をインストールしたマシンでターミナル ウィンドウを開きます。
次のコマンドを実行します。
gcloud scheduler jobs resume MY_JOB
MY_JOB
は、再開するジョブの名前に置き換えます。
ジョブの削除
ジョブは削除できます。
コンソール
Google Cloud コンソールで、[Cloud Scheduler] に移動します。
削除するジョブを選択します。
[削除] をクリックします。
gcloud
gcloud CLI をインストールしたマシンでターミナル ウィンドウを開きます。
次のコマンドを実行します。
gcloud scheduler jobs delete MY_JOB
MY_JOB
を削除するジョブの名前に置き換えます。