【Route53】エイリアスレコードのターゲットとして別アカウントのリソースを指定できることを知らなかった
コンバンハ、千葉(幸)です。
知らなかったです。皆さんは知ってましたか?
エイリアスレコードとは
Route53の独自の機能で、簡単に言えば「IPアドレスを直接入力しなくても裏でいい感じに設定してくれる機能」です。
一般的なDNSサーバでは、Aレコードを登録する際には値としてIPアドレスを指定することになります。
しかし、ELBなどのIPが可変であるAWSリソースをターゲットにする場合、IPを直接指定するのは得策ではありません。AWSリソースがデフォルトで持っているDNS名を指定してCNAMEレコードとして登録することもできますが、いくつか制約を受ける部分が出てきます。
その解決策として、AWSリソースがデフォルトで持っているDNS名をIPアドレスの代わりに入力できるようにしてくれるのがエイリアスレコードです。
詳細な説明は、ぜひ以下のブログをご参照ください。
現状エイリアスレコードの登録が可能なAWSサービスは以下のようになっています。
- Amazon API Gateway リージョン固有のカスタム API またはエッジ最適化 API
- Amazon VPC インターフェイスエンドポイント
- CloudFront ディストリビューション
- Elastic Beanstalk 環境
- ELB ロードバランサー
- AWS Global Accelerator アクセラレータ
- 静的ウェブサイトとして設定されている Amazon S3 バケット
- 同じホストゾーン内の別の Route 53 レコード
別アカウントのリソースもターゲットにできる?どこに書いてあるんだ
ここに書いてありました。
Route 53 ホストゾーンとロードバランサーを作成する際に異なるアカウントを使用している場合 – 「ELB ロードバランサーの DNS 名の取得」の手順で取得した値を入力します。
ELBの部分だけ引用しましたが、他のAWSサービスについてもクロスアカウントの場合の記述があります。
やってみた
流石にこのままでは終われないので、実際に試してみます。
やりたいこと
- プライベートホストゾーンを作成し、VPCに関連付ける
- 別アカウントに存在するELBをターゲットとして、エイリアスレコードを登録する
- VPCのEC2をクライアントとして、ELBの名前解決ができるか確認する
下準備
以下が済んでいるところからスタートします。
- プライベートホストゾーン
example.com
の作成 - VPCへの関連付け
- クライアントEC2の作成
- 別アカウントのELBの作成(今回はインターナル)
ちなみにVPCは「DNS 解決」「DNS ホスト名」を有効にすることを忘れないでください。(私は忘れていたのでちょっとハマりました。)
プライベートホストゾーンを使用するには、次の Amazon VPC 設定を true に設定する必要があります。
・enableDnsHostnames
・enableDnsSupport
レコードの追加
ホストゾーンからレコードの作成を試みて、エイリアス先の候補を見てみますが、別アカウントのため表示されません。
プルダウンから選択するのではなく、直接ELBのDNS名を入力します。(ちなみにこのDNS名はELBのコンソールだと『(Aレコード)』って書いてありますが、すごく混乱しませんか?私はします。)
(Aレコード。)
問題なく登録できました。
クライアントEC2からの名前解決
今回はSSMで接続しています。問題なく名前解決できました。
sh-4.2$ nslookup chiba.example.com Server: 192.168.0.2 # Amazon Provided DNS Address: 192.168.0.2#53 Non-authoritative answer: Name: chiba.example.com Address: 10.121.0.76 # ELBのIPその1 Name: chiba.example.com Address: 10.121.0.57 # ELBのIPその2
念のためELBのデフォルトDNS名でも引いてみますが、同じ結果が返ってきます。
sh-4.2$ nslookup internal-xxxxxxxxxx-000000000.ap-northeast-1.elb.amazonaws.com Server: 192.168.0.2 Address: 192.168.0.2#53 Non-authoritative answer: Name: internal-xxxxxxxxxx-000000000.ap-northeast-1.elb.amazonaws.com Address: 10.121.0.76 Name: internal-xxxxxxxxxx-000000000.ap-northeast-1.elb.amazonaws.com Address: 10.121.0.57
終わりに
今回はプライベートホストゾーンで試してみましたが、パブリックホストゾーンでも同様に別アカウントのリソースを指定することが可能です。マネジメントコンソールで候補に出てこないことから、できないものだというイメージをずっと持っていましたが、きちんと調べないといけないですね。
いったんお返しします。