Serverless Workflow では、cron 式を設定することで、ワークフローの実行をスケジュールできます。このトピックでは、Serverless Workflow の時間ベースのスケジュールを作成する方法について説明します。
前提条件
コンソールでのスケジュールの作成
-
Serverless Workflow コンソールにログインします。
-
[フロー] ページに移動します。フローのリストで、対象フローの [フロー名] をクリックします。
-
[フロー] ページで、[時間ベースのスケジュール] タブをクリックし、[時間ベースのスケジュール管理] エリアで [時間ベースのスケジュールを作成] をクリックします。
-
[時間ベースのスケジュールを作成] パネルでパラメーターを入力し、[OK] をクリックします。
パラメーター
操作
例
時間ベースのスケジュール名
時間ベースのスケジュールのカスタム名を入力します。
schedule-test
トリガー時間の設定
スケジューリングメソッドを選択し、時間ルールを入力します。
次の 2 種類の式がサポートされています:
-
[cron 式]:標準の cron 式を使用します。詳細については、「スケジュール時間パラメーター」をご参照ください。
-
[時間間隔]:
@every式を使用します。ワークフローを実行する間隔 (分単位) を指定します。
[時間間隔] を選択し、「1」と入力して、ワークフローを 1 分ごとに実行します。
ペイロード
JSON フォーマットのカスタムパラメーター。
{"key": "value"}
説明
時間ベースのスケジュールの説明を入力します。
test schedule
時間ベースのスケジュールを有効化
時間ベースのスケジュールを有効または無効にします。
[時間ベースのスケジュールを有効化] スイッチをオンにします。
-
スケジュールを作成した後、ワークフローの [時間ベースのスケジュール] タブで確認できます。
-
ワークフローの [実行履歴] タブで、実行履歴を確認できます。[実行履歴] タブに表示されるスケジュールされたトリガーからのレコードは、
scheduled-execで始まる名前、成功のステータス、ミリ秒単位の実行時間を持ちます。この例では、1 分ごとに新しい実行が表示されます。
-
CLI を使用したスケジュールの作成
Alibaba Cloud CLI を使用して時間ベースのスケジュールを作成するには、まず Alibaba Cloud CLI をインストールして設定する必要があります。詳細については、「Alibaba Cloud CLI とは」をご参照ください。
-
(任意) 次のコマンドを実行して、CreateSchedule 操作のリクエストパラメーターを表示します。
aliyun fnf CreateSchedule help想定される出力:
Alibaba Cloud Command Line Interface Version 3.0.45 Product: fnf (FunctionFlow) Link: https://xxxxxxxx.html Parameters: --CronExpression String Required --FlowName String Required --ScheduleName String Required --Description String Optional --Enable Boolean Optional --Payload String Optional --RequestId String Optional -
次のコマンドを実行して、時間ベースのスケジュールを作成します。
aliyun fnf CreateSchedule --FlowName test --ScheduleName "schedule-test" --CronExpression "@every 1m" --Payload "{\"key\":\"value\"}" --Description "test schedule" --Enable true想定される出力:
{ "CreatedTime": "2024-06-26T03:36:57Z", "CronExpression": "@every 1m", "Description": "test schedule", "Enable": true, "LastModifiedTime": "2024-06-26T03:36:57Z", "Payload": "{\"key\":\"value\"}", "RequestId": "c7034d83-d1ba-648c-f05c-156439a857d7", "ScheduleId": "b888a48f-229d-4b35-adc6-5c63a37cf3b1", "ScheduleName": "schedule-test" }
スケジュール時間パラメーター
時間ベースのスケジュールでは、次のパラメーターを使用します:
{
payload: "payload"
cronExpression: "cronExpression"
enable: true|false
}
-
payload:スケジュールされた実行のカスタム入力。ペイロードは JSON フォーマットである必要があります。
-
cronExpression:ワークフローのスケジュール。次の 2 種類の式がサポートされています。
説明1 分未満の間隔は無効です。
-
@every 値 単位
この式は、固定間隔でワークフローを実行します。値は正の整数である必要があり、単位は "m" (分) である必要があります。
シナリオ例
式
5 分ごとに実行
@every 5m
1.5 時間ごとに実行
@every 90m
-
時間式
-
cron 式
デフォルトでは、cron 式は協定世界時 (UTC) を使用します。標準の cron 式のフォーマットは次のとおりです:
秒 分 時 日 (月) 月 曜日。 -
タイムゾーン式
特定のタイムゾーンでタスクを実行するには、式の前に CRON_TZ=<TIMEZONE> を付けます。たとえば、Asia/Shanghai タイムゾーンで毎月 1 日の 04:00 にフローをトリガーするには、
CRON_TZ=Asia/Shanghai 0 0 4 1 * *を使用します。説明ご利用のタイムゾーンで夏時間 (DST) が採用されている場合、DST の切り替え時に実行が重複したり、欠落したりすることがあります。これらの切り替え期間中に実行をスケジュールすることは避けることを推奨します。
次の表は、時間式の一般的な例を示しています。たとえば、北京時間の 12:00 にワークフローをスケジュールする場合、対応する cron 式は
0 0 4 * * *で、タイムゾーン式はCRON_TZ=Asia/Shanghai 0 0 12 * * *です。例
cron 式
タイムゾーン式
毎日 12:00 にワークフローを実行するようにスケジュールします。
0 0 4 * * *CRON_TZ=Asia/Shanghai 0 0 12 * * *毎日 12:30 にワークフローを実行するようにスケジュールします。
0 30 4 * * *CRON_TZ=Asia/Shanghai 0 30 12 * * *毎時 26、29、33 分にワークフローを実行します。
0 26,29,33 * * * *CRON_TZ=Asia/Shanghai 0 26,29,33 * * * *月曜日から金曜日の毎日 12:30 にワークフローを実行するようにスケジュールします。
0 30 4 ? * MON-FRICRON_TZ=Asia/Shanghai 0 30 12 ? * MON-FRI月曜日から金曜日の 12:00 から 14:00 まで 5 分ごとにワークフローを実行するようにスケジュールします。
0 0/5 4-6 ? * MON-FRICRON_TZ=Asia/Shanghai 0 0/5 12-14 ? * MON-FRI1 月から 4 月までの毎日 12:00 にワークフローを実行するようにスケジュールします。
0 0 4 ? JAN,FEB,MAR,APR *CRON_TZ=Asia/Shanghai 0 0 12 ? JAN,FEB,MAR,APR *-
フィールドの説明
フィールド
値の範囲
使用可能な特殊文字
秒
0–59
サポートされていません
分
0–59
, - * /
時
0–23
, - * /
日 (月)
1–31
, - * ? /
月
1–12 または JAN–DEC
, - * /
曜日
1–7 または MON–SUN
, - * ?
-
特殊文字の説明
文字
定義
例
*
フィールド内の任意の値を示します。
[分] フィールドで * は、アクションが 1 分ごとに実行されることを意味します。
,
値のリストを示します。
[曜日] フィールドで MON,WED,FRI は、月曜日、水曜日、金曜日を示します。
-
値の範囲を示します。
[時] フィールドで 10-12 は、10:00 から 12:00 (UTC) までの時間範囲を示します。
?
特定の値がないことを示します。
[日 (月)] または [曜日] のいずれかに値を指定し、両方には指定しない場合に使用します。たとえば、[日 (月)] に日付を指定した場合、[曜日] フィールドでは
?を使用します。/
増分を示します。n/m は、n から始まる m の増分を示します。
[分] フィールドで 3/5 は、毎時 3 分から 5 分ごとにワークフローを実行します。
-
-
入力フォーマット
時間ベースのスケジュールがワークフローをトリガーすると、サービスは次の JSON オブジェクトを入力として渡します:
{
"triggerTime": "2020-01-01T00:00:00Z",
"triggerName": "time-trigger",
"payload": {
"key": "value",
"key_int": 1
}
}
-
triggerTime:ワークフローの実行がスケジュールされた時間。指定された時間にワークフローが複数回スケジュールされる場合があります。この値は重複排除に使用できます。
-
triggerName:時間ベースのスケジュール名。
-
payload:スケジュール設定で定義したカスタム入力。
$.payload.keyのような式を使用して、フロー定義でこのオブジェクトの値にアクセスできます。詳細については、「入力と出力」をご参照ください。