In visual studio I have created an Azure Function App with several Function.
When I launch the Function App debugger from the tool bar all Functions are triggered.
Is there a way to trigger a single function from the App within Visual Studio 2017?
In visual studio I have created an Azure Function App with several Function.
When I launch the Function App debugger from the tool bar all Functions are triggered.
Is there a way to trigger a single function from the App within Visual Studio 2017?
There is no easy way to achieve this, but it is possible.
by modifying the function.json file:
"bindings": [
...
],
"disabled": true
or by using the [Disable] attribute:
[Disable]
[FunctionName("Function")]
[NoAutomaticTrigger]
public static void Function(string input, TraceWriter log)
{ }
Run function using command: func run <functionName>
In your host.json file specify functions that should be run:
{
"functions":[ "FunctionToRun" ]
}
As @Pawel Maga mentioned there are three ways.
I have a little better approach for 3rd option (Specify functions in the host.json file).
Instead of messing with host.json (we might forget to undo while publishing.. i have done it many times :p).
We can override functions array by setting value in local.settings.json.
For example: Set like below code in local.settings.json
{
"Values": {
"AzureFunctionsJobHost__functions__0": "FunctionToRun",
"AzureFunctionsJobHost__functions__1": "SecondFunctionToRun",
}
}
Instead of writing below code in host.json
{
"functions":[ "FunctionToRun", "SecondFunctionToRun" ]
}
AzureFunctionsJobHost__functions
was to break them into separate lines with __x
at the end, big thanks! –
Complement As an update to the above answers: it appears that you can disable functions in the localsettings.json in this way.
{
"Values": {
"AzureWebJobs.MyFirstFunction.Disabled": true,
"AzureWebJobs.MySecondFunction.Disabled": true
}
}
This is what I'm planning to do for our team as it has the nicest syntax of the "safe" options (approaches that don't have to be undone on publish).
"AzureWebJobs.MyFirstFunction.RunOnStartup": true
–
Inglorious This is currently the easiest way to run only a subset of the functions via the terminal:
func start --functions <space separated list of functions>
From func help
--functions
A space seperated list of functions to load.
I have found that you can't override the "Functions" array in the host.json file, but can only override individual values in the array. Consequently, this is what I had to do to disable all but one function:
local.settings.json
{
"Values": {
"AzureFunctionsJobHost__functions__0": "FunctionToTest",
"AzureFunctionsJobHost__functions__1": "",
"AzureFunctionsJobHost__functions__2": "",
"AzureFunctionsJobHost__functions__3": "",
"AzureFunctionsJobHost__functions__4": "",
"AzureFunctionsJobHost__functions__5": "",
"AzureFunctionsJobHost__functions__6": "",
"AzureFunctionsJobHost__functions__7": "",
"AzureFunctionsJobHost__functions__8": "",
"AzureFunctionsJobHost__functions__10": "",
"AzureFunctionsJobHost__functions__11": "",
"AzureFunctionsJobHost__functions__12": "",
"AzureFunctionsJobHost__functions__13": ""
}
}
I know you can also use the format: "AzureWebJobs..Disabled": true
However, I'd rather not match/maintain that list of names with the function name in the code.
© 2022 - 2024 — McMap. All rights reserved.