Function Azure功能“;主机密钥“;不是用地形创建的

Function Azure功能“;主机密钥“;不是用地形创建的,function,terraform,terraform-provider-azure,Function,Terraform,Terraform Provider Azure,如果我通过创建门户应用程序密钥手动创建Azure功能: 如果我通过terraform尝试同样的方法: 功能应用程序 未创建任何应用程序密钥: 里面没有任何关于如何创建这些键的内容,但是您可以将它们作为一个整体来阅读 谁能给我指出一个正确的方向钥匙是怎么产生的 默认情况下,密钥存储在Blob存储容器中,该容器位于AzureWebJobsStorage设置提供的帐户中。在您的代码中,密钥确实是在关联的存储帐户上自动生成的,但没有显示在Azure Function应用程序UI上 在我的验证之后,如

如果我通过创建门户应用程序密钥手动创建Azure功能:

如果我通过terraform尝试同样的方法:

功能应用程序 未创建任何应用程序密钥:

里面没有任何关于如何创建这些键的内容,但是您可以将它们作为一个整体来阅读


谁能给我指出一个正确的方向钥匙是怎么产生的

默认情况下,密钥存储在Blob存储容器中,该容器位于
AzureWebJobsStorage
设置提供的帐户中。在您的代码中,密钥确实是在关联的存储帐户上自动生成的,但没有显示在Azure Function应用程序UI上


在我的验证之后,如果您从
应用程序设置
中的\u PACKAGE=“1”
中删除
网站\u RUN\u,则您将在功能应用程序中看到默认应用程序键。当您将
网站\u RUN\u FROM_PACKAGE
设置添加到功能应用程序设置时,它将使您的功能应用程序能够从软件包运行。我认为这或多或少会覆盖默认的Azure函数部署行为。阅读更多详细信息。

我不完全确定这是否是问题的完整解决方案,在删除此应用程序设置后,我仍然收到它

对我来说,这看起来像是一个时间问题,terraform创建了函数,然后我请求密钥,但没有密钥,terraform失败,我等待不到一分钟,密钥就在那里,重新运行apply,所有工作都在进行

真的很难找到解决办法

更新: 因此Azure provider 2.45.1在检索密钥时超时。 但是,提供商2.51.0不


最新提供程序上的超时似乎已修复。

我遇到了相同的问题,在我的情况下,造成差异的是删除了版本参数:

version = "~3"

删除它会使密钥再次生成。

我们有这个错误,并且在最新版本的azurerm(2.54)上仍然可以看到它,对我们来说,恢复到版本=“~1”不是一个选项。正在blob存储中创建应用程序密钥,但生成的v3函数应用程序找不到它们。我们必须删除包含加密密钥的旧blob,并将其添加到函数应用程序设置中
CONTAINER\u NAME=“azure webjobs secrets”
在terraform中

Terraformed Function应用程序的整个应用程序设置如下

   app_settings = {
     AzureWebJobsDashboard          = data.azurerm_storage_account.sg.primary_connection_string
     AzureWebJobsStorage            = data.azurerm_storage_account.sg.primary_connection_string
     CONTAINER_NAME = "azure-webjobs-secrets"
     FUNCTIONS_EXTENSION_VERSION = "~3"
     WEBSITE_HTTPLOGGING_RETENTION_DAYS = "3"
   }
这为我们解决了问题

   app_settings = {
     AzureWebJobsDashboard          = data.azurerm_storage_account.sg.primary_connection_string
     AzureWebJobsStorage            = data.azurerm_storage_account.sg.primary_connection_string
     CONTAINER_NAME = "azure-webjobs-secrets"
     FUNCTIONS_EXTENSION_VERSION = "~3"
     WEBSITE_HTTPLOGGING_RETENTION_DAYS = "3"
   }