Terraform を使用して AWS 内の 2 台のマシンをプロビジョニングするとします。
- NodeJS を実行する EC2 マシン
- RDS インスタンス
NodeJS コードはどのようにして RDS インスタンスのアドレスを取得しますか?
Terraform を使用して AWS 内の 2 台のマシンをプロビジョニングするとします。
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}"]
}
別のオプションには、インスタンスの作成時または Consul への渡し時にendpoint
から出力を取得してユーザー データ スクリプトに渡し、 Consulテンプレートを使用してアプリケーションが使用する構成を制御することが含まれます。aws_db_instance