有没有办法以编程方式更改Azure函数触发器类型。

时间:2018-06-20 03:45:45

标签: azure azure-functions

类似于Azure函数的zip文件中的function.json,它定义了Az func的触发器。是否可以通过编程将触发器从基于计时器更改为基于事件?意思是,我可以在本地计算机上运行一个运行Azure应用程序的python应用程序,该应用程序调用Azure python sdk并说嘿,将Azure Function x的触发器从基于计时器的触发器更改为基于事件中心的触发器,这是其他事件中心名称空间名称和连接字符串信息您需要的。

1 个答案:

答案 0 :(得分:1)

这是不可能的。 但是,我可以想到以下解决方法,应该可以实现目标。

首先,您可以在一个功能项目(一个功能应用服务)中定义多个功能触发器。它们可以绑定到不同的目标。像这样:

public static class Functions
{
    [FunctionName("FunctionTimer")]
    public static async Task RunAsync([TimerTrigger("%Schedule%")]TimerInfo myTimer, ILogger log)
    {
        if (!AppSettings.IsTimerTriggerActive) 
            return;
        ...
    }

    [FunctionName("FunctionEventHub")]
    public static async Task RunAsync([EventHubTrigger("", Connection = "eventHubConnectionString")] EventData[] eventDataBatch, ILogger log)
    {
        if (!AppSettings.IsEventHubTriggerActive) 
            return;
        ...
    }
}

您无法通过编程方式启用/禁用功能,但可以通过App Service应用程序设置控制其中之一处于活动状态。后者可以通过Web App API进行管理:https://docs.microsoft.com/en-us/rest/api/appservice/webapps/updateapplicationsettings

因此,您可以激活任一触发器。如果与逻辑兼容,甚至可以跳过(停用)激活。