Azure Logic Apps で自動化された定期的なタスク、プロセス、ワークフローのスケジュールを設定して実行する

Logic Apps は、自動化された定期的なタスクとプロセスを作成し、スケジュールに従って実行するのに役立ちます。 組み込みの繰り返しトリガーまたはスライディング ウィンドウ トリガー (スケジュール タイプのトリガー) で始まるロジック アプリ ワークフローを作成することによって、直ちに、後で、または定期的な間隔でタスクを実行できます。 Azure の内部および外部のサービス (HTTP または HTTPS エンドポイントなど) を呼び出したり、Azure Storage や Azure Service Bus などの Azure サービスにメッセージを投稿したり、ファイル共有にアップロードされたファイルを取得したりできます。 繰り返しトリガーを使うと、タスクの実行に対して複雑なスケジュールと高度な繰り返しを設定することもできます。 組み込みのスケジュール トリガーおよびアクションの詳細については、「スケジュール トリガー」および「スケジュールのアクション」を参照してください。

ヒント

スケジュールされたジョブごとに個別のロジック アプリを作成したり、リージョンおよびサブスクリプションあたりのワークフロー数に関する制限に達したりすることなく、繰り返しのワークロードをスケジュールして実行できます。 代わりに、Azure クイックスタート テンプレート: Logic Apps ジョブ スケジューラによって作成されたロジック アプリ パターンを使用できます。

Logic Apps ジョブ スケジューラ テンプレートでは、TimerJob ロジック アプリを呼び出す CreateTimerJob ロジック アプリを作成します。 その後、HTTP 要求を作成し、その要求の入力としてスケジュールを渡すことによって、CreateTimerJob ロジック アプリを API として呼び出すことができます。 CreateTimerJob ロジック アプリを呼び出すたびに、TimerJob ロジック アプリも呼び出されます。これにより、指定されたスケジュールに基づいて、または指定された制限を満たすまで継続的に実行される新しい TimerJob インスタンスが作成されます。 それにより、インスタンスが個々のロジック アプリ ワークフロー定義またはリソースではなくなるため、ワークフローの制限を気にすることなく、TimerJob インスタンスを必要な数だけ実行できます。

この一覧には、スケジュール組み込みトリガーで実行できるタスクのいくつかの例が示されています。

  • 内部データを取得する。毎日 SQL ストアド プロシージャを実行する、など。

  • 外部データを取得する。15 分ごとに NOAA から天気予報を取り込む、など。

  • レポート データを送信する。過去 1 週間について特定の金額を超えるすべての注文の概要をメールする、など。

  • データを処理する。平日に毎日、ピーク時間帯を避けて、その日にアップロードした画像を圧縮する、など。

  • データをクリーンアップする。3 か月より前のツイートをすべて削除する、など。

  • データをアーカイブする。毎日午前 1 時 00 分に、今後 9 か月間保管する請求書をバックアップ サービスにプッシュする、など。

また、スケジュール組み込みアクションを使って、次のアクションが実行される前にワークフローを一時停止することもできます。次はその例です。

  • 電子メールで状態の更新情報を送信するのを平日まで待つ。

  • HTTP 呼び出しが終了するまでワークフローを遅らせてから、再開して結果を取得する。

この記事では、スケジュール組み込みトリガーとアクションの機能について説明します。

スケジュール トリガー

特定のどのサービスまたはシステムにも関連付けられていない繰り返しトリガーまたはスライディング ウィンドウ トリガーを使用してロジック アプリ ワークフローを開始できます。 これらのトリガーでは、指定された繰り返しに基づいてワークフローが開始されて実行されます。その間隔と頻度を選択する場合、秒数、分数、時間数、日数、週数、または月数を使用できます。 また、開始日時をタイム ゾーンと共に設定することもできます。 トリガーが起動されるたびに、Logic Apps は、ロジック アプリの新しいワークフロー インスタンスを作成して実行します。

