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

Terraform创建跨区域Aurora PostgreSQL集群报DB子网组不存在错误

问题根因

AWS资源为区域隔离属性,DB子网组属于区域级资源,你当前仅在us-east-2(主区域)创建了名为cse-cr的子网组,而次级集群部署在us-east-1(备区域),该区域下不存在同名的子网组,因此触发404报错。

另外你当前的子网数据源、子网组资源都没有绑定指定provider,会默认使用无别名的AWS provider配置,容易出现区域匹配错误。

修复步骤

  1. 为备区域us-east-1准备该区域下2个以上可用区的子网,单独创建备区域的DB子网组
  2. 所有区域级资源显式绑定对应provider,避免默认provider匹配偏差
  3. 子网组名称引用直接关联资源属性,不要硬编码字符串,避免拼写错误

调整后代码示例

provider "aws" {
  alias  = "primary"
  region = "us-east-2"
}

provider "aws" {
  alias  = "secondary"
  region = "us-east-1"
}

resource "aws_rds_global_cluster" "example" {
  global_cluster_identifier = "global-test"
  engine                    = "aurora-postgresql"
  engine_version            = "13.4"
  database_name             = "example_db"
}

variable "database_name" {
  description = "What should RDS name the initial db?"
  default     = "variableWithSomeDefault"
}

# 主区域us-east-2子网、子网组配置
data "aws_subnet" "primary_subnet1" {
  provider = aws.primary
  id = "subnet-xxx-us-east-2-1" # 替换为us-east-2下实际子网ID
}

data "aws_subnet" "primary_subnet2" {
  provider = aws.primary
  id = "subnet-xxx-us-east-2-2" # 替换为us-east-2下实际子网ID
}

resource "aws_db_subnet_group" "primary" {
  provider    = aws.primary
  name        = "cse-cr"
  description = "Private subnets for RDS instance in us-east-2"
  subnet_ids  = [data.aws_subnet.primary_subnet1.id, data.aws_subnet.primary_subnet2.id]
}

# 备区域us-east-1子网、子网组配置
data "aws_subnet" "secondary_subnet1" {
  provider = aws.secondary
  id = "subnet-xxx-us-east-1-1" # 替换为us-east-1下实际子网ID
}

data "aws_subnet" "secondary_subnet2" {
  provider = aws.secondary
  id = "subnet-xxx-us-east-1-2" # 替换为us-east-1下实际子网ID
}

resource "aws_db_subnet_group" "secondary" {
  provider    = aws.secondary
  name        = "cse-cr"
  description = "Private subnets for RDS instance in us-east-1"
  subnet_ids  = [data.aws_subnet.secondary_subnet1.id, data.aws_subnet.secondary_subnet2.id]
}


resource "aws_rds_cluster" "primary" {
  provider                  = aws.primary
  engine                    = "aurora-postgresql"
  engine_version            = "13.4"
  cluster_identifier        = "test-primary-cluster"
  master_username           = "username"
  master_password           = "somepass123"
  database_name             = var.database_name
  global_cluster_identifier = aws_rds_global_cluster.example.global_cluster_identifier
  db_subnet_group_name      = aws_db_subnet_group.primary.name # 直接关联资源属性,避免硬编码错误
  skip_final_snapshot       = true
}

resource "aws_rds_cluster_instance" "primary" {
  provider           = aws.primary
  engine             = "aurora-postgresql"
  engine_version     = "13.4"
  identifier         = "primaryinstancetest"
  cluster_identifier = aws_rds_cluster.primary.cluster_identifier
  instance_class     = "db.r5.large"
  db_subnet_group_name = aws_db_subnet_group.primary.name
}


resource "aws_rds_cluster" "secondary" {
  provider                  = aws.secondary
  engine                    = "aurora-postgresql"
  engine_version            = "13.4"
  cluster_identifier        = "test-secondary-cluster"
  global_cluster_identifier = aws_rds_global_cluster.example.global_cluster_identifier
  skip_final_snapshot       = true
  db_subnet_group_name      = aws_db_subnet_group.secondary.name # 用备区域的子网组

  depends_on = [
    aws_rds_cluster_instance.primary
  ]
}

resource "aws_rds_cluster_instance" "secondary" {
  provider             = aws.secondary
  engine               = "aurora-postgresql"
  engine_version       = "13.4"
  identifier           = "secondaryinstancetest"
  cluster_identifier   = aws_rds_cluster.secondary.cluster_identifier
  instance_class       = "db.r5.large"
  db_subnet_group_name = aws_db_subnet_group.secondary.name
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:04