TerraformでRoute53を構築


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

皆様こんにちは。
Terraformを利用して、AWSで高可用性アーキテクトの構築をしていきます。
今回はRoute53を構築していきます。

1.高可用性アーキテクト構築目次

目次はこちら

2.Route53の概要

Amazon Route 53 は、可用性と拡張性に優れたクラウドのドメインネームシステム (DNS) ウェブサービスです。Amazon Route 53 は、www.example.com のような名前を、コンピュータが互いに接続するための数字の IP アドレス (192.0.2.1 など) に変換するサービスで、デベロッパーや企業がエンドユーザーをインターネットアプリケーションにルーティングする、きわめて信頼性が高く、コスト効率の良い方法となるよう設計されています。Amazon Route 53 は IPv6 にも完全準拠しています。

Amazon Route 53

Route53はドメイン管理機能と権威DNS機能を持つサービスです。

ドメイン管理機能

Route53で新規ドメインの取得や更新などの手続きができます。このサービスを利用することで、ドメインの取得からゾーン情報の設定まで、Route53で一貫した管理が可能になります。

権威DNS

DNSとは、ドメイン名とIPアドレスを変換(名前解決)するシステムです。
権威DNSとは、ドメイン名とIPアドレスの変換情報を保持しているDNSのことで、変換情報を保持していないDNS(キャッシュDNS)と区別するときに使います。

3.フロー図

フロー図は下記の通りです。

  1. 今回は既存のホストゾーンを使用します
  2. ルーティング先をALBに設定したエイリアスレコードを作成します

4.Route53の構築

Route53を構築していきます。

4-1.ホストゾーンの使用

ホストゾーンとは

ホストゾーンとは、レコード情報の管理単位を表します。通常はドメイン名で、「example.com」のレコード情報を管理する場合のホストゾーンは「example.com」となります。
ホストゾーンにはパブリックホストゾーン、プライベートホストゾーンの2種類があり、インターネットに公開されるものをパブリックホストゾーン、VPC内のドメイン名を管理し、外部に公開されないものをプライベートホストゾーンといいます。

設定値は下記の通りです。

使用するオプション 設定値 説明
name higa.test.cloud5.jp ホストゾーン名

今回は既存のものを使用します。

4-2.レコード作成

レコード情報とは

レコード情報は、ドメイン名とIPアドレスを変換するための情報です。
レコードは数種類あります。リソースレコードと呼ばれるレコードを下記の表にまとめます。

リソースレコード 説明
Aレコード ドメイン名とIPV4アドレスを紐づけるレコード
AAAAレコード ドメイン名とIPV6アドレスを紐づけるレコード
PTRレコード IPアドレスとドメイン名を紐づけるレコードで、AレコードやAAAAレコードとは紐づけが逆方向になる
NSレコード 他の権威DNSサーバーの場所を記しておくレコード
SOAレコード 権威DNSサーバーが保持するゾーンの情報を記しておくレコード。ゾーンに対して1つ設定しておく
CNAMEレコード AレコードやAAAAレコードの別名を示すレコード

エイリアスレコード

Route53独自のレコードとして、エイリアスレコードがあります。エイリアスレコードは、外から見ると単なるAレコードに見えます。
エイリアスレコードは、AWS内のリソースに限り指定可能です。

4-3.レコードの設定

下記の通りにコードを記述します。

#----------------------------------------
# Route53の構築
#----------------------------------------
#レコードを作成

resource "aws_route53_record" "higa-record" {
  zone_id = "Z01000061EWXXK1FTAO6J"
  name    = "higa.test.cloud5.jp"
  type    = "A"

  alias {
    name                   = aws_lb.higa-ALB.dns_name
    zone_id                = aws_lb.higa-ALB.zone_id
    evaluate_target_health = true
  }
}

設定項目は下記の通りです。

使用するオプション 設定値 説明
zone_id Z01000061EWXXK1FTAO6J ホストゾーン ID
name higa.test.cloud5.jp レコード名
type A レコードタイプ。ALBに接続するためAWS内部ではエイリアスレコードとして扱うが、外部からはAレコードとして扱うため
alias 詳細は下記の表に記載 エイリアスの設定をします

エイリアスの設定は下記の通りです。

使用するオプション 設定値 説明
name aws_lb.higa-ALB.dns_name ALB DNS名
zone_id aws_lb.higa-ALB.zone_id zone_idの定義は必須。ALBのホストゾーン
evaluate_target_health true Route53がリソースレコードセットの健全性をチェックすることによって、このリソースレコードセットを使用するDNSクエリに応答します

5.検証

PowerShellより、nslookupコマンドを使用して、ドメイン名から対応するIPアドレスを調べます。DNSサーバーが正常に動作しているのかも確認できます。

①ドメイン名からIPアドレスを調べる。
nslookup higa.test.cloud5.jpを実行します。

PS C:\Users\higak> nslookup higa.test.cloud5.jp
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    higa.test.cloud5.jp
Addresses:  52.74.48.96
          52.76.15.40
  • 4~5行目は検索に使用したDNSサーバーの情報です。
  • 7~10行目は検索結果の情報です。

上記より、IPアドレスの確認とDNSサーバーが正常に動作していることが確認できました。

②ALBのDNS名から同じIPアドレスが返ってくるか確認
nslookup higa-ALB-985017257.ap-southeast-1.elb.amazonaws.comを実行します。

PS C:\Users\higak> nslookup  higa-ALB-985017257.ap-southeast-1.elb.amazonaws.com
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3

権限のない回答:
名前:    higa-ALB-985017257.ap-southeast-1.elb.amazonaws.com
Addresses:  52.74.48.96
          52.76.15.40

上記より、同じIPアドレスが返ってきたことが確認できました。

6.まとめ

Route53の作成後、ホストゾーンからインターネットに接続したところ、WordPressのインストールが上手くされていないことを発見しました。原因はEC2のユーザーデータの設定ミスでした。
本来であればEC2作成後に検証すれば見つけられた問題でしたので、各サービス構築後は動作検証することが大切だと感じました。

7.参考文献

Last modified: 2022-06-08

Author