运行 每月最后一天在 Azure 逻辑应用程序中重复触发
Run Recurrence trigger in Azure Logic App on the Last day of Every Month
我有一个 Azure 逻辑应用程序,每个月需要 运行。我正在使用重复触发器来触发我的逻辑应用程序。
我只想在每个月的最后一天 运行 我的逻辑应用程序。例如。 --> 2020 年 1 月 31 日、2020 年 2 月 29 日、2020 年 3 月 31 日,依此类推,直到 2020 年 12 月 31 日。然后 2021 年也一样。
任何想法都可以实现。
谢谢!
创建一个每天运行的逻辑应用程序。如果是“正确”的一天,让它执行执行实际工作的逻辑应用程序。
或者,看这个:
对于这个问题,我觉得有两个方案可以选择。我在下面详细描述了它们:
1. 您可以设置“Recurrence”,如下图所示。
将“间隔”和“频率”设置为每月,并设置“开始时间" 来自 2020-12-01T00:00:00Z
。然后触发器会在下月初触发,然后每个月触发(这里假设当月的第一秒是上个月的最后一秒)。
请不要:我不确定逻辑应用程序中的“Recurrence”触发器是否与后端的 cron 表达式一起使用。所以我们不知道下一次触发是在下个月的第一天,还是在 30 天后的第二天(只需添加 30 天)。由于时间跨度是一个月,所以我现在无法测试结果。如果您想知道准确的答案,您可以 raise Azure 门户上的支持票来询问 Azure 支持团队。
2. 通过“When a HTTP request is received”设置逻辑应用触发器。您不需要定义任何其他配置,例如请求正文...只需要像下面的屏幕截图一样创建触发器。
然后 create 一个带有计时器触发器的 Azure 函数。创建函数时,请将 cron 表达式设置为 0 0 0 1 * *
,如下图所示。
cron 表达式意味着该函数将在每个月的第一天(在 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来触发逻辑应用。
顺便说一句,当您创建 azure 函数应用程序时,您可以选择“Consumption plan”,这样您就不会为该函数支付太多费用。
已接受的答案无效。
来自 Microsoft documentation 的解决方案通过进入代码视图并设置触发器 json 也不起作用,LA 从未被触发。
但是有更优雅的解决方案:我不得不将 LA 设置为每天 运行 并添加一个简单的 if 条件和下面的表达式,它按预期工作,你甚至可以设置小时您希望您的 LA 被执行:
条件文本:@equals (dayOfMonth(addDays(utcNow(), 1)), 1)
我有一个 Azure 逻辑应用程序,每个月需要 运行。我正在使用重复触发器来触发我的逻辑应用程序。 我只想在每个月的最后一天 运行 我的逻辑应用程序。例如。 --> 2020 年 1 月 31 日、2020 年 2 月 29 日、2020 年 3 月 31 日,依此类推,直到 2020 年 12 月 31 日。然后 2021 年也一样。
任何想法都可以实现。 谢谢!
创建一个每天运行的逻辑应用程序。如果是“正确”的一天,让它执行执行实际工作的逻辑应用程序。
或者,看这个:
对于这个问题,我觉得有两个方案可以选择。我在下面详细描述了它们:
1. 您可以设置“Recurrence”,如下图所示。
将“间隔”和“频率”设置为每月,并设置“开始时间" 来自 2020-12-01T00:00:00Z
。然后触发器会在下月初触发,然后每个月触发(这里假设当月的第一秒是上个月的最后一秒)。
请不要:我不确定逻辑应用程序中的“Recurrence”触发器是否与后端的 cron 表达式一起使用。所以我们不知道下一次触发是在下个月的第一天,还是在 30 天后的第二天(只需添加 30 天)。由于时间跨度是一个月,所以我现在无法测试结果。如果您想知道准确的答案,您可以 raise Azure 门户上的支持票来询问 Azure 支持团队。
2. 通过“When a HTTP request is received”设置逻辑应用触发器。您不需要定义任何其他配置,例如请求正文...只需要像下面的屏幕截图一样创建触发器。
然后 create 一个带有计时器触发器的 Azure 函数。创建函数时,请将 cron 表达式设置为 0 0 0 1 * *
,如下图所示。
cron 表达式意味着该函数将在每个月的第一天(在 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来触发逻辑应用。
顺便说一句,当您创建 azure 函数应用程序时,您可以选择“Consumption plan”,这样您就不会为该函数支付太多费用。
已接受的答案无效。
来自 Microsoft documentation 的解决方案通过进入代码视图并设置触发器 json 也不起作用,LA 从未被触发。
但是有更优雅的解决方案:我不得不将 LA 设置为每天 运行 并添加一个简单的 if 条件和下面的表达式,它按预期工作,你甚至可以设置小时您希望您的 LA 被执行:
条件文本:@equals (dayOfMonth(addDays(utcNow(), 1)), 1)