すべてのプロダクト
Search
ドキュメントセンター

CloudFlow:時間ベースのスケジュールの作成

最終更新日:Jan 12, 2025

Serverless Workflow では、cron 式を設定することでワークフローの実行をスケジュールできます。このトピックでは、Serverless Workflow の時間ベースのスケジュールを作成する方法について説明します。

前提条件

ワークフローが作成されていること。詳細については、「フローの作成」をご参照ください。

Serverless Workflow コンソールで時間ベースのスケジュールを作成する

  1. Serverless Workflow コンソール にログインします。

  2. [フロー] ページで、時間ベースのスケジュールを作成するワークフローを見つけ、[名前] 列でワークフローの名前をクリックします。

    workflow-name

  3. [詳細] ページで、[スケジュール] タブをクリックします。[スケジュール管理] セクションで、[スケジュールの作成] をクリックします。

    image

  4. [スケジュールの作成] パネルで、パラメーターを設定し、[OK] をクリックします。次の表では、設定が必要なパラメーターについて説明します。

    パラメーター

    説明

    時間ベースのスケジュールの名前。

    カスタム時間ベースのスケジュールの名前を入力します。

    schedule-test

    スケジュール時刻を設定するためのモードを選択し、時間ルールを指定します。

    有効な値:

    • [cron 式]: 標準の cron 式を使用してスケジュール時刻を設定します。詳細については、「時間ベースのスケジュールの設定パラメーター」をご参照ください。

    • [時間間隔]: @every 式を使用してスケジュール時刻を設定します。

      ワークフローをスケジュールする間隔を指定します。単位:分。

    [時間間隔] を選択し、時間間隔を 1 に設定します。これは、ワークフローが毎分スケジュールされることを示します。························

    ペイロード

    JSON オブジェクト形式でカスタムパラメーターを入力します。

    {"key": "value"}

    説明

    時間ベースのスケジュールの説明を入力します。

    テストスケジュール

    スケジュールの有効化

    時間ベースのスケジュールを有効または無効にします。

    [スケジュールの有効化] をオンにします。

    • 時間ベースのスケジュールを作成した後、ワークフローの [スケジュール] タブでスケジュールを表示できます。create-result

    • また、ワークフローのスケジュールされた実行レコードは、ワークフローの [実行] タブで表示できます。この例では、ワークフローは毎分実行されます。execution-result

Alibaba Cloud CLI を使用して時間ベースのスケジュールを作成する

使用する前に、Alibaba Cloud CLI をインストールして設定する必要があります。詳細については、「Alibaba Cloud CLI とは」をご参照ください。

  1. オプション: 次のコマンドを実行して、時間ベースのスケジュールを作成するための API 操作のリクエストパラメーターを表示します。

    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  // オプション
  2. 次のコマンドを実行して、時間ベースのスケジュールを作成します。

    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"  // cron式
    enable: true|false  // 有効/無効
}
  • payload: JSON オブジェクト形式の時間ベースのスケジュールのカスタム入力を指定します。

  • cronExpression: ワークフローがスケジュールされる時間を指定します。スケジュール時刻は、次のいずれかの形式で表現できます。

    説明

    最小スケジュール間隔は 1 分です。指定された間隔が 1 分より短い場合は無効です。

    • @every 値 単位

      ワークフローは、「値 単位」で指定された間隔でスケジュールされます。式では、「値」は正の整数、「単位」は m です。

      5 分ごとにスケジュール

      @every 5m

      1.5 時間ごとにスケジュール

      @every 90m

    • 時間式

      • Cron 式

        cron 式は協定世界時 (UTC) を使用します。標準の cron 式の形式は、秒 分 時 日 月 曜日 です。

      • タイムゾーン式

        特定のタイムゾーンに基づいてワークフローをスケジュールする場合は、CRON_TZ 式を使用できます。たとえば、毎月 1 日の午前 4 時 (UTC+8) にワークフローをトリガーする場合、CRON-TZ を Asia/Shanghai 0 0 4 1 * * に設定できます。

        説明

        タイムゾーンで夏時間 (DST) と冬時間が使用されている場合、DST と冬時間の間で時間が変更されると、関数はより頻繁に、またはより少なく実行されます。DST と冬時間の間の変更が発生する時点に実行時刻を設定しないことをお勧めします。

      次の表に、時間式の一般的な例を示します。たとえば、ワークフローを毎日 12:00 (UTC+8) にスケジュールする場合、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-FRI

      CRON_TZ=Asia/Shanghai 0 30 12 ? * MON-FRI

      ワークフローを月曜日から金曜日まで毎日 12:00 から 14:00 まで 5 分ごとにスケジュールします。

      0 0/5 4-6 ? * MON-FRI

      CRON_TZ=Asia/Shanghai 0 0/5 12-14 ? * MON-FRI

      ワークフローを 1 月から 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

        , - * ?

      • 特殊文字

        文字

        説明

        *

        任意またはすべてを示します。

        フィールドでは、0 はワークフローが毎分 0 秒に実行されることを指定します。

        ,

        値のリストを示します。

        曜日 フィールドでは、MON は月曜日、WED は水曜日、FRI は金曜日を示します。

        -

        範囲を示します。

        フィールドでは、10-12 は UTC で 10:00 から 12:00 までの時間範囲を指定します。

        ?

        不確定な値を示します。

        この文字は、他の指定された値と一緒に使用されます。たとえば、特定の日付を指定したが、曜日が何曜日かは気にしない場合は、曜日 フィールドでこの特殊文字を使用できます。

        /

        増分を指定します。n/m は、n の位置から始まる m の増分を示します。

        フィールドでは、3/5 はワークフローが 3 分目から 5 分ごとに実行されることを示します。

入力形式

時間ベースのスケジュールは、次の入力形式に基づいてワークフローをスケジュールするために実行されます。

{
  "triggerTime": "2020-01-01T00:00:00Z",  // トリガー時間
  "triggerName": "time-trigger",  // トリガー名
  "payload": {  // ペイロード
    "key": "value",
    "key_int": 1
  }
}
  • triggerTime: ワークフローがスケジュールされる時間を指定します。ワークフローは、指定された時間に複数回スケジュールされる場合があります。時間に基づいてスケジューリングを重複排除できます。

  • triggerName: 時間ベースのスケジュールの名前を指定します。

  • payload: スケジューリング設定で入力を指定できます。ワークフローは、入力 JSON 文字列を JSON dict 形式に展開します。$.payload.Key を使用して、ワークフロー定義で読み取ることができます。詳細については、「入力と出力」をご参照ください。