2016-10-04 203 views
9

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

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端点

回答

11

除了一个endpoint输出剥去:3306,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}"] 
} 
+0

mydb.address工作就像一个魅力。 address - RDS实例的地址。 顺便说一句我会加上答案,但我似乎没有足够的影响力。 – Cale