使用Terraform为RDS创建Route53条目

Cal*_*ale 11 mysql rds amazon-web-services amazon-route53 terraform

我正在尝试为MySQL RDS实例创建Route53条目,但是:3306从Terraform返回的RDS端点末尾有问题.

    resource "aws_db_instance" "mydb" {
     allocated_storage    = 10
     engine               = "mysql"
     engine_version       = "5.6.17"
     instance_class       = "db.t2.micro"
     name                 = "mydb"
     username             = "foo"
     password             = "bar"
     db_subnet_group_name = "my_database_subnet_group"
     parameter_group_name = "default.mysql5.6"
   }

   resource "aws_route53_record" "database" {
      zone_id = "${aws_route53_zone.primary.zone_id}"
      name = "database.example.com"
      type = "CNAME"
      ttl = "300"
      records = ["${aws_db_instance.default.endpoint}"]
   }
Run Code Online (Sandbox Code Playgroud)

Terraform将a :3306放在端点的末尾,并将其输入到CNAME的Route53值.

当我尝试database.example.com使用MySQL客户端连接到CNAME时,我得到:

    ERROR 2005 (HY000): Unknown MySQL server host 'database.example.com' (0)
Run Code Online (Sandbox Code Playgroud)

一旦我通过AWS route53控制台删除:3306它似乎工作得很好.

问题是:如何:3306从Terraform RDS端点剥离

yda*_*coR 20

endpoint输出外,Terraform的aws_db_instance资源还输出address提供实例的FQDN.

所以你需要做的就是改变你aws_route53_record要使用的资源address:

resource "aws_db_instance" "mydb" {
  allocated_storage    = 10
  engine               = "mysql"
  engine_version       = "5.6.17"
  instance_class       = "db.t2.micro"
  name                 = "mydb"
  username             = "foo"
  password             = "bar"
  db_subnet_group_name = "my_database_subnet_group"
  parameter_group_name = "default.mysql5.6"
}

resource "aws_route53_record" "database" {
  zone_id = "${aws_route53_zone.primary.zone_id}"
  name = "database.example.com"
  type = "CNAME"
  ttl = "300"
  records = ["${aws_db_instance.mydb.address}"]
}
Run Code Online (Sandbox Code Playgroud)