如何用Terraform配置Azure Logic App每月最后一天触发的Recurrence触发器
在Terraform中实现Azure Logic App每月最后一天触发
问题说明
要通过Terraform配置Azure Logic App触发器每月最后一天仅运行一次,手动配置时微软官方文档给出的monthDays = [-1]可以实现,但azurerm_logic_app_trigger_recurrence资源并未支持该配置项——尝试用on_these_days会触发错误,仅设置start_time也无法保证后续每月都能准确在最后一天运行。
解决方案1:使用自定义触发器资源
直接通过azurerm_logic_app_trigger_custom编写包含monthDays = [-1]的 recurrence 配置,完全匹配手动配置的逻辑:
resource "azurerm_logic_app_trigger_custom" "monthly_last_day" { name = "MonthlyLastDayTrigger" logic_app_id = azurerm_logic_app.your_logic_app.id body = jsonencode({ recurrence = { frequency = "Month" interval = 1 monthDays = [-1] timeZone = "UTC" # 根据需求替换时区 } type = "Recurrence" }) }
解决方案2:添加内置函数条件判断
如果倾向于使用azurerm_logic_app_trigger_recurrence,可以先配置每日触发,再通过Logic App内置函数判断当前日期是否为当月最后一天,仅满足条件时执行后续流程:
- 配置每日触发的 recurrence:
resource "azurerm_logic_app_trigger_recurrence" "daily_trigger" { name = "DailyCheckTrigger" logic_app_id = azurerm_logic_app.your_logic_app.id frequency = "Day" interval = 1 time_zone = "UTC" }
- 在工作流中添加条件步骤,使用以下表达式判断是否为当月最后一天:
@equals(dayOfMonth(addDays(utcNow(), 1)), 1)
只有当该表达式返回true(即明天是当月第一天,今天是最后一天)时,才继续执行后续操作,否则终止工作流。
内容的提问来源于stack exchange,提问作者Péter Hidvégi
相关产品推荐
相关产品推荐

