You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Terraform部署WAR包至Azure App Service遇报错求助

问题修正:Terraform部署WAR包到Azure的404错误解决

错误原因及修复方案

1. Storage Blob容器不存在错误

  • 问题根源:azurerm_storage_blob.blobexample中storage_container_name错误引用了App Service的名称azurerm_app_service.appservice2.name,而实际创建的存储容器是azurerm_storage_container.storageofwebapp,导致找不到目标容器。
  • 修复:将storage_container_name改为引用正确的存储容器资源。

2. 虚拟网络找不到错误

  • 问题根源:azurerm_app_service_virtual_network_swift_connection.example中subnet_id使用了硬编码值,其中资源组名写成了rg2(实际资源组为resoursegrpthree),且硬编码ID易因配置变更出错。
  • 修复:改用Terraform资源引用azurerm_subnet.snet1.id自动获取子网ID,避免硬编码错误。

修正后的完整代码

provider "azurerm" {
 features {}
}

resource "azurerm_resource_group" "rg2" {
 name     = "resoursegrpthree"
 location = "East US"
}

resource "azurerm_virtual_network" "virtunet1" {
 name                = "virnetxample"
 address_space       = ["10.0.0.0/16"]
 location            = azurerm_resource_group.rg2.location
 resource_group_name = azurerm_resource_group.rg2.name
}

resource "azurerm_subnet" "snet1" {
 name                 = "sunetxample"
 resource_group_name  = azurerm_resource_group.rg2.name
 virtual_network_name = azurerm_virtual_network.virtunet1.name
 address_prefixes     = ["10.0.1.0/24"]
}

resource "azurerm_app_service_plan" "azurewebapp2" {
 name                = "example-appservice-plan"
 location            = azurerm_resource_group.rg2.location
 resource_group_name = azurerm_resource_group.rg2.name
 kind                = "Linux"
 reserved            = true
 sku {
   tier = "Standard"
   size = "B1"
 }
}

resource "azurerm_app_service" "appservice2" {
 name                = "terraformappsvc"
 location            = azurerm_resource_group.rg2.location
 resource_group_name = azurerm_resource_group.rg2.name
 app_service_plan_id = azurerm_app_service_plan.azurewebapp2.id

 site_config {
   java_version = "1.8"
   java_container = "TOMCAT"
   java_container_version = "8.5"
   app_command_line = ""
 }

 app_settings = {
   "WEBSITE_WEBDEPLOY_USE_SCM" = "false"
 }

 connection_string {
   name  = "ExampleDB"
   type  = "SQLServer"
   value = "Server=myserver;User Id=myuser;Password=mypassword;Initial Catalog=mydb;"
 }
}

resource "azurerm_storage_account" "storagesecond2" {
 name                     = "accountstoragsec2"
 resource_group_name      = azurerm_resource_group.rg2.name
 location                 = azurerm_resource_group.rg2.location
 account_tier             = "Standard"
 account_replication_type = "LRS"
}

resource "azurerm_storage_container" "storageofwebapp" {
 name                  = "webappcontainer"
 storage_account_name  = azurerm_storage_account.storagesecond2.name
 container_access_type = "private"
}

resource "azurerm_storage_blob" "blobexample" {
 name                   = "ram.war"
 storage_account_name   = azurerm_storage_account.storagesecond2.name
 storage_container_name = azurerm_storage_container.storageofwebapp.name # 修正容器引用
 type                   = "Block"
 source                 = "C:/Downloads/sample.war"
}

resource "azurerm_app_service_virtual_network_swift_connection" "example" {
 app_service_id = azurerm_app_service.appservice2.id
 subnet_id      = azurerm_subnet.snet1.id # 修正子网ID引用
}

output "app_service_id" {
 value = azurerm_app_service.appservice2.id
}

额外说明

  • 确保本地路径C:/Downloads/sample.war真实存在,若路径变更需同步修改source字段值。
  • 部署前建议先执行terraform plan检查资源依赖和配置合法性,确认无误后再运行terraform apply完成部署。

内容的提问来源于stack exchange,提问作者Lekha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 20:35:13