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

使用Terraform创建Azure PostgreSQL弹性服务器Private Endpoint报错

解决Azure PostgreSQL弹性服务器Private Endpoint创建报错问题

问题根源

你的Terraform配置中,PostgreSQL弹性服务器采用了**VNet子网委托(delegated_subnet_id)**的网络模式,这种模式下的服务器不支持单独创建Private Endpoint资源——二者属于互斥的网络接入方式,因此触发了"服务器不支持Private Endpoint功能"的报错。

解决方案

提供两种可选方案,根据你的网络需求选择:

方案1:保留VNet子网委托模式(无需单独创建Private Endpoint)

如果要继续使用VNet集成,直接删除单独的azurerm_private_endpoint资源块即可。通过delegated_subnet_id配置的服务器已直接接入VNet,无需额外的Private Endpoint。

修改后的核心配置(移除Private Endpoint相关代码):

# 保留其他资源,仅删除azurerm_private_endpoint.peppsql-db-tst块
resource "azurerm_postgresql_flexible_server" "psql-db-tst" {
  name                   = "psql-db-tst"
  resource_group_name    = azurerm_resource_group.db-tst-rg.name
  location               = azurerm_resource_group.db-tst-rg.location
  version                = "13"
  delegated_subnet_id    = azurerm_subnet.db-tst-snet.id
  private_dns_zone_id    = azurerm_private_dns_zone.db-tst-pdnszn.id
  geo_redundant_backup_enabled  = false
  administrator_login    = "psqladmin"
  administrator_password = "Adminpsql@123#"
  zone                        = "1"
  storage_mb   = 32768
  storage_tier = "P30"
  sku_name   = "GP_Standard_D2s_v3"
  depends_on = [azurerm_private_dns_zone_virtual_network_link.lnk-pdnszndb-vnet]
}

方案2:改用Private Endpoint模式(移除VNet子网委托)

如果必须使用单独的Private Endpoint,需要修改PostgreSQL服务器的网络配置,移除delegated_subnet_id,并禁用公网访问,同时调整子网的委托设置。

修改后的完整核心配置:

  1. 调整子网配置,移除PostgreSQL服务委托:
resource "azurerm_subnet" "db-tst-snet" {
  name                 = "${random_pet.name_prefix.id}-snet"
  resource_group_name  = azurerm_resource_group.db-tst-rg.name
  virtual_network_name = azurerm_virtual_network.db-tst-vnet.name
  address_prefixes     = ["10.0.1.0/24"]
  # 删除原有的delegation块
}
  1. 修改PostgreSQL服务器配置:
resource "azurerm_postgresql_flexible_server" "psql-db-tst" {
  name                   = "psql-db-tst"
  resource_group_name    = azurerm_resource_group.db-tst-rg.name
  location               = azurerm_resource_group.db-tst-rg.location
  version                = "13"
  # 移除delegated_subnet_id配置
  public_network_access_enabled = false # 禁用公网访问,仅允许Private Endpoint连接
  geo_redundant_backup_enabled  = false
  administrator_login    = "psqladmin"
  administrator_password = "Adminpsql@123#"
  zone                        = "1"
  storage_mb   = 32768
  storage_tier = "P30"
  sku_name   = "GP_Standard_D2s_v3"
}
  1. 保留原有的azurerm_private_endpoint资源块,确保subresource_names设置为["postgresqlServer"]。

验证步骤

  • 执行terraform plan确认配置变更符合预期
  • 执行terraform apply完成资源部署
  • 部署完成后,检查Private Endpoint的连接状态,确认已成功关联到PostgreSQL服务器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:31:03