【Terraform】Route53を使用してALBにアクセスする
Terraformを使ってRoute53 にホストゾーンとレコードを作成してみます。
今回はALB をレコードに設定してアクセスできるようにします。
前提
- ドメインを取得済み
- お名前.com で取得しました
- ALB + EC2 を Terraform で構築済み(=本記事では Route53 とお名前.com が対象
- ALB + EC2 の構築も知りたい方は下記の記事をご参考ください
ゴール
- dig コマンドで
- NS レコードを引くと、AWS の NS が返ってくる
- A レコードを引くと、ALB の IP アドレスが返ってくる
- ドメインにブラウザからアクセスするとALB のターゲットグループに設定された EC2 にインストールされた Nginx の画面が表示される
Terraform
ホストゾーンの作成
aws_route53_zoneを使用してホストゾーンを作成します。
設定するのはホストゾーン名のみです
resource "aws_route53_zone" "hostzone" {
name = "example.com"
}
Alias レコードを作成
aws_route53_recordでAlias レコードを作成し、ALB にアクセスできるようにします
各パラメータについて表にまとめました
プロパティ | 説明 |
---|---|
zone_id | レコードを作成するホストゾーンのID |
name | レコード名。今回は"example.com"を指定。 サブドメインなどでもいい。 |
type | レコードタイプ。Aliasレコードを使用したいので"A"を指定。 |
alias | Aliasレコードを使用したいときにこのブロックが必要 |
name |
レコードに設定したいリソースのDNS名。 今回はaws_lb.alb.dns_nameを参照している |
zone_id |
レコードに設定したいリソースのホストゾーンID。 今回はaws_lb.alb.zone_idを参照している |
evaluate_target_health | 指定したリソースが応答できるかどうかをRoute53に判断させるかどうか。 ALBの場合はターゲットグループに1つ以上の正常なターゲットが含まれていればDNSクエリに応答できると判断される。 参考はこちら |
resource "aws_route53_record" "alb_alias" {
zone_id = aws_route53_zone.hostzone.zone_id
name = "example.com"
type = "A"
alias {
name = aws_lb.alb.dns_name
zone_id = aws_lb.alb.zone_id
evaluate_target_health = true
}
}
resource "aws_lb" "alb" {
name = "alb"
...
}
完成したコード
コード
resource "aws_route53_zone" "hostzone" {
name = "example.com"
}
resource "aws_route53_record" "alb_alias" {
zone_id = aws_route53_zone.hostzone.zone_id
name = "example.com"
type = "A"
alias {
name = aws_lb.alb.dns_name
zone_id = aws_lb.alb.zone_id
evaluate_target_health = true
}
}
resource "aws_lb" "alb" {
name = "alb"
...
}
terraform plan & apply
$ terraform init
$ terraform validate
$ terraform plan
$ terraform apply -auto-approve
5 分ほど時間かかりました
NS レコードの変更(お名前ドットコム版)
ホストゾーンを作成しただけではネームサーバーが AWS に向いていません
ドメインを取得したレジストラにて NS レコードを変更して AWS に向くようにします
私はお名前.comを使用しているので、それを例にして設定していきます
(AWS)ホストゾーンに作成された NS レコードを確認する
Route53 で作成したホストゾーンを見てみましょう!
ホストゾーンと同じ名前のNS レコードと SOA レコードが1つずつ作成されます。
このうち、NS レコードに設定されている4つの値が必要なので、メモしておきます。
(お名前.com)NS レコードを変更する
お名前.com の管理画面にログインして、設定したいドメインをクリックします
「ネームサーバーの変更」をクリック
「ほかのネームサーバーを利用」を選択し
対象のドメイン名横のチェックボックスにチェックを入れて、
Route53 に表示されていたNS レコードの4つの値を入力します
※末尾の . (ドット) を含めると変更できないので、それを削除した値を入力します
入力した情報を確認し、あっていれば変更します
これで変更できました!
設定が反映されるまでに最大 72 時間かかるようなので、ご注意ください
動作確認
dig
dig で NS レコードをひいて AWS のネームサーバが表示されれば OK!
$ dig NS example.com +short
ns-×××.awsdns-×××.co.uk.
ns-×××.awsdns-×××.net.
ns-×××.awsdns-×××.com.
ns-×××.awsdns-×××.org.
↑のような形式で表示される
また、A レコードを引くと Alias レコードとして登録した ALB の IP が返ってきます
// 下記2つのコマンドの実行結果が同じになる
$ dig A example.com +short
$ dig A ××××××××××××××××××.ap-northeast-1.elb.amazonaws.com +short
ブラウザ
WEB ブラウザで example.com へアクセスし、EC2 の Nginx の画面が表示されれば OK!
※ALB にアクセスしたときと同じ画面が表示されれば OK です。
参考
Discussion