I am trying to create an rds global database in aws using Terraform. The primary cluster gets created but the secondary cluster fails with the following error-
* aws_rds_cluster.secondary: error creating RDS cluster:
InvalidParameterCombination: Cannot specify user name for cross
region replication cluster
status code: 400, request id: 10b82a78-898c-49e6-b28f-
0a318fdc226f
I tried by removing master_username but I got the below error-
* aws_rds_cluster.secondary: provider.aws: aws_rds_cluster: :
"master_username": required field is not set
My Terraform Module to create rds global database in aws-
resource "aws_rds_global_cluster" "rdsglobal" {
provider = "aws.primary"
global_cluster_identifier = "${var.global_database_id}"
storage_encrypted = "${var.storage_encrypted}"
}
resource "aws_rds_cluster_instance" "primary" {
provider = "aws.primary"
count = "${var.instance_count}"
identifier = "${var.db_name}-${count.index+1}"
cluster_identifier = "${aws_rds_cluster.primary.id}"
instance_class = "${var.instance_class}"
engine = "${var.engine}"
engine_version = "${var.engine_version}"
publicly_accessible = "${var.publicly_accessible}"
}
resource "aws_rds_cluster" "primary" {
provider = "aws.primary"
cluster_identifier = "${var.primary_cluster_id}"
database_name = "${var.db_name}"
port = "${var.port}"
engine = "${var.engine}"
engine_version = "${var.engine_version}"
master_username = "${var.master_username}"
master_password = "${random_string.password.result}"
vpc_security_group_ids = ["${var.security_group_ids}"]
db_subnet_group_name = "${var.db_subnet_group_name}"
storage_encrypted = "${var.storage_encrypted}"
backup_retention_period = "${var.backup_retention_period}"
skip_final_snapshot = "${var.skip_final_snapshot}"
engine_mode = "${var.engine_mode}"
global_cluster_identifier = "${aws_rds_global_cluster.rdsglobal.id}"
}
resource "aws_rds_cluster_instance" "secondary" {
provider = "aws.secondary"
count = "${var.instance_count}"
identifier = "${var.db_name}-${count.index+1}"
cluster_identifier = "${aws_rds_cluster.secondary.id}"
instance_class = "${var.instance_class}"
engine = "${var.engine}"
engine_version = "${var.engine_version}"
publicly_accessible = "${var.publicly_accessible}"
}
resource "aws_rds_cluster" "secondary" {
depends_on = ["aws_rds_cluster_instance.primary"]
provider = "aws.secondary"
cluster_identifier = "${var.secondary_cluster_id}"
port = "${var.port}"
engine = "${var.engine}"
engine_version = "${var.engine_version}"
master_username = "${var.master_username}"
master_password = "${random_string.password.result}"
vpc_security_group_ids = ["${var.secondary_security_group_ids}"]
db_subnet_group_name = "${var.db_subnet_group_name}"
engine_mode = "${var.engine_mode}"
global_cluster_identifier = "${aws_rds_global_cluster.rdsglobal.id}"
}
Reference: https://www.terraform.io/docs/providers/aws/r/rds_global_cluster.html