azure 更新AppSetting时出错,不允许从Terraform使用名称

s71maibg  于 2023-04-22  发布在  其他
关注(0)|答案(3)|浏览(132)

使用Terraform更新Azure App Service应用程序设置时,我们收到以下错误:

{"Message":"AppSetting with name 'HEALTHCHECKS-UI_HEALTHCHECKS_0_NAME' is not allowed."}

但是,如果我们通过门户手册添加它,它完全可以正常工作:

我猜这和0-有关,但我们如何摆脱这些呢?
Terraform代码非常简单,但这里有一个失败的例子:

resource "azurerm_resource_group" "test" {
  name     = "example-resources"
  location = "West Europe"
}

resource "azurerm_app_service_plan" "test" {
  name                = "example-appserviceplan"
  location            = "${azurerm_resource_group.test.location}"
  resource_group_name = "${azurerm_resource_group.test.name}"

  sku {
    tier = "Standard"
    size = "S1"
  }
}

resource "azurerm_app_service" "test" {
  name                = "example-app-service"
  location            = "${azurerm_resource_group.test.location}"
  resource_group_name = "${azurerm_resource_group.test.name}"
  app_service_plan_id = "${azurerm_app_service_plan.test.id}"

  site_config {
    dotnet_framework_version = "v4.0"
    scm_type                 = "LocalGit"
  }

  app_settings = {
    "HEALTHCHECKSUI_HEALTHCHECKS_0_NAME"  = "Self"
    "HEALTHCHECKSUI_HEALTHCHECKS_0_URI"   = "https://${var.environment_name}-example-app-service/health-api"
  }
}

在kudo中进入bash终端并运行printenv,可以看到手动设置它会删除-

HEALTHCHECKSUI_HEALTHCHECKS_0_NAME=https://example-app-service.azurewebsites.net/health-api
b1zrtrql

b1zrtrql1#

不确定,我没有找到文档来显示Azure App Service中应用程序设置的限制。但据我所知,操作系统有此限制。对于Linux,您不能设置名称包含-的环境变量。但在Windows中,-的限制不存在。通常,字母和数字在两个系统中都没有问题。

wf82jlnq

wf82jlnq2#

从环境变量名中删除**-**(Dash)。这将正常工作
例如:Test-Pass --〉TestPass

bakd9h0s

bakd9h0s3#

我在使用linux_function_app时遇到了这个错误,我的问题似乎是我的app_setting中有破折号。我把它们改为下划线,它工作了。
我不知道在应用程序设置参数名称时有使用破折号的限制。我以前使用过破折号和下划线。

相关问题