LoginSignup
19
0

More than 1 year has passed since last update.

データベースのホスト名をCNAME経由で参照する

Last updated at Posted at 2022-12-06

前提

  • AWS RDSとRoute53を例にしています。
  • 何かしらのドメインを取得している前提です。

本題

アプリケーション側でデータベースのホストを直接参照している場合、以下のような状況で困ったことは無いでしょうか。

  • 接続しているデータベースをスタンバイ中の別データベースに切り替える場合
  • スナップショットから新しいデータベースを復元して使用する場合

データベースが変わるとホスト名も変わるため、アプリケーションやSQLクライアントツール等の接続情報を全て書き換える必要があります。

以下の通りCNAMEレコードを使用することで、データーベースが変わった場合はCNAMEレコードの参照先の修正だけで済みます。

CNAMEレコードとは
ドメイン名やホスト名に対する別名(エイリアス)を定義したDNSレコード。
例えばveryverylong.hogedomain.comの別名としてshort.hogedomain.comCNAMEレコードを定義すると、以後short.hogedomain.comで接続できるようになる。

CNAMEの設定方法

AWSコンソールであれば、以下のように設定できます。
CNAMEの参照先を修正する場合は、データベースのホストを新しいデータベースのものに修正するだけです。

Screenshot 2022-12-06 at 11.13.11.png

terraformであれば、aws_route53_recordリソースのrecordsをdb_aからdb_bに変更するだけなので非常に楽ですね。

// hosted zone
data "aws_route53_zone" "main" {
  zone_id = "ゾーン名"
}

// CNAMEレコード
resource "aws_route53_record" "db-host-alias" {
  zone_id = data.aws_route53_zone.main.id
  name    = "レコード名"
  type    = "CNAME"
  ttl     = 60

  // db_bに接続を変更する時はここをdb_bに置き換え
  records = [aws_rds_cluster_instance.db_a.endpoint]
}
19
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
0