amazon-ec2 - 使用 Terraform 进行配置时,代码如何获取对机器 ID 的引用(例如数据库机器地址)

标签 amazon-ec2 terraform

假设我正在使用 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/

相关文章:

url - 如何将我的域名与我的 AWS 应用程序相关联?

amazon-web-services - Elastic Beanstalk ssh 说它找不到我的 SSH key 文件

amazon-web-services - 无法在 AWS 中国宁夏区域创建 IAM 角色

azure - 如何从另一个模块中的模块获取值 - Terraform (Azure)

kubernetes - 使用 terraform 将公共(public) GKE 更改为私有(private) GKE 集群

amazon-web-services - 如何使用ElasticBeanstalk设置自动伸缩组运行状况检查类型

amazon-web-services - 如何查找未使用的 Amazon EC2 安全组

ssl - 您可以通过 .ebextensions 文件配置 Elastic Beanstalk Load Balancer SSL 证书吗?

terraform - 在 terraform 中使用三元在 2 个不同列表之间进行选择

terraform - 将 cloudflare_zone_settings_override 应用到多个区域