Azure Functions:如何在本地开发环境中仅启动特定功能?

Azure Functions: How do I launch only a specific Function in local dev environment?

如果我想在开发环境中启动所有可用功能,我只需这样做:

 func host start

有没有办法选择可用函数的子集,而不必将预期停用的函数移出工作目录等?

PS 我正在为函数本身使用 Python。

可以通过三种方式实现。

  1. Disable functions:

一个正在修改function.json:

"bindings": [
    ...
],
"disabled": "IS_DISABLED"

另一种是使用Disable属性来防止函数被触发。

    [Disable]
 [FunctionName("Function")]
 [NoAutomaticTrigger]
 public static void Function(string input, TraceWriter log)
{
}
  1. Azure Functions Core Tools,仅适用于版本1.x

    func run <functionName>

  2. host.json:

    {
     "functions": [ "QueueProcessor", "GitHubWebHook" ]
    }
    

更新:

4: 正如 jtlz2 回答的那样,这种方式是为了使用 local.settings.json.

在本地禁用功能
{
  "Values": {
     "AzureWebJobs.MyFunctionName.Disabled": true
     "AzureWebJobs.MyFunctionName2.Disabled": false
   }
}

**更新:**正如@ahmelsayed 解释的那样,有很多选项可以只调用一个函数,所以我在这里更新它。

"Disabled" 用于动态打开或关闭功能。运行时仍将加载函数,并显示函数的任何错误或问题(不正确的设置等),但不会执行代码。 enable/disable 函数有很多方法,因为有些人希望将其保留在源代码管理中,而对于某些人来说,这是一个 devops 操作

host.json 中的 functions 数组是我最初没有意识到的。它被添加到运行时是为了方便运行时开发人员,他们有一个 samples 的大文件夹,他们希望能够只加载其中的一个子集。这完全忽略了未列出的函数。它们不会被索引或加载。

最近似乎对禁用功能有些惊慌。

正如 https://github.com/Azure/Azure-Functions/issues/736#issuecomment-471072316 所指出的,可以利用 local.settings.json 来实现这一点。只需添加:

{
  "Values": {
    "AzureWebJobs.MyFunctionName.Disabled": true
    "AzureWebJobs.MyFunctionName2.Disabled": false
  }
}

等等

我很想知道是否有更好的方法,例如执行 func host start.

时从命令行设置它

我用func start --functions [a space separated list of functions]

这是azure-functions-core-tools@3

根据:

--port [-p]        Local port to listen on. Default: 7071
--cors             A comma separated list of CORS origins with no spaces. Example: https://functions.azure.com,https://functions-staging.azure.com
--cors-credentials Allow cross-origin authenticated requests (i.e. cookies and the Authentication header)
--timeout [-t]     Timeout for on the functions host to start in seconds. Default: 20 seconds.
--useHttps         Bind to https://localhost:{port} rather than http://localhost:{port}. By default it creates and trusts a certificate.
--cert             for use with --useHttps. The path to a pfx file that contains a private key
--password         to use with --cert. Either the password, or a file that contains the password for the pfx file
--language-worker  Arguments to configure the language worker.
--no-build         Do no build current project before running. For dotnet projects only. Default is set to false.
--enableAuth       Enable full authentication handling pipeline.
--functions        A space seperated list of functions to load.