每月的最后一天在Azure Logic App中运行重复周期触发器

问题描述

我有一个Azure逻辑应用程序,需要每月运行。我正在使用递归触发器来触发我的逻辑应用程序。 我只想在每个月的最后一天运行Logic App。例如。 -> 2020年1月31日,2020年2月29日,2020年3月31日,依此类推,直到2020年12月31日。然后是2021年。

任何想法都可以实现。 谢谢!

解决方法

创建每天运行的Logic App。如果是“正确”的日子,让它执行执行实际工作的Logic App。

或者,请参见:

https://github.com/MicrosoftDocs/azure-docs/issues/26707

,

对于这个问题,我认为有两种选择。我在下面详细介绍了这两种方法:

1。。您可以像下面的屏幕截图一样设置“ 重复发生”。 enter image description here

将“ 间隔”和“ 频率”设置为每月,并从2020-12-01T00:00:00Z设置“ 开始时间”。然后将在下个月初触发该触发器,然后在每个月触发一次(此处假设该月的第一秒是上个月的最后一秒)。

:我不确定逻辑应用中的“ 重复发生”触发器是否可以在后端使用cron表达式。因此,我们不知道下一个触发条件是在下个月的第一天还是在30天之后的一天(只需加上30天)就会发生。由于时间跨度是一个月,所以我现在无法测试结果。如果您想知道正确的答案,可以在Azure门户上raise的支持通知单,以询问Azure支持团队。

2。。通过“ When a HTTP request is received”设置逻辑应用触发。您不需要定义任何其他配置,例如请求正文...,只需创建如下面的屏幕截图所示的触发器即可。 enter image description here

然后create个带有计时器触发器的Azure函数。创建函数时,请将cron表达式设置为0 0 0 1 * *,如下面的屏幕截图所示。 enter image description here

cron表达式表示该函数将在每月的1号(00:00:00)触发。

然后在您的计时器触发功能代码中,将代码修改为:

using System;
using System.Net.Http;

public static void Run(TimerInfo myTimer,ILogger log)
{
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

    HttpClient client = new HttpClient();

    client.PostAsync("copy the trigger url of your logic app here",null);

}

保存功能,该功能将在每月的第一天(00:00:00)触发。在功能代码中,它将请求逻辑应用程序的URL来触发逻辑应用程序。

顺便说一句,创建天蓝色功能应用程序时,可以选择“ Consumption plan”,那么您将不需要为此功能花很多钱。