I’ve upgraded AWS rds aurora postgress cluster from serverless v1 to serverless v2 using terraform.
The steps that I followed:
- Creating snapshot of the serverless v1 cluster
- Creating provisioned db cluster from that snapshot
- Creating serverless db instance
Below is my terraform config:
<code> resource "aws_rds_cluster" "aurora_rds_serverless_v2" {
cluster_identifier = "aurora-v2-serverless-cluster-new-197789"
engine = local.env_config.rds_engine
}
resource "aws_db_cluster_snapshot" "aurora_rds_db_snapshot" {
db_cluster_identifier = aws_rds_cluster.aurora.id
db_cluster_snapshot_identifier = "aurora-rds-db-cluster-snapshot"
}
resource "aws_rds_cluster" "aurora_rds_provisioned_db_v2" {
cluster_identifier = "aurora-cluster-new-provisioned-v29071"
engine = local.env_config.rds_engine
engine_version = local.env_config.rds_engine_version
engine_mode = "provisioned"
depends_on = [aws_db_cluster_snapshot.aurora_rds_db_snapshot]
}
resource "aws_rds_cluster_instance" "aurora_provisioned_instance" {
cluster_identifier = aws_rds_cluster.aurora_rds_provisioned_db_v2.id
instance_class = "db.serverless"
}
</code>
<code> resource "aws_rds_cluster" "aurora_rds_serverless_v2" {
cluster_identifier = "aurora-v2-serverless-cluster-new-197789"
engine = local.env_config.rds_engine
}
resource "aws_db_cluster_snapshot" "aurora_rds_db_snapshot" {
db_cluster_identifier = aws_rds_cluster.aurora.id
db_cluster_snapshot_identifier = "aurora-rds-db-cluster-snapshot"
}
resource "aws_rds_cluster" "aurora_rds_provisioned_db_v2" {
cluster_identifier = "aurora-cluster-new-provisioned-v29071"
engine = local.env_config.rds_engine
engine_version = local.env_config.rds_engine_version
engine_mode = "provisioned"
depends_on = [aws_db_cluster_snapshot.aurora_rds_db_snapshot]
}
resource "aws_rds_cluster_instance" "aurora_provisioned_instance" {
cluster_identifier = aws_rds_cluster.aurora_rds_provisioned_db_v2.id
instance_class = "db.serverless"
}
</code>
resource "aws_rds_cluster" "aurora_rds_serverless_v2" {
cluster_identifier = "aurora-v2-serverless-cluster-new-197789"
engine = local.env_config.rds_engine
}
resource "aws_db_cluster_snapshot" "aurora_rds_db_snapshot" {
db_cluster_identifier = aws_rds_cluster.aurora.id
db_cluster_snapshot_identifier = "aurora-rds-db-cluster-snapshot"
}
resource "aws_rds_cluster" "aurora_rds_provisioned_db_v2" {
cluster_identifier = "aurora-cluster-new-provisioned-v29071"
engine = local.env_config.rds_engine
engine_version = local.env_config.rds_engine_version
engine_mode = "provisioned"
depends_on = [aws_db_cluster_snapshot.aurora_rds_db_snapshot]
}
resource "aws_rds_cluster_instance" "aurora_provisioned_instance" {
cluster_identifier = aws_rds_cluster.aurora_rds_provisioned_db_v2.id
instance_class = "db.serverless"
}
My problem is I cannot simply comment out the old cluster code because snapshot resource is dependent on it. Is there a terraform resource that I can use to delete the old cluster? Or do I need to make the snapshot resource independent after first TF apply?