簡體   English   中英

使用不同於寫入器的實例類型創建 AWS Postgres Aurora 只讀副本

[英]Create AWS Postgres Aurora read replica with instance type different from writer

我用這段代碼創建了 AWS Postgres Aurora writer + 2 個只讀副本(片段,省略了這個問題代碼的非必要部分,比如創建數據庫子網)

resource "aws_rds_cluster" "aurora-cluster" {
cluster_identifier      = "${var.vpc_name}-aurora"
db_subnet_group_name    = "${var.vpc_name}-aurora-subnet"
vpc_security_group_ids  = [aws_security_group.vpc.id]
engine                  = "aurora-postgresql"
engine_version          = var.aurora_engine_version 
database_name           = var.aurora_db_name
master_username         = var.aurora_admin
master_password         = var.aurora_pass
skip_final_snapshot     = true
}

resource "aws_rds_cluster_instance" "aurora-cluster-instance"  {
count               = 3
identifier          = "${var.vpc_name}-aurora-${count.index}"
cluster_identifier  = aws_rds_cluster.aurora-cluster.id
instance_class      = "db.r5.xlarge"
engine              = aws_rds_cluster.default.engine
engine_version      = aws_rds_cluster.default.engine_version
}

但是我需要靈活地創建不同實例類型的只讀副本,甚至是另一個實例類,如 db.serverless (Aurora serverless V2)

我可以通過 AWS UI 或 AWS CLI 輕松地創建備用只讀副本並將其添加到我的 rds 集群,但無法弄清楚如何通過 terraform 執行此操作。

如果我嘗試使用另一個 aws_rds_cluster_instance 塊為同一 cluster_identifier 添加 alt 副本:

resource "aws_rds_cluster_instance" "aurora-cluster-ro-instance"  {
count               = 1
identifier          = "${var.vpc_name}-aurora-**ro**-${count.index}"
cluster_identifier  = aws_rds_cluster.aurora-cluster.id
instance_class      = "db.r6g.xlarge"
engine              = aws_rds_cluster.default.engine
engine_version      = aws_rds_cluster.default.engine_version
}

但是 terraform 退出時出現錯誤:

aws_rds_cluster_instance.aurora-cluster-ro-instances[0]:創建...

錯誤:創建 RDS 集群時出錯(test-aurora)實例:DBInstanceAlreadyExists:數據庫實例 > 已存在

狀態碼:400,請求ID:3e33b2c9-1284-4c2d-b8c7-2d8eedd997fe

在 db_aurora.tf 第 65 行,資源“aws_rds_cluster_instance”“aurora-cluster-ro-instances”中:

65:資源“aws_rds_cluster_instance”“aurora-cluster-ro-instances”{

知道如何為 Aurora 集群正確創建自定義只讀副本嗎? 感謝你的幫助!

經過一些實驗,我發現了如何解決這個問題。 看起來這是一個 terraform aws provider bug - 至少在我的 12.31 版本中是這樣,provider 4.21.0

這是允許定義自定義實例類型或類以及其他參數的只讀副本的工作定義:

resource "aws_rds_cluster_instance" "aurora-cluster-ro-instance"  {
count               = 1
identifier          = "${var.vpc_name}-aurora-**ro**-${count.index}"
cluster_identifier  = var.string_cluster_id
instance_class      = "db.r6g.xlarge"
engine              = aws_rds_cluster.default.engine
engine_version      = aws_rds_cluster.default.engine_version
}

正如您在此處看到的,cluster_identifier 不能是導致上述錯誤的 terraform 對象,但必須是字符串變量 var.string_cluster_id

這允許在所需的 cluster_identifier 下正確創建副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM