如何用Terraform创建Azure API应用?遇kind属性配置报错求解决
解决Terraform创建带专属图标的Azure API应用问题
你遇到的错误是因为新版AzureRM Provider中,kind字段会根据配置自动推导,无法手动指定。要创建带API专属图标的Azure应用,可通过以下方式实现:
- 不要手动设置
kind属性,交由Provider自动处理 - 在
azurerm_windows_web_app的site_config中添加api_config块,以此标识这是一个API应用,Azure会自动为其分配专属图标
示例Terraform代码
resource "azurerm_resource_group" "api_rg" { name = "api-resource-group" location = "East Asia" } resource "azurerm_service_plan" "api_sp" { name = "api-service-plan" resource_group_name = azurerm_resource_group.api_rg.name location = azurerm_resource_group.api_rg.location os_type = "Windows" sku_name = "B1" } resource "azurerm_windows_web_app" "api_app" { name = "my-demo-api-app" resource_group_name = azurerm_resource_group.api_rg.name location = azurerm_resource_group.api_rg.location service_plan_id = azurerm_service_plan.api_sp.id site_config { api_config { # 可指定API定义文件地址,也可仅保留空块(仅需存在api_config即可触发API应用标识) api_definition_url = "https://raw.githubusercontent.com/Azure-Samples/azure-api-management-samples/master/samples/apis/petstore/swagger.json" enable_http2 = true } application_stack { dotnet_version = "6.0" } } }
说明
- 只要
site_config中存在api_config块,AzureRM Provider会自动将kind设置为api,app,Azure门户就会显示API应用的专属图标 - 如果不需要绑定API定义文件,
api_config块可以仅保留结构(比如只写api_config {}),同样能触发API应用的标识逻辑 - 若使用Linux环境,替换为
azurerm_linux_web_app资源,配置逻辑完全一致
内容的提问来源于stack exchange,提问作者KungWaz
相关产品推荐
相关产品推荐

