Azure Logic Apps で Recurrence トリガーを使用して繰り返しワークフローをスケジュール設定および実行する
適用対象: Azure Logic Apps (従量課金プラン + Standard)
スケジュールに従ってワークフローを開始して実行する場合、最初の手順として汎用の繰り返しトリガーを使用できます。 ワークフローを開始する日付、時刻、タイム ゾーン、およびそのワークフローを反復処理するための繰り返しを設定できます。 次の一覧に、このトリガーがサポートするいくつかのパターンを、より高度な繰り返しや複雑なスケジュールと共に示します。
特定の日付と時刻に実行し、その後は n 秒、分、時間、日、週、または月ごとに繰り返す。
直ちに実行し、n 秒、分、時間、日、週、または月ごとに繰り返す。
直ちに実行し、1 つ以上の特定の時刻 (午前 8 時と午後 5 時など) に毎日繰り返す。
直ちに実行し、毎週特定の曜日 (土曜日と日曜日など) に繰り返す。
直ちに実行し、毎週特定の曜日の特定の時刻 (月曜日から金曜日の午前 8 時と午後 5 時など) に繰り返す。
Note
[設定時刻 (時間)] や [設定時刻 (日)] などの高度なスケジュール オプションは、Azure Logic Apps ランタイムで直接実行される繰り返しやスライディング ウィンドウ トリガーなどの組み込みのポーリング トリガーでのみ使用できます。 Microsoft により管理され、Azure でホストおよび実行されるコネクタの場合、ポーリング トリガーは、高度なスケジュール オプションではなく、[間隔] と [頻度] の値のみを使用して、次の繰り返しを計算します。
繰り返しトリガーは特定のサービスに関連付けられないため、このトリガーは、従量課金ロジック アプリ ワークフローや Standard ロジック アプリ ステートフル ワークフローなど、ほぼすべてのワークフローで使用できます。 このトリガーは現在、標準ロジック アプリ "ステートレス" ワークフローでは使用できません。
繰り返しトリガーは組み込みのスケジュール コネクタに含まれていて、Azure Logic Apps ランタイムでネイティブに実行されます。 組み込みのスケジュール トリガーとアクションの詳細については、Azure Logic Apps を使用した定期的な自動タスク、ワークフローのスケジュールと実行に関するページを参照してください。
前提条件
Azure アカウントとサブスクリプション。 サブスクリプションをお持ちでない場合には、無料の Azure アカウントにサインアップしてください。
空のワークフローを含む従量課金または Standard のロジック アプリ リソース。
Note
標準ロジック アプリ ワークフローを作成した場合は、必ず "ステートフル" ワークフローを作成してください。 現在、ステートレス ワークフローでは繰り返しトリガーを使用できません。
繰り返しトリガーを追加する
従量課金か Standard のどちらのワークフローを使用しているかに基づいて、対応する手順に従ってください:
Azure portal で、ロジック アプリ リソースと空のワークフローを開きます。
繰り返しの間隔と頻度を設定します。 この例では、これらのプロパティを設定して、ワークフローを毎週実行します。たとえば、次のようになります。
プロパティ JSON での名前 必須 タイプ 説明 間隔 interval
はい Integer ワークフローの実行間隔を、[頻度] に指定された単位に基づいて表す正の整数。 間隔の最小値と最大値は次のとおりです。
- month: 1 ~ 16 か月
- Week: 1-71 週
- day: 1 ~ 500 日
- hour: 1 ~ 12,000 時間
- minute: 1 ~ 72,000 分
- second: 1 ~ 9,999,999 秒
たとえば間隔が 6 で、頻度が "月" である場合は、繰り返しは 6 か月ごとになります。頻度 frequency
はい String 繰り返しの時間の単位。秒、分、時、日、週、月のいずれかになります。
重要: [日]、[週]、[月] の頻度を選択し、将来の開始日時を指定する場合は、繰り返しを事前に設定してください。 そうしないと、ワークフローで最初の繰り返しがスキップされる場合があります。
- [日]: 事前に少なくとも 24 時間の日単位の繰り返しを設定します。
- [週]: 事前に少なくとも 7 日間の週単位の繰り返しを設定します。
- [月]: 少なくとも 1 か月前に毎月の繰り返しを設定します。Reccurrence トリガーを使用する場合は、次の考慮事項を確認します:
繰り返しに特定の開始日時を指定しない場合は、トリガーの繰り返し設定にかかわらず、ロジック アプリを保存またはデプロイすると、直ちに最初の繰り返しが実行されます。 この動作を回避するには、最初の繰り返しを実行する開始日時を指定してください。
将来の繰り返しを実行する特定の時刻など、他の高度なスケジュール オプションを指定しない場合、これらの繰り返しは前回の実行時刻に基づいています。 その結果、ストレージ呼び出し中の待機時間などの要因によって、それらの繰り返しの開始時刻がずれる可能性があります。
特に頻度が日数以上の場合に、ワークフローが繰り返しを見逃さないようにするには、次のオプションを試してください:
繰り返しの開始日時と、後続の繰り返しを実行する特定の時刻を指定します。 [設定時刻 (時間)] と [設定時刻 (分)] というプロパティを使用できます。これらを使用できるのは、頻度が [日] と [週] の場合のみです。
従量課金ロジック アプリ ワークフローの場合は、繰り返しトリガーではなく スライディング ウィンドウ トリガーを使用します。
ARM テンプレートを使用して繰り返しトリガーを持つ無効な従量課金ワークフローをデプロイする場合、デプロイ前に開始時刻パラメーターを設定しない限り、ワークフローを有効にするとトリガーが即座に起動します。
詳細スケジュール オプションを設定するには、[新しいパラメーターの追加] 一覧を開きます。 選択したオプションはすべて、選択後にトリガーに表示されます。
プロパティ JSON での名前 必須 タイプ 説明 タイム ゾーン timeZone
いいえ String 開始時刻を指定したときに限り適用されます。このトリガーに UTC オフセットを指定することはできないためです。 適用するタイム ゾーンを選択してください。 詳細については、「既定のタイム ゾーン」を参照してください。 [開始時刻] startTime
いいえ String 開始日と時刻を指定します。これには、最大で 49 年先の時刻を指定でき、また UTC の日付と時刻の形式 (ただし、UTC オフセットを除く) で日付と時刻に関する ISO 8601 規格に従っている必要があります。
YYYY-MM-DDThh:mm:ss (タイム ゾーンを選択した場合)
または
YYYY-MM-DDThh:mm:ssZ (タイム ゾーンを選択しなかった場合)
たとえば、2020 年 9 月 18 日午後 2:00 にする場合は、"2020-09-18T14:00:00" と指定し、太平洋標準時などのタイム ゾーンを選択します。 または、タイム ゾーンなしで「2020-09-18T14:00:00Z」と指定します。
重要: タイム ゾーンを選択しない場合は、末尾にスペースなしで文字 "Z" を追加する必要があります。 この "Z" は、同等の航海時間を表します。 タイム ゾーンの値を選択した場合は、開始時刻の値の末尾に "Z" を追加する必要はありません。 行った場合、"Z" は UTC 時刻形式を示すため、Logic Apps ではタイム ゾーンの値が無視されます。
単純なスケジュールでは、開始時刻と最初の実行時刻が一致するのに対して、複雑なスケジュールでは、トリガーが作動するのは開始時刻以降となります。 "開始日時の使用方法を具体的に教えてください"設定曜日 weekDays
いいえ 文字列または文字列配列 [週] を選択した場合、月曜日、火曜日、水曜日、木曜日、金曜日、土曜日、日曜日の中から、ワークフローを実行する曜日を 1 つまたは複数選択できます。 設定時刻 (時間) hours
いいえ 整数または整数配列 [日] または [週] を選択した場合は、ワークフローを実行する時刻として 0 ~ 23 の 1 つ以上の整数を選択できます。 たとえば、"10"、"12"、"14" を指定すると、その日の時間に対して午前 10 時、午後 12 時、午後 2 時が表示されます。
メモ: 既定では、1 日の分数は、繰り返しの開始時間に基づいて計算されます。 特定の時刻 (たとえば、午前 10:00、午後 12:00、午後 2:00) を設定するには、[設定時刻 (分)] という名前のプロパティを使用してこれらの値を指定します。設定時刻 (分) minutes
いいえ 整数または整数配列 [日] または [週] を選択した場合、ワークフローを実行する時刻 (分) として 0 ~ 59 の整数を選択できます (複数選択可)。
たとえば上の例で指定した時を使用し、分の要素に「30」を指定した場合、実行時刻は 10:30 AM、12:30 PM、2:30 PM となります。
注: トリガーされた実行のタイムスタンプが、スケジュールされた時刻から最大 1 分まで異なる場合があります。 後続のアクションに対し、タイムスタンプをスケジュールどおりに正確に渡す必要がある場合は、テンプレート式を使用してタイムスタンプを適宜変更してください。 詳細については、式の日付と時刻の関数に関するページを参照してください。たとえば、今日が 2020 年 9 月 4 日の金曜日だとします。 次の繰り返しトリガーは、指定された開始日時である 2020 年 9 月 18 日金曜日の午前 8:00 (太平洋標準時) "より前" に起動されることはありません。 ただし、繰り返しのスケジュールは月曜日の 10:30 AM、12:30 PM、2:30 PM にのみ設定されています。 最初にトリガーが作動してワークフロー インスタンスが作成される時刻は月曜日の午前 10 時 30 分となります。 開始時刻の動作について詳しくは、開始時刻の例を参照してください。
その後は、同じ日の 12:30 PM と 2:30 PM に実行されます。 繰り返しのたびに、ワークフロー インスタンスが新しく作成されます。 その後は、次の月曜日に再び、スケジュール全体が最初から繰り返されます。 "その他の繰り返しの例"
Note
トリガーには、指定した繰り返しのプレビューが表示されるのは、頻度として [日] または [週] を選択した場合のみです。
次に、他のアクションを使用してワークフローの作成を続けます。
ワークフロー定義 - 繰り返し
選択したオプションと共に Recurrence トリガー定義がどのように表示されるかを確認するには、従量課金ロジック アプリと標準ロジック アプリ (ステートフルのみ) でのワークフローの基になる JSON 定義を確認します。
ロジック アプリが従量課金か標準かに基づいて、次のいずれかのオプションを選択します。
従量課金: デザイナーのツール バーで、[コード ビュー] を選択します。 デザイナーに戻るには、コード ビューのエディター ツールバー上で [デザイナー] を選択します。
標準: ワークフロー メニューで、[コード ビュー] を選択します。 デザイナーに戻るには、ワークフロー メニューで [デザイナー] を選択します。
次の例は、ワークフローの基になる JSON 定義に繰り返しトリガー定義がどのように表示されるかを示しています。
"triggers": {
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Week",
"interval": 1,
"schedule": {
"hours": [
10,
12,
14
],
"minutes": [
30
],
"weekDays": [
"Monday"
]
},
"startTime": "2020-09-07T14:00:00Z",
"timeZone": "Pacific Standard Time"
}
}
}
Note
繰り返しトリガーの定義で、繰り返し条件に式またはパラメーターの参照がある場合、recurrence
プロパティが evaluatedRecurrence
プロパティと共に表示されます。 evaluatedRecurrence
プロパティは、式またはパラメーター参照からの評価された値を表します。 繰り返し条件で式またはパラメーター参照が指定されていない場合、evaluatedRecurrence
および recurrence
プロパティは同じです。
次の例は、各月の最終日にトリガーが 1 回だけ実行されるようにトリガー定義を更新する方法を示しています。
"triggers": {
"Recurrence": {
"recurrence": {
"frequency": "Month",
"interval": 1,
"schedule": {
"monthDays": [-1]
}
},
"type": "Recurrence"
}
}
1 回だけ実行
ワークフローを今後一度だけ実行するには、[Scheduler: Run once jobs] ワークフロー テンプレートを適用します。これは、従量課金ロジック アプリ ワークフローでのみ使用できます。 このテンプレートでは、繰り返しトリガーではなく、要求トリガーと HTTP アクションを使用します。この繰り返しパターンはサポートされません。
Azure portal で、従量課金ロジック アプリを作成します。
デザイナーで、空のワークフローを開きます。 デザイナーのツール バーで、[レガシ デザイナーを有効にする] を選択します。
デザイナーのツール バーで、[テンプレート] を選びます。
開いたページで、ビデオよりも後にある [テンプレート] セクションにスクロールして移動します。
[カテゴリ] の一覧で [スケジュール] を選択し、次のテンプレートを選択します。
デザイナー のツール バーで、[一般提供のデザイナー] を選択します。
次の一般的な手順に従って、[延期期間] という名前の [スケジュール] アクションを追加して、次のアクションが実行を開始する時刻を指定します。
または、HTTP 要求の受信時という名前の要求トリガーでワークフローを開始して、開始時刻をトリガーのパラメーターとして渡すことができます。
月の最終日に 1 回実行する
このタスクの場合、次の例を使用して、デザイナーではなくコード ビューを使用して、ワークフローの基になる JSON 定義で繰り返しトリガーを編集する必要があります。
"triggers": {
"Recurrence": {
"recurrence": {
"frequency": "Month",
"interval": 1,
"schedule": {
"monthDays": [-1]
}
},
"type": "Recurrence"
}
}
トリガーの繰り返しのシフトやずれ (夏時間)
Azure Logic Apps では、ジョブをスケジュールするために、処理するメッセージをキューに入れ、最後のジョブが実行された UTC 時刻と、次のジョブの実行がスケジュールされている UTC 時刻に基づいて、そのメッセージが使用可能になる時刻を指定します。 繰り返しにおいて開始時刻を指定する場合は、"タイム ゾーンを選択" して、指定した開始時刻にロジック アプリ ワークフローが実行されるようにしてください。 そうすることで、ロジック アプリの UTC 時刻も、季節の時間変化に合わせてシフトされます。 繰り返しのトリガーは、指定したタイム ゾーンを含め、設定したスケジュールに従います。
タイムゾーンを選択しないと、トリガーが実行されるタイミングが夏時間 (DST) イベントの影響を受ける可能性があります。 たとえば、開始時刻が DST の開始時には 1 時間先に、DST の終了時には 1 時間前にシフトされます。 ただし、一部の時間枠では時間がシフトされるときに問題が発生することがあります。 詳細と例については、夏時間と標準時間での繰り返しに関する記事を参照してください。