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

使用Terraform创建Aurora PostgreSQL只读副本遇参数组合错误

问题

尝试使用Terraform为us-east-1区域的现有Aurora PostgreSQL集群创建同区域只读副本,使用的Terraform脚本如下:

resource "aws_rds_cluster" "test_db_cluster" {
  cluster_identifier            = "${var.base_name}-read-replica"
  engine                        = "aurora-postgresql"
  engine_mode                   = "provisioned"
  engine_version                = "16.1"
  skip_final_snapshot           = true
  storage_encrypted             = true
  replication_source_identifier = "arn:aws:rds:us-east-1:<xxx>:cluster:testdev"
  source_region                 = "us-east-1"
}

执行后出现错误:

InvalidParameterCombination: The DB engine aurora-postgresql doesn't support cross-region read replicas.

即使移除source_region参数,错误依然存在。原集群同样通过Terraform创建,脚本如下:

resource "aws_rds_cluster" "test_db_cluster" {
  cluster_identifier = var.base_name
  engine             = "aurora-postgresql"
  engine_mode        = "provisioned"
  engine_version     = "16.1"
  database_name      = var.database_name
  master_username    = var.master_username
  db_subnet_group_name = var.subnet_group
  vpc_security_group_ids = [var.security_group_id]
  availability_zones     = [var.az]
  skip_final_snapshot    = true
  storage_encrypted = true
  manage_master_user_password   = true
  master_user_secret_kms_key_id = aws_kms_key.scopp_db_kms.key_id

  serverlessv2_scaling_configuration {
    max_capacity = var.max_capacity
    min_capacity = var.min_capacity
  }
}

resource "aws_rds_cluster_instance" "test_db_instance" {
  identifier = "${var.base_name}-instance-1"
  cluster_identifier = aws_rds_cluster.test_db_cluster.id
  instance_class     = "db.serverless"
  engine             = aws_rds_cluster.test_db_cluster.engine
  engine_version     = aws_rds_cluster.test_db_cluster.engine_version
  performance_insights_enabled = true
}

resource "aws_kms_key" "test_db_kms" {
  description = "Test DB KMS Key"
}

原因分析

  1. 原集群为Serverless v2模式,不支持独立只读副本集群
    你的原Aurora PostgreSQL集群配置了serverlessv2_scaling_configuration,且实例类为db.serverless,属于Serverless v2架构。而Aurora PostgreSQL的Serverless v2集群不支持创建单独的只读副本集群——无论同区域还是跨区域都不允许这种操作。

  2. 错误提示存在误导性
    虽然你是在同区域创建副本,但AWS API的错误提示会误报为"不支持跨区域副本",本质原因是Serverless v2集群本身不支持这种副本创建方式。

  3. 正确的只读访问实现方式
    对于Serverless v2的Aurora PostgreSQL集群,无需创建独立副本集群,直接在同一个集群内添加只读实例即可实现只读访问。可以通过新增aws_rds_cluster_instance资源并指定promotion_tier参数标记为只读实例:

    resource "aws_rds_cluster_instance" "test_db_read_replica" {
      identifier         = "${var.base_name}-read-instance-1"
      cluster_identifier = aws_rds_cluster.test_db_cluster.id
      instance_class     = "db.serverless"
      engine             = aws_rds_cluster.test_db_cluster.engine
      engine_version     = aws_rds_cluster.test_db_cluster.engine_version
      promotion_tier     = 1 # 标记为只读实例,无法被提升为主实例
      performance_insights_enabled = true
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 00:03:24