概要
TerraformでAWSサービスを使用して、
- 負荷分散
- 独自ドメインの設定
- SSL証明書を作成してHTTPS化
上記の3つを含めた構成を作成する手順をまとめました。
目次
本記事は「2. Route53でDNS設定」について記述。
「1. ALBの作成」まではこちら → 【AWS】Terraformでアクセスを分散、WebサーバーをHTTPS化する その1(ALB)
- アプリケーションロードバランサー(ALB)の作成
- ALBの作成
- ターゲットグループの作成 / ターゲットの登録
- リスナーを設定
- ALBのDNS名からHTTPアクセス確認
- Route53でDNS設定 ←本記事はここから
- ドメインの取得(例はfreenomの無料ドメイン)
- ホストゾーンの作成
- DNSレコードの定義
- ネームサーバーの設定を加える
- 取得したドメインへHTTPアクセス確認 ←ここまで
- AWS Certificate Manager(ACM)でSSL証明書の作成
- SSL証明書の作成
- SSL証明書の検証
- HTTPSリスナーの定義
- HTTPSアクセス確認
構成図
2. Route53でDNS設定
ドメインの取得
まずはドメインを取得。
今回は勉強用ということで、freenomというドメインプロバイダを使って、無料の独自ドメインを一時的に登録する。
freenom (https://www.freenom.com/ja/index.html) にアクセスし、アカウントを作成orサインイン。
ヘッダーの「Services」タブでメニューを開き、「Register a New Domain」を選択。
取得したいドメイン名をインプットフィールドに入力し、「Check Availability」をクリック。
ドメイン名が利用可能であればチェックアウトをする。
その後、利用期間や料金などを確認して、ドメインを取得。(今回は一時的な取得のため、無料かつ期間も適当。)
ホストゾーンの作成
同ディレクトリにroute53.tfを作成。
取得したドメインをホストゾーンとしてRoute53の設定を記述していく。
# 新規のホストゾーンを作成
resource "aws_route53_zone" "hostzone" {
name = # 取得したドメイン
}
ホストゾーンでは、ドメインのトラフィックをルーティングする情報(DNSレコード)を束ねて保持している。
DNSレコードの定義
続いてDNSレコードを定義する。
# DNSレコード
resource "aws_route53_record" "dns_record" {
zone_id = aws_route53_zone.hostzone.zone_id
name = aws_route53_zone.hostzone.name
type = "A" # Aレコード
alias {
name = aws_lb.alb.dns_name
zone_id = aws_lb.alb.zone_id
evaluate_target_health = true
}
}
-
alias
AWS独自拡張のレコードであるaliasレコードを定義。ALBのDNS名とゾーンIDを指定することで、ALBのIPアドレスへ名前解決をしている。
aliasレコード
DNS名を持つAWSリソースに対して直接ドメインを登録することができ、CNAMEレコードと比較して名前解決のパフォーマンスが良い。
- 名前解決の流れの比較例
- CNAMEレコード:
ドメイン名 → xxxxxxxxxx.ap-northeast-1.elb.amazon.aws.com → IPアドレス
- aliasレコード:
ドメイン名 → IPアドレス
- CNAMEレコード:
要するにDNSクエリが1回で済み、名前解決までのステップが少ないため、パフォーマンスが良い。
IPアドレスのAレコードを直接定義すれば良いとも考えられるが...
IPアドレスが動的に変化する可能性のあるAWSリソースには最適な方法ではないため、aliasレコードが使われる。
ここまでterraform apply
を実行し、マネジメントコンソールで確認。
ネームサーバーの設定を加える
これだけではまだドメインにアクセスできないため、下記の手順でネームサーバーの設定を加える。
- freenomのMy Domainページにて、「Manage Domain」をクリック。
- 「Management Tools」タブの「Nameservers」を選択する。
- ラジオボタンで「Use custom name servers (enter below)」を選択し、マネジメントコンソールのDNSレコードのNSタイプの値をそれぞれ設定する。
- 「Change Nameservers」で設定を保存する。(反映に数分かかる。)
取得したドメインへHTTPアクセス確認
Nameservers設定の反映を数分待ち...取得したドメイン名にHTTPアクセスしてみる。
ALBからの分散先ページが問題なく表示されたら、Route53でのDNS設定は成功!
終わりに
今回はRoute53でのDNS設定をまとめました。
次の記事で今回設定したドメインのSSL証明書を取得して、HTTPSアクセスができるようにします。