使用 Terraform 为 RDS 创建 Route53 条目

Creating a Route53 entry for RDS using Terraform

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

    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}"]
   }

Terraform 在端点的末尾放置一个 :3306 并将其输入到 CNAME 的 Route53 值中。

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

    ERROR 2005 (HY000): Unknown MySQL server host 'database.example.com' (0)

一旦我通过 AWS route53 控制台删除了 :3306,它似乎工作正常。

问题是:如何从 Terraform RDS 端点

中删除 :3306

除了 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}"]
}