2016-10-04 202 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