skip to Main Content

I’m following terraform documentation to create Aurora serverless v2 by terraform. https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/rds_cluster#rds-serverless-v2-cluster

In terraform documentation, they have not mentioned how to create Aurora serverless v2 with multi AZ (read replica in other region for failover). Although, by aws console, I can create multi AZ Aurora serverless v2.

Any help is appreciated to create Aurora serverless v2 with multi AZ by terraform?

3

Answers


  1. You can’t set it up becasuse by default your data is stored across multiple AZs. From docs:

    The storage for each Aurora DB cluster consists of six copies of all your data, spread across three AZs. This built-in data replication applies regardless of whether your DB cluster includes any readers in addition to the writer. That way, your data is safe, even from issues that affect the compute capacity of the cluster.

    Login or Signup to reply.
  2. I found a solution. I am using a custom module created from https://github.com/terraform-aws-modules/terraform-aws-rds-aurora and also I saw one more link https://github.com/hashicorp/terraform-provider-aws/issues/24502. In this link, check the answer from msbainuk. You have to define additional instance, which will automatically create it as a Multi AZ. PFB the Code snippet from his answer.

    resource "aws_rds_cluster_instance" "cluster_instances" {
    cluster_identifier = aws_rds_cluster.this.id
    instance_class = "db.serverless"
    engine = aws_rds_cluster.this.engine
    engine_version = aws_rds_cluster.this.engine_version
    }
    

    Hope this helps.

    Login or Signup to reply.
  3. You should create multiple aws_rds_cluster_instances. Here’s an example from the docs:

    resource "aws_rds_cluster_instance" "cluster_instances" {
      count              = 2
      identifier         = "aurora-cluster-demo-${count.index}"
      cluster_identifier = aws_rds_cluster.default.id
      instance_class     = "db.r4.large"
      engine             = aws_rds_cluster.default.engine
      engine_version     = aws_rds_cluster.default.engine_version
    }
    
    resource "aws_rds_cluster" "default" {
      cluster_identifier = "aurora-cluster-demo"
      availability_zones = ["us-west-2a", "us-west-2b", "us-west-2c"]
      database_name      = "mydb"
      master_username    = "foo"
      master_password    = "barbut8chars"
    }
    

    I believe the AWS console UI is masking over that. It’s going to create 2x instances if you select "multi-az".

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search