20

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?

Creggdev
  • 261
  • 4
  • 9
  • Are you trying to debug a Function running locally or in Azure? What language are you using for your function, C#? – Thomas Oct 16 '18 at 14:31

3 Answers3

36

There is no easy way to achieve this, but it is possible.

  1. Disable functions:

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)
{ }
  1. func run using Azure Core Tools (only v1.x)

Run function using command: func run <functionName>

  1. Specify functions in the host.json file

In your host.json file specify functions that should be run:

{ 
   "functions":[ "FunctionToRun" ]
} 
Pawel Maga
  • 5,428
  • 3
  • 38
  • 62
9

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" ]
} 
Yash Mochi
  • 769
  • 6
  • 15
  • I would've never figured out that the right way to pass multiple values to `AzureFunctionsJobHost__functions` was to break them into separate lines with `__x` at the end, big thanks! – Sebastián Vansteenkiste Jan 05 '23 at 19:40
6

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).

See here: https://learn.microsoft.com/en-us/azure/azure-functions/disable-function?tabs=portal#localsettingsjson

Ian
  • 4,169
  • 3
  • 37
  • 62