これらのトリガーの違いを以下に示します。

  • 繰り返し: 指定されたスケジュールに基づいて、一定の間隔でワークフローが実行されます。 中断やワークフローの無効化などが原因でトリガーで繰り返しが実行されなかった場合、その実行されなかった繰り返しは繰り返しトリガーによって処理されず、スケジュールされている次の間隔によって繰り返しが再開されます。

    頻度として [日] を選択した場合は、時間と分を指定できます (毎日 2:30 など)。 頻度として [週] を選択した場合は、曜日も選択できます (水曜日と土曜日など)。 また、開始日時を、繰り返しスケジュールのタイムゾーンと共に指定することもできます。

    ヒント

    繰り返しに特定の開始日時が指定されていない場合は、トリガーの繰り返し設定にかかわらず、ロジック アプリを保存またはデプロイすると、直ちに最初の繰り返しが実行されます。 この動作を回避するには、最初の繰り返しを実行する開始日時を指定してください。

    将来の繰り返しを実行する特定時刻など、その他の詳細なスケジュール オプションが繰り返しに指定されていない場合、それらの繰り返しは前回の実行時刻に基づいて行われます。 その結果、ストレージ呼び出し中の待機時間などの要因によって、それらの繰り返しの開始時刻がずれる可能性があります。 ロジック アプリで繰り返しが行われないことがないようにするには (特に頻度が日単位以上の場合)、次のいずれかのオプションを試してください。

    • [設定時刻 (時間)][設定時刻 (分)] という名前のプロパティ ( [日][週] の頻度でのみ使用可能) を使用して、繰り返しの開始日時と後続の繰り返しを実行する特定の時刻を指定します。

    • 繰り返しトリガーではなく、スライディング ウィンドウ トリガーを使用します。

    詳しくは、繰り返しトリガーで繰り返されるタスクとワークフローを作成、スケジュール設定、実行する方法に関する記事をご覧ください。

  • スライディング ウィンドウ: 一定の間隔でワークフローが実行され、データは連続したチャンクで処理されします。 中断または無効になったワークフローなどが原因でトリガーで繰り返しが行われなかった場合は、スライディング ウィンドウ トリガーが前に戻って、実行されなかった繰り返しを処理します。

    開始日時、タイム ゾーン、およびワークフローで各繰り返しを遅延する期間を指定できます。 このトリガーでは、1 日の特定の時間帯、1 時間の特定の分、週の特定の曜日などの詳細スケジュールはサポートされていません。 詳しくは、「Create, schedule, and run recurring tasks and workflows with the Sliding Window trigger」(スライディング ウィンドウ トリガーで繰り返されるタスクとワークフローを作成、スケジュール設定、実行する) をご覧ください。

スケジュールのアクション

ロジック アプリ ワークフローでの任意のアクションの後、遅延アクションと延期期限アクションを使って、次のアクションを実行する前にワークフローに待機させることができます。

開始日時のパターン

開始日時で繰り返しを制御する方法と、これらの繰り返しが Logic Apps サービスによって実行される方法を示すいくつかのパターンを次に示します。

開始時刻 スケジュールなしの繰り返し スケジュールありの繰り返し (繰り返しトリガーのみ)
{なし} 初回ワークロードが即座に実行されます。

それ以降は、前回の実行時刻に基づいてワークロードが実行されます。

初回ワークロードが即座に実行されます。

それ以降は、指定されたスケジュールに基づいてワークロードが実行されます。

開始時刻を過去に設定 繰り返し トリガー: 実行時刻は、指定された開始時刻に基づいて計算され、過去の実行時刻については放棄されます。

初回ワークロードが実行されるのは、次の実行時刻となります。

それ以降は、前回の実行時刻に基づいてワークロードが実行されます。

スライディング ウィンドウ トリガー: 実行時刻は、指定された開始時刻に基づいて計算され、過去の実行時刻が考慮されます。

それ以降は、指定された開始時刻に基づいてワークロードが実行されます。

詳細については、この表の後に示した例を参照してください。

初回ワークロードは、開始時刻 "以降" に、その開始時刻から計算されたスケジュールに基づいて実行されます。

それ以降は、指定されたスケジュールに基づいてワークロードが実行されます。

注: スケジュールありの繰り返しを指定したが、スケジュールの時間または分を指定していない場合は、最初の実行時刻からの時間または分を使用して、Logic Apps によって将来の実行時間が計算されます。

現在または将来の開始時刻 初回ワークロードが実行されるのは、指定された開始時刻となります。

繰り返し トリガー: 前回の実行時刻に基づいて以降のワークロードが実行されます。

スライディング ウィンドウ トリガー: 指定された開始時刻に基づいて以降のワークロードが実行されます。

初回ワークロードは、開始時刻 "以降" に、その開始時刻から計算されたスケジュールに基づいて実行されます。

それ以降は、指定されたスケジュールに基づいてワークロードが実行されます。

注: スケジュールありの繰り返しを指定したが、スケジュールの時間または分を指定していない場合は、最初の実行時刻からの時間または分を使用して、Logic Apps によって将来の実行時間が計算されます。

開始時刻が過去、繰り返しあり、スケジュールなしの例

現在の日時が、2017 年 9 月 8 日午後 1:00 であるとします。 2017 年 9 月 7 日午後 2:00 (これは過去の時刻です) の開始日時と、2 日ごとに実行される繰り返しを指定します。

開始時刻 現在の時刻 繰り返し スケジュール
2017-09-07 T14:00:00Z
(2017 年 9 月 7 日午後 2 時 00 分)
2017-09-08 T13:00:00Z
(2017 年 9 月 8 日午後 1 時 00 分)
2 日ごと {なし}

繰り返しトリガーの場合、Logic Apps エンジンでは、開始時刻に基づいて実行時刻が計算されます。過去の実行時刻は放棄され、最初の実行には次に訪れる将来の開始時刻が使われて、最後の実行時刻に基づいて将来の実行が計算されます。

この繰り返しは次のようになります。

開始時刻 初回実行時刻 将来実行時刻
2017-09-07 の 2:00 PM 2017-09-09 の 2:00 PM 2017-09-11 の 2:00 PM
2017-09-13 の 2:00 PM
2017-09-15 の 2:00 PM
以下同様

したがって、開始時刻としてどれだけ古い日付 (2017-09-05 の 2:00 PM や 2017-09-01 の 2:00 PM など) を指定したとしても、最初の実行には常に次の将来の開始時刻が使われます。

スライディング ウィンドウ トリガーの場合、Logic Apps エンジンでは、開始時刻に基づいて実行時刻が計算されます。過去の実行時刻が考慮され、最初の実行には開始時刻が使われて、開始時刻に基づいて将来の実行が計算されます。

この繰り返しは次のようになります。

開始時刻 初回実行時刻 将来実行時刻
2017-09-07 の 2:00 PM 2017-09-08 の午後 1:00 (現在時刻) 2017-09-09 の 2:00 PM
2017-09-11 の 2:00 PM
2017-09-13 の 2:00 PM
2017-09-15 の 2:00 PM
以下同様

したがって、開始時刻としてどれだけ古い日付 (2017-09-05 の 2:00 PM や 2017-09-01 の 2:00 PM など) を指定したとしても、最初の実行には指定した開始時刻が使われます。

夏時間と標準時間での繰り返し

定期的な組み込みトリガーでは、指定されたタイム ゾーンを含め、設定されたスケジュールが守られます。 タイム ゾーンを選択しないと、トリガーの実行時刻が夏時間 (DST) の影響を受ける可能性があります。たとえば、DST が開始されると開始時刻が 1 時間進められ、DST が終了すると 1 時間戻されます。 Logic Apps は、ジョブのスケジュールを設定するとき、処理するメッセージをキューに入れ、最後のジョブが実行された UTC 時刻と、次のジョブの実行がスケジュールされている UTC 時刻に基づいて、そのメッセージが使用可能になる時刻を指定します。

このシフトを回避して、指定された開始時刻にロジック アプリが実行されるようにするには、タイム ゾーンを必ず選択してください。 そうすることで、ロジック アプリの UTC 時刻も、季節時間の変化に合わせてシフトされます。

注意

2:00 AM から 3:00 AM の間に開始されるトリガーでは問題が発生する可能性があります。これは、DST の変更は 2:00 AM に行われるため、開始時刻が無効またはあいまいになる可能性があるからです。 同じあいまいな間隔内に複数のロジック アプリがある場合は、それらが重複する可能性があります。 この理由により、2:00 AM から 3:00 AM の間の開始時間は避けることをお勧めします。

たとえば、毎日実行される 2 つのロジック アプリがあるとします。 1 つのロジック アプリは 1:30 AM (ローカル時刻) に実行され、もう 1 つのロジック アプリは 2:30 AM (ローカル時刻) に実行されます。 DST が開始されたとき、および終了したときに、これらのアプリの開始時刻はどうなるでしょうか。

  • 時間が 1 時間進められると、トリガーは実行されるでしょうか。

  • 時間が 1 時間戻されると、トリガーは 2 回実行されるのでしょうか。

これらのロジック アプリで UTC-6:00 中部標準時 (米国とカナダ) のゾーンが使用されている場合、このシミュレーションでは、DST の変化に対応するために、UTC 時刻が 2019 年にどのように変化したかを示します。実行がスキップされたり重複して実行されたりすることなく、アプリが継続して想定されたローカル時刻に実行されるように、必要に応じて時間を 1 時間進めたり戻したりする変化です。

  • 2019 年 3 月 10 日:DST が 2:00 AM に開始される。時間を 1 時間進める

    DST の開始後に時刻補正を行うために、UTC 時刻は 1 時間戻されます。これにより、ロジック アプリは引き続き同じローカル時刻に実行されます。

    • ロジック アプリ #1

      Date 時刻 (ローカル) 時刻 (UTC) Notes
      2019 年 3 月 9 日 1:30:00 AM 7:30:00 AM DST が有効になる日より前の UTC。
      2019 年 3 月 10 日 1:30:00 AM 7:30:00 AM DST が有効になっていないため、UTC は同じです。
      2019 年 3 月 11 日 1:30:00 AM 6:30:00 AM DST が有効になった後、UTC は 1 時間戻されます。
    • ロジック アプリ #2

      Date 時刻 (ローカル) 時刻 (UTC) Notes
      2019 年 3 月 9 日 2:30:00 AM 8:30:00 AM DST が有効になる日より前の UTC。
      2019 年 3 月 10 日 3:30:00 AM* 8:30:00 AM DST は既に有効になっています。UTC-6:00 のタイムゾーンが UTC-5:00 に変わっているため、ローカル時刻は 1 時間進んでいます。 詳細については、2:00 AM - 3:00 AM の間に開始されるトリガーに関する記事を参照してください。
      2019 年 3 月 11 日 2:30:00 AM 7:30:00 AM DST が有効になった後、UTC は 1 時間戻されました。
  • 2019 年 11 月 3 日: DST は 2:00 AM に終了し、時間が 1 時間戻される

    時刻補正を行うために、UTC 時刻は 1 時間進められます。これにより、ロジック アプリは引き続き同じローカル時刻に実行されます。

    • ロジック アプリ #1

      Date 時刻 (ローカル) 時刻 (UTC) Notes
      2019 年 11 月 2 日 1:30:00 AM 6:30:00 AM
      2019 年 11 月 3 日 1:30:00 AM 6:30:00 AM
      2019 年 11 月 4 日 1:30:00 AM 7:30:00 AM
    • ロジック アプリ #2

      Date 時刻 (ローカル) 時刻 (UTC) Notes
      2019 年 11 月 2 日 2:30:00 AM 7:30:00 AM
      2019 年 11 月 3 日 2:30:00 AM 8:30:00 AM
      2019 年 11 月 4 日 2:30:00 AM 8:30:00 AM

1 回だけ実行

将来 1 回だけロジック アプリを実行する場合は、 [Scheduler: Run once jobs] (Scheduler: ジョブを 1 回実行する) テンプレートを使用できます。 新しいロジック アプリを作成したら、Logic Apps デザイナーを開く前に、 [テンプレート] セクションで [カテゴリ] 一覧から [スケジュール] を選択し、テンプレートを選択します。

[Scheduler: Run once jobs] (Scheduler: ジョブを 1 回実行する) テンプレートを選択する

または、HTTP 要求の受信時 - 要求 トリガーでロジック アプリを開始できる場合は、開始時刻をパラメーターとしてトリガーに渡します。 初めてのアクションの場合は、延期期限 - スケジュール アクションを使用し、次のアクションが実行を開始する時刻を指定します。

月の最終日に 1 回実行

繰り返しトリガーを月の最終日に 1 回だけ実行するには、デザイナーではなくコード ビューを使用して、ワークフローの基になる JSON 定義でトリガーを編集する必要があります。 ただし、以下の例を使用できます。

"triggers": {
    "Recurrence": {
        "recurrence": {
            "frequency": "Month",
            "interval": 1,
            "schedule": {
                "monthDays": [-1]
            }
        },
        "type": "Recurrence"
    }
}

繰り返しの例

次に、オプションをサポートするトリガーに対して設定できるさまざまな繰り返しの例を示します。

トリガー 繰り返し Interval 頻度 開始時刻 設定曜日 設定時刻 (時間) 設定時刻 (分) Note
繰り返し、
スライディング ウィンドウ
15 分ごとに実行 (開始日時は指定せず) 15 {なし} {使用不可} {なし} {なし} このスケジュールは直ちに開始され、以降、繰り返しのタイミングは前回の実行時刻に基づいて計算されます。
繰り返し、
スライディング ウィンドウ
15 分ごとに実行 (開始日時を指定) 15 startDate T startTime Z {使用不可} {なし} {なし} このスケジュールは、指定された開始日時 "以降" に開始され、その後、繰り返しのタイミングは前回の実行時刻に基づいて計算されます。
繰り返し、
スライディング ウィンドウ
1 時間ごとの正時に実行 (開始日時を指定) 1 startDate Thh:00:00Z {使用不可} {なし} {なし} このスケジュールは、指定された開始日時 "以降" に開始されます。 それ以降の繰り返しは、Logic Apps によって開始時刻から計算された毎時 "00" 分ちょうどに実行されます。

頻度が [週] または [月] である場合、このスケジュールは 1 週間に 1 日だけ、または 1 か月に 1 日だけ実行されます。

繰り返し、
スライディング ウィンドウ
毎日 1 時間ごとに実行 (開始日時は指定せず) 1 {なし} {使用不可} {なし} {なし} このスケジュールは直ちに開始され、以降、繰り返しのタイミングは前回の実行時刻に基づいて計算されます。

頻度が [週] または [月] である場合、このスケジュールは 1 週間に 1 日だけ、または 1 か月に 1 日だけ実行されます。

繰り返し、
スライディング ウィンドウ
毎日 1 時間ごとに実行 (開始日時を指定) 1 startDate T startTime Z {使用不可} {なし} {なし} このスケジュールは、指定された開始日時 "以降" に開始され、その後、繰り返しのタイミングは前回の実行時刻に基づいて計算されます。

頻度が [週] または [月] である場合、このスケジュールは 1 週間に 1 日だけ、または 1 か月に 1 日だけ実行されます。

繰り返し、
スライディング ウィンドウ
毎正時 15 分に実行 (開始日時を指定) 1 startDate T00:15:00Z {使用不可} {なし} {なし} このスケジュールは、指定された開始日時 "以降" に開始されます。 それ以降の繰り返しは、Logic Apps によって開始時刻から計算された "15" 分に実行されます (00:15 AM、1:15 AM、2:15 AM など)。
繰り返し 毎正時 15 分に実行 (開始日時は指定せず) 1 {なし} {使用不可} 0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、22、23 15 このスケジュールは 00:15 AM、1:15 AM、2:15 AM などに実行されます。 また、このスケジュールは、頻度を "時" に、開始時刻を "15" 分に設定することと等価です。
繰り返し 15 分ごとに、指定した刻みで実行されます (開始日時の指定なし)。 1 {なし} {使用不可} 0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、22、23 0、15、30、45 このスケジュールは、次に来る 15 分刻みの時刻になるまで開始されません。
繰り返し 毎日、ロジック アプリを保存したときからの分刻みの時間を午前 8 時に "加えた" 時刻に実行 1 {なし} {使用不可} 8 {なし} 開始日時が指定されていない場合、このスケジュールは、ロジック アプリを保存した (PUT 操作) 時刻に基づいて実行されます。
繰り返し 毎日午前 8:00 に実行 (開始日時を指定) 1 startDate T08:00:00Z {使用不可} {なし} {なし} このスケジュールは、指定された開始日時 "以降" に開始されます。 今後の発生は毎日午前 8:00 に実行されます。
繰り返し 毎日午前 8:00 に実行 (開始日時の指定なし) 1 {なし} {使用不可} 8 00 このスケジュールは毎日午前 8:00 に実行されます。
繰り返し 毎日午前 8:00 と午後 4:00 に実行 1 {なし} {使用不可} 8、16 0
繰り返し 毎日午前 8:30、午前 8:45、午後 4:30、午後 4:45 に実行 1 {なし} {使用不可} 8、16 30、45
繰り返し 毎週土曜日の午後 5:00 に実行 (開始日時の指定なし) 1 Week {なし} "土曜日" 17 0 このスケジュールは毎週土曜日の 5:00 PM に実行されます。
繰り返し 毎週土曜日の午後 5:00 に実行 (開始日時を指定) 1 Week startDate T17:00:00Z "土曜日" {なし} {なし} このスケジュールは、指定された開始日時 "以降" に開始されます。このケースでは 2017 年 9 月 9 日の 5:00 PM となります。 以降、繰り返しが実行されるのは毎週土曜日の 5:00 PM となります。
繰り返し ロジック アプリを保存したときからの分刻みの時間を火曜日、水曜日の午後 5 時に "加えた" 時刻に実行 1 Week {なし} "火曜日"、"木曜日" 17 {なし}
繰り返し 業務時間中 1 時間ごとに実行 1 Week {なし} 土曜日と日曜日を除くすべての曜日を選択 時刻 (時) を選択 時刻 (分) を選択 たとえば、業務時間が午前 8:00 から 午後 5:00 である場合、時刻 (時) として "8、9、10、11、12、13、14、15、16、17" を選択し、"さらに" 時刻 (分) として "0" を選択します。
繰り返し 週末に毎日 1 回実行 1 Week {なし} "土曜日"、"日曜日" 時刻 (時) を選択 時刻 (分) を選択 このスケジュールは毎週土曜日と日曜日に、指定されたスケジュールで実行されます。
繰り返し 隔週月曜日のみ 15 分間隔で実行 2 Week {なし} "月曜日" 0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、22、23 0、15、30、45 このスケジュールは、隔週月曜日の 15 分刻みの時刻ごとに実行されます。
繰り返し 毎月実行 1 Month startDate T startTime Z {使用不可} {使用不可} {使用不可} このスケジュールは、指定された開始日時 "以降" に開始され、その後、繰り返しのタイミングは開始日時に基づいて計算されます。 開始日時を指定しなかった場合、このスケジュールでは作成日時が使用されます。
繰り返し 1 か月に 1 日、1 時間ごとに実行 1 Month {「注」を参照} {使用不可} 0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、22、23 {「注」を参照} 開始日時を指定しなかった場合、このスケジュールでは作成日時が使用されます。 繰り返しのスケジュールの分を制御するには、開始時刻の分の要素を指定するか、作成時刻を使用します。 たとえば、開始時刻または作成時刻が 8:25 AM である場合、このスケジュールは 8:25 AM、9:25 AM、10:25 AM などに実行されます。

次のステップ