问题描述
我有一个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
,对于这个问题,我认为有两种选择。我在下面详细介绍了这两种方法:
将“ 间隔”和“ 频率”设置为每月,并从2020-12-01T00:00:00Z
设置“ 开始时间”。然后将在下个月初触发该触发器,然后在每个月触发一次(此处假设该月的第一秒是上个月的最后一秒)。
请:我不确定逻辑应用中的“ 重复发生”触发器是否可以在后端使用cron表达式。因此,我们不知道下一个触发条件是在下个月的第一天还是在30天之后的一天(只需加上30天)就会发生。由于时间跨度是一个月,所以我现在无法测试结果。如果您想知道正确的答案,可以在Azure门户上raise的支持通知单,以询问Azure支持团队。
2。。通过“ When a HTTP request is received”设置逻辑应用触发。您不需要定义任何其他配置,例如请求正文...,只需创建如下面的屏幕截图所示的触发器即可。
然后create个带有计时器触发器的Azure函数。创建函数时,请将cron表达式设置为0 0 0 1 * *
,如下面的屏幕截图所示。
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”,那么您将不需要为此功能花很多钱。