从 Azure 门户安排计时器触发的 Azure 函数

Schedule a timer-triggered Azure function from the Azure Portal

我有一个 Azure 函数(内置于 Visual Studio 2019,运行ning 在 Azure 的 .NET Core 3.x 堆栈上)应该由计时器触发到 运行 例如每晚一次。

我可以轻松创建函数并将计划定义为 NCRONTAB 表达式,如下所示:

[FunctionName("MyFunctionName")]
public void Run([TimerTrigger("0 15 3 * * 1-5")]TimerInfo myTimer, ILogger log)
{
    // Azure function code here ....
}

工作起来很有魅力 - 但是 我希望能够在 Azure 门户中定义时间表 - 而不是在我的函数代码中 - 以处理例如DEV vs. TEST vs. PROD 情况。在 DEV 和 TEST 平台上,我可能想 运行 一天几次 - 在生产环境中,可能一周只有一次。

但是使用这种方法,一旦设置了计划 - 它已设置,我就无法在 Azure 门户中更改它(所有输入字段都变灰/禁用编辑)。

我希望我可以跳过 Azure 函数声明中的 NCRONTAB 表达式 - 就像这样:

[FunctionName("MyFunctionName")]
public void Run([TimerTrigger()]TimerInfo myTimer, ILogger log)
{
    // Azure function code here ....
}

然后在 Azure 门户中指定实际的 CRON 表达式 - 但不行,CRON 表达式是强制性的....

我是不是要求太多了?或者有没有办法将这个 安排在我实际代码库的 之外?

由于silent提供的post,我们可以使用ConfigurationManager.AppSettings["key"]。不过我觉得你可以参考下面的解决方法,比较简单

1. 在本地编辑您的函数代码,不要在代码中指定 cron 表达式,而是使用 %myTimerCron%

2.从本地发布到azure,然后在“应用程序设置”中添加一个key/value。

3. 然后你可以通过在 Azure 门户的“应用程序设置”中编辑 myTimerCron 的值来编辑 cron 表达式。

顺便说一下,当您在visual studio 中本地测试代码时,您只需要在“local.setting.json”中提供一个名称为“myTimerCron”的cron 表达式。