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

如何用Terraform创建Azure Cosmos DB for PostgreSQL集群?

如何用Terraform创建Azure Cosmos DB for PostgreSQL集群

你之前的核心问题是用错了Terraform资源类型:azurerm_cosmosdb_account是用于Cosmos DB的SQL、MongoDB、Cassandra等API类型的资源,而Azure Cosmos DB for PostgreSQL是独立的托管服务,对应的Terraform资源是azurerm_cosmosdb_postgresql_cluster,以及配套的azurerm_cosmosdb_postgresql_database和azurerm_cosmosdb_postgresql_user。

正确的Terraform配置示例

以下是创建完整Cosmos DB for PostgreSQL集群的基础配置,包含你提到的PostgreSQL版本、节点缩放、存储等关键属性:

# 确保使用支持Cosmos DB for PostgreSQL的AzureRM Provider版本
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 3.0.0"
    }
  }
}

provider "azurerm" {
  features {}
}

data "azurerm_resource_group" "main" {
  name = "your-resource-group-name"
}

# 创建Cosmos DB for PostgreSQL集群
resource "azurerm_cosmosdb_postgresql_cluster" "main" {
  name                = "cosmos-pg-cluster"
  resource_group_name = data.azurerm_resource_group.main.name
  location            = data.azurerm_resource_group.main.location

  # 指定PostgreSQL版本(根据区域支持,可选11/12/13/14等)
  postgresql_version = "14"
  # 集群节点数量(控制规模)
  node_count         = 2
  # 计算规格,例如通用型Gen5 2核
  sku_name           = "GP_Gen5_2"
  # 单节点存储容量(GB)
  storage_capacity   = 32
  # 开启存储自动扩容
  storage_autogrow_enabled = true

  # 管理员账户信息
  administrator_login          = "pgadmin"
  administrator_login_password = "YourStrongPassw0rd!"

  # 网络配置,示例开启公网访问,可按需替换为私有链接
  public_network_access_enabled = true
}

# 创建集群内的数据库
resource "azurerm_cosmosdb_postgresql_database" "main" {
  name      = "app-db"
  cluster_id = azurerm_cosmosdb_postgresql_cluster.main.id
  charset   = "UTF8"
  collation = "en_US.UTF8"
}

# 创建非管理员数据库用户
resource "azurerm_cosmosdb_postgresql_user" "app_user" {
  name      = "appuser"
  cluster_id = azurerm_cosmosdb_postgresql_cluster.main.id
  password  = "UserStrongPassw0rd!"
}

你之前错误的原因

  1. 资源类型完全不匹配:azurerm_cosmosdb_account的kind = "Parse"是用于旧版Parse API的Cosmos DB,和PostgreSQL集群没有任何关联,这导致Terraform尝试创建错误的资源类型,触发了不相关的配额限制——而你手动创建时用的是正确的PostgreSQL集群资源,所以不会碰到这个问题。
  2. 属性不存在:PostgreSQL版本、节点规模等你需要的属性,只存在于azurerm_cosmosdb_postgresql_cluster资源中,azurerm_cosmosdb_account根本没有这些参数,所以之前的配置完全无法实现创建PostgreSQL集群的目标。

注意事项

  • 确认你的AzureRM Provider版本在3.0.0以上,因为azurerm_cosmosdb_postgresql_cluster是较新的资源类型。
  • sku_name的取值需根据目标区域的支持情况选择,可在Azure门户的集群创建页查看可选规格。
  • 如果后续仍碰到配额问题,可通过Azure门户提交配额申请,但你手动创建正常的话,换用正确资源后应该不会再触发之前的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:15:56