Azure Functions:如何在本地开发环境中仅启动特定功能?
Azure Functions: How do I launch only a specific Function in local dev environment?
如果我想在开发环境中启动所有可用功能,我只需这样做:
func host start
有没有办法选择可用函数的子集,而不必将预期停用的函数移出工作目录等?
PS 我正在为函数本身使用 Python。
可以通过三种方式实现。
一个正在修改function.json:
"bindings": [
...
],
"disabled": "IS_DISABLED"
另一种是使用Disable
属性来防止函数被触发。
[Disable]
[FunctionName("Function")]
[NoAutomaticTrigger]
public static void Function(string input, TraceWriter log)
{
}
与Azure Functions Core Tools,仅适用于版本1.x
func run <functionName>
-
{
"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.
如果我想在开发环境中启动所有可用功能,我只需这样做:
func host start
有没有办法选择可用函数的子集,而不必将预期停用的函数移出工作目录等?
PS 我正在为函数本身使用 Python。
可以通过三种方式实现。
一个正在修改function.json:
"bindings": [
...
],
"disabled": "IS_DISABLED"
另一种是使用Disable
属性来防止函数被触发。
[Disable]
[FunctionName("Function")]
[NoAutomaticTrigger]
public static void Function(string input, TraceWriter log)
{
}
与Azure Functions Core Tools,仅适用于版本1.x
func run <functionName>
-
{ "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.