如何从terraform模块返回功能应用程序密钥
我正在创建一个webapp和一个函数。web应用程序调用该函数。 我的地形结构是这样的如何从terraform模块返回功能应用程序密钥,terraform,azure-function-app,azure-rm,Terraform,Azure Function App,Azure Rm,我正在创建一个webapp和一个函数。web应用程序调用该函数。 我的地形结构是这样的 main.tf variable.tf module/webapp module/function 在main.tf中,我调用module/function创建函数,然后调用module/webapp创建webapp。 我需要在webpp的配置中提供功能键 Terraform azurerm provider 2.27.0添加了功能键作为数据源。 terraform文档中就是这样描述的。 如何将这些键返回
main.tf
variable.tf
module/webapp
module/function
在main.tf中,我调用module/function创建函数,然后调用module/webapp创建webapp。
我需要在webpp的配置中提供功能键
Terraform azurerm provider 2.27.0添加了功能键作为数据源。
terraform文档中就是这样描述的。
如何将这些键返回到主模块?我尝试了以下操作,但它返回代码后面的错误:
resource "azurerm_function_app" "myfunc" {
name = var.function_app
location = var.region
...
tags = var.tags
}
output "hostname" {
value = azurerm_function_app.actico.default_hostname
}
output "functionkeys" {
value = azurerm_function_app.actico.azurerm_function_app_host_keys
}
Error: unsupported attribute
This object has no argument, nested block, or exported attribute named
"azurerm_function_app_host_keys".
另一种尝试似乎更有希望。在主模块中添加了一个数据元素,期望它在创建函数并获取密钥后执行。但是得到400个错误
in main module
data "azurerm_function_app_host_keys" "keymap" {
name = var.function_app_name
resource_group_name = var.resource_group_name
depends_on = [module.function_app]
}
Error making Read request on AzureRM Function App Hostkeys "FunctionApp": web.AppsClient#ListHostKeys: Failure responding to request:
StatusCode=400 -- Original Error: autorest/azure: Service returned an error. Status=400 Code="BadRequest" Message="Encountered an error (ServiceUnavailable) from host runtime." Details=[{"Message":"Encountered an error (ServiceUnavailable) from host runtime."},{"Code":"BadRequest"},{"ErrorEntity":{"Code":"BadRequest","Message":"Encountered an error
(ServiceUnavailable) from host runtime."}}]
谢谢
Tauqir根据我收集的信息,您所做的是正确的,您需要将这些值传递到main.tf中的webapp模块中,如下所示:
module webapp {
...
func_hostname = module.function.hostname
functionkeys = module.function.functionkeys
}
并在webapp模块中设置变量
variable func_hostname {
type = string
}
variable functionkeys {
type = string
}
我看到的是,您试图从不存在的azurerm_函数_应用程序返回azurerm_函数_应用程序_主机_键
尝试从数据源返回密钥。我做了一些测试,有两件事。看起来您需要部署函数或重新启动函数应用程序才能生成密钥。如果您部署了该功能,然后尝试获取密钥,那么它似乎不会等待。功能启动和按键可用之间存在延迟。此外,在这方面,地形也存在一些问题。我对V12有问题,请参见26074 我已经回到使用我编写的模块(底部链接),这将等待密钥变得可用
“它不起作用。”它不是很具体。你到底是如何在main.tf中使用它们的?你收到了什么错误消息?我用error@Tauqir你解决了这个问题吗?我发现,如果您的功能设置为通过lifecycle系统忽略所有应用程序设置,您也会收到400个错误请求。你在函数应用程序创建中还添加了哪些内容?您可以检查Azure中的函数状态,以查看它是否已被授予主机密钥-如果未被授予主机密钥,则为故障。对我来说就是这样。
variable func_hostname {
type = string
}
variable functionkeys {
type = string
}