假设我正在使用 Terraform 在 AWS 中配置两台机器:
- 运行 NodeJS 的 EC2 机器
- 一个 RDS 实例
NodeJS代码如何获取RDS实例的地址?
最佳答案
这里有几个选项。最简单的方法是在 Route53 中为数据库创建一条 CNAME 记录,然后在您的应用程序中始终指向该 CNAME。
一个基本的例子看起来像这样:
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}"]
}
替代选项包括从 aws_db_instance
获取 endpoint
输出,并在创建实例时将其传递到用户数据脚本或将其传递给 Consul并使用 Consul 模板来控制您的应用程序使用的配置。
关于amazon-ec2 - 使用 Terraform 进行配置时,代码如何获取对机器 ID 的引用(例如数据库机器地址),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37090249/