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を使用してホストゾーンを作成します。
設定するのはホストゾーン名のみです
1 2 3 |
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クエリに応答できると判断される。 参考はこちら |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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" ... } |
完成したコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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
1 2 3 4 |
$ 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つの値を入力します
※末尾の . (ドット) を含めると変更できないので、それを削除した値を入力します
入力した情報を確認し、あっていれば変更します
これで変更できました!
動作確認
dig
digでNSレコードをひいてAWSのネームサーバが表示されればOK!
1 2 3 4 5 6 |
$ dig NS example.com +short ns-×××.awsdns-×××.co.uk. ns-×××.awsdns-×××.net. ns-×××.awsdns-×××.com. ns-×××.awsdns-×××.org. ↑のような形式で表示される |
また、Aレコードを引くとAliasレコードとして登録したALBのIPが返ってきます
1 2 3 |
// 下記2つのコマンドの実行結果が同じになる $ dig A example.com +short $ dig A ××××××××××××××××××.ap-northeast-1.elb.amazonaws.com +short |
ブラウザ
WEBブラウザでexample.comへアクセスし、EC2のNginxの画面が表示されればOK!
※ALBにアクセスしたときと同じ画面が表示されればOKです。
参考
コメント