如何获取使用 Terraform 部署的函数应用程序中的“函数 Url”?

Muk*_*aik 5 terraform azure-functions terraform-provider-azure infrastructure-as-code

作为 IaC 的一部分,函数应用程序(我们将其命名为FuncAppX)是使用 Terraform 进行部署的,其中包含一个函数。

我需要使用 Terraform 在函数应用程序中访问同一函数的Url 。我在这里分享相同的屏幕截图以供参考,其中很容易获得“ GetFunction Url ”,但使用 terraform ,我没有办法返回相同的屏幕截图,它需要作为输入传递给另一个函数应用程序。

FunctionApp 中的Function App函数

ssc*_*eck 12

您需要自己构建特定功能端点的 URL。由于具体函数名称是通过 定义的function.json,因此您需要将其复制到 Terraform 脚本中。

locals {
  function_foo = "foo"
}
Run Code Online (Sandbox Code Playgroud)

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]
}
Run Code Online (Sandbox Code Playgroud)

现在您可以自己构建 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}"
}
Run Code Online (Sandbox Code Playgroud)

请注意,这些azurerm_function_app_host_keys值可能不会立即可用,因为具体 Function App 的部署与azurerm_function_app服务创建是分离的。根据您的情况,您可能需要添加一些手动同步(例如使用null_resource)。