この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
皆様こんにちは。
今回はCloudFormationを利用して高可用性アーキテクトの構築をしていきます。
この記事ではCloudFormationよりRoute53の設定を行います。
このブログはCloudFormationによる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
Aレコード
Aレコードはドメイン名からIPv4アドレスを解決するレコードです。
AAAAレコード
AAAAレコードはドメイン名からIPv6アドレスを解決するレコードです。
CNAMEレコード
CNAMEレコードはドメイン名から別のドメイン名を参照するレコードです。
次回で設定するACMはCNAMEレコードを使用してドメインの検証をします。
エイリアスレコード
レコードというよりはAレコードの拡張機能であり、エイリアスレコードを使用すると選択したAWSリソースをipアドレスではなく、そのAWSリソースがデフォルトで持つDNS名でトラフィックをルーティングできるようになります。
今回は名前解決を利用してWebサーバーにアクセスできるようにするために、Route53を設定していきます。
類似サービスとして「Amazon Lightsail」のDNSゾーンがあげられます。
3.フロー図
Route53の設定のフローは以下になります。
- Route53のホストゾーンを作成します。(今回は都合上ホストゾーンの作成は省略させていただきます申し訳ございません。ホストゾーン作成は公式リファレンスの[create-hosted-zone]コマンドのページを参考にしてください。)
- Route53にルーティング先をALBに設定したエイリアスレコードを作成し、ドメインでアクセスした際はALBにルーティングするようにします。(外部からはAレコードタイプに見えます)
4.Route53設定
Route53の構築の全体のソースコードは下記の通りです。
ファイル名「ut-Route53-CF」
AWSTemplateFormatVersion: "2010-09-09"
Resources:
#レコード作成
Route53RecordSet:
Type: "AWS::Route53::RecordSet"
Properties:
Name: "ut.test.cloud5.jp."
Type: "A"
AliasTarget:
HostedZoneId: !ImportValue ut-alb-hostzoneid
DNSName: !ImportValue ut-alb-dnsname
EvaluateTargetHealth: true
HostedZoneId: "Z01000061EWXXK1FTAO6J"
#Outputsセクション設定
Outputs:
RecordOutput1:
Value: !Ref Route53RecordSet
Export:
Name: ut-route53-name
レコード作成部分のソースコードとOutputsセクション部分のソースコードをそれぞれ説明していきます。
4-1.レコード作成
今回は既存のホストゾーンを利用するので、レコードの作成から始めます。
レコード作成のソースコードは下記の通りです。
#レコード作成
Route53RecordSet:
Type: "AWS::Route53::RecordSet"
Properties:
Name: "ut.test.cloud5.jp."
Type: "A"
AliasTarget:
HostedZoneId: !ImportValue ut-alb-hostzoneid
DNSName: !ImportValue ut-alb-dnsname
EvaluateTargetHealth: true
HostedZoneId: "Z01000061EWXXK1FTAO6J"
設定項目は下記の通りです。
使用するオプション | 設定値 | 説明 |
---|---|---|
Name | ut.test.cloud5.jp | 設定したいレコード名を入力。 |
Type | A | レコードタイプを指定します。ALBを使用する場合はAレコード(外部から見たタイプであり、中身はエイリアスレコード)を指定します。 |
HostedZoneId | !ImportValue ut-alb-hostzoneid | ALBのホストゾーンのIDを参照します。 |
DNSName | !ImportValue ut-alb-dnsname | ルーティング先であるALBのDNS名を参照します。 |
EvaluateTargetHealth | true | ターゲットのヘルスの評価をオンに設定。 |
HostedZoneId | Z01000061EWXXK1FTAO6J | Route53のホストゾーンのIDを入力します。 |
これでレコード作成のソースコードの説明は以上です。
4-2.Outputsセクション設定
Outputsセクション設定のソースコードは下記の通りです。
#Outputsセクション設定
Outputs:
RecordOutput1:
Value: !Ref Route53RecordSet
Export:
Name: ut-route53-name
設定項目は下記の通りです。
使用するオプション | 設定値 | 説明 |
---|---|---|
Value | !Ref Route53RecordSet | 作成したレコードの名前を参照 |
Name | ut-route53-name | 設定した名前で出力 |
これでOutputsセクション設定のソースコードの説明は以上です。
5.検証
スタック作成後PowerShellからnslookupコマンドを使用して、ドメイン名から対応するIPアドレスを取得できるかの検証を行います。
①以下のコマンドを使用してドメイン名からIPアドレスを取得します。
nslookup -type=a ut.test.cloud5.jp
出力
サーバー: ntt.setup
Address: 192.168.1.1
権限のない回答:
名前: ut.test.cloud5.jp
Addresses: 3.37.238.238
13.209.120.244
自分のドメイン名からIPアドレスが返されました。
②ALBのDNS名から同じIPアドレスが返ってくるか以下のコマンドで確認をします。
nslookup ut-ALB-878921977.ap-northeast-2.elb.amazonaws.com
出力
サーバー: ntt.setup
Address: 192.168.1.1
権限のない回答:
名前: ut-ALB-878921977.ap-northeast-2.elb.amazonaws.com
Addresses: 3.37.238.238
13.209.120.244
ALBのDNS名から同じIPアドレスが返ってくることを確認できました。
6.感想
ホストゾーンの作成からではなくレコードの作成からになってしまいすいません。
次回もよろしくお願いします。
7.参照
AWS CloudFormation – AWS::Route53::RecordSet
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html