Crescendo Lab ドキュメント
日本語
無料で始める

スケジュールジョブ

スケジュールジョブは、Google Cloud Scheduler のように、決まった時刻に組織のアプリへ HTTP 呼び出しを 1 回行います。

最終更新

ジョブの構成#

呼び出しは、その時点で公開中のバージョンに届きます。

項目説明
アプリ呼び出すコンテナアプリ。
パスアプリのアドレスの後ろに付けます。/ で始まり、クエリ文字列も使えます。例:/tasks/daily
メソッドGET、POST、PUT、PATCH、DELETE。既定は POST です。本文を送るのは POST、PUT、PATCH だけです。
スケジュール5 つのフィールドの cron 式(分、時、日、月、曜日)。最短で 1 分に 1 回です。
タイムゾーン既定は Asia/Taipei です。

cron 式の例:

式実行タイミング
0 9 * * *毎日 9:00
*/15 * * * *15 分ごと
0 8 * * 1毎週月曜 8:00
0 0 1 * *毎月 1 日 0:00

ジョブを作成する#

  1. アプリにエンドポイントを追加する 例:POST /tasks/daily に定期処理を実装し、デプロイして公開します。
  2. ジョブを作成する 「デプロイ › スケジュールジョブ」を開き、アプリ、パス、スケジュールを指定します。
  3. 手動で 1 回実行する 「今すぐ実行」で試し、実行履歴でレスポンスコードとログを確認します。

呼び出し元を確認する#

既定では、呼び出しに送信元を証明する情報は付きません。次のどちらかを選びます。

  • ジョブに X-Cron-Secret などの独自ヘッダーを設定し、値をアプリのシークレットとして保存して、コードで照合します。
  • 署名付きトークンを有効にします。呼び出しに Authorization: Bearer <JWT> が付くので、https://api.agentlab.cresclab.com/.well-known/jwks.json で検証します。aud は franky:app:<アプリ ID> です。

実行の動作#

項目動作
重複実行重なりません。前回の実行中に予定時刻が来た回はスキップされます。
配信少なくとも 1 回。同じ実行が 2 回届くことがあるので、X-Franky-Run-Id ヘッダーで重複を除いてください。
再試行既定は 0 回、最大 5 回です。
期限15 秒〜30 分。既定は 3 分です。
server.js
const runId = req.headers["x-franky-run-id"];
if (await alreadyHandled(runId)) {
  res.writeHead(200).end();
  return;
}