如何获取使用 Terraform 部署的 Function-App 中的 "Function Url"?
How to get the "Function Url" which is with in a Function-App deployed using Terraform?
作为 IaC 的一部分,一个 Function App,让我们将其命名为 FuncAppX 是使用 Terraform 部署的,它有一个内置函数.
我需要使用 Terraform 在函数应用程序中访问相同函数的 Url。我在这里分享相同的屏幕截图以供参考,其中很容易获得“GetFunction Url”但是使用 terraform,我无法获得 return 相同,需要作为输入传递给另一个函数应用程序。
Function App
Function within FunctionApp
考虑通过 Azure 中的 API 管理 资源向您公开 http 触发的函数。但是你也可以直接调用函数。
要获取函数应用程序的 url,您可以使用 azurerm_function_app[= 上的 default_hostname 属性34=] 并且例如使用 azurerm_key_vault_secret.
放入密钥库
terraform 文档中列出了该属性 here。
当然这不会link到具体的功能,也不会包括需要的密钥。
要提取访问功能所需的密钥,您可以使用 function_app_host_keys。使用
获取默认功能键的位置
然后你可以检索 default_function_key.
然后你需要组合这些东西来调用函数(注意你只能用http触发器调用函数)。
函数的 url 将是 {default_hostname}/api/{functionname}?code={default_function_key}.
您需要自己构建特定功能端点的URL。由于具体的函数名称是通过 function.json
定义的,因此您需要将其复制到您的 Terraform 脚本中。
locals {
function_foo = "foo"
}
URL 包含一个秘密作为查询参数,您可以通过数据源 azurerm_function_app_host_keys
.
获取它
data "azurerm_function_app_host_keys" "example" {
name = azurerm_function_app.example.name
resource_group_name = azurerm_function_app.example.resource_group_name
depends_on = [azurerm_function_app.example]
}
现在您可以自己构建 URL。
output "url" {
value = "https://${azurerm_function_app.example.default_hostname}/api/${local.function_foo}?code=${data.azurerm_function_app_host_keys.example.default_function_key}"
}
请注意,azurerm_function_app_host_keys
值可能不会立即可用,因为具体 Function App 的部署与 azurerm_function_app
服务创建是分离的。根据您的情况,您可能需要添加一些手动同步(例如使用 null_resource
)。
作为 IaC 的一部分,一个 Function App,让我们将其命名为 FuncAppX 是使用 Terraform 部署的,它有一个内置函数.
我需要使用 Terraform 在函数应用程序中访问相同函数的 Url。我在这里分享相同的屏幕截图以供参考,其中很容易获得“GetFunction Url”但是使用 terraform,我无法获得 return 相同,需要作为输入传递给另一个函数应用程序。
Function App Function within FunctionApp
考虑通过 Azure 中的 API 管理 资源向您公开 http 触发的函数。但是你也可以直接调用函数。
要获取函数应用程序的 url,您可以使用 azurerm_function_app[= 上的 default_hostname 属性34=] 并且例如使用 azurerm_key_vault_secret.
放入密钥库terraform 文档中列出了该属性 here。
当然这不会link到具体的功能,也不会包括需要的密钥。
要提取访问功能所需的密钥,您可以使用 function_app_host_keys。使用
获取默认功能键的位置然后你可以检索 default_function_key.
然后你需要组合这些东西来调用函数(注意你只能用http触发器调用函数)。
函数的 url 将是 {default_hostname}/api/{functionname}?code={default_function_key}.
您需要自己构建特定功能端点的URL。由于具体的函数名称是通过 function.json
定义的,因此您需要将其复制到您的 Terraform 脚本中。
locals {
function_foo = "foo"
}
URL 包含一个秘密作为查询参数,您可以通过数据源 azurerm_function_app_host_keys
.
data "azurerm_function_app_host_keys" "example" {
name = azurerm_function_app.example.name
resource_group_name = azurerm_function_app.example.resource_group_name
depends_on = [azurerm_function_app.example]
}
现在您可以自己构建 URL。
output "url" {
value = "https://${azurerm_function_app.example.default_hostname}/api/${local.function_foo}?code=${data.azurerm_function_app_host_keys.example.default_function_key}"
}
请注意,azurerm_function_app_host_keys
值可能不会立即可用,因为具体 Function App 的部署与 azurerm_function_app
服务创建是分离的。根据您的情况,您可能需要添加一些手动同步(例如使用 null_resource
)。