[新機能] PrivateLinkの公開サービスにプライベートDNS名が指定可能になりました

2020.01.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、菊池です。

本日の新機能紹介です。PrivateLinkで公開したサービスにプライベートDNS名が設定可能になりました。

PrivateLinkのプライベートDNS名の設定

簡単に言うと、エンドポイントサービスを公開する側で設定したDNS名を使って、エンドポイントにアクセスが可能になります。

設定可能なDNS名は有効なパブリックドメインのものに限られ、DNSを使ったドメイン名の検証が必要になります。また、

  • 1つのエンドポイントサービスに指定できるプライベートDNS名は1つだけ
  • ワイルドカードの利用も可能
  • エンドポイントサービス毎に検証が必要

となっています。ドメインの検証には、プライベートDNSの有効化時に指定される値をTXTレコードとして登録します。

これにより、エンドポイントサービス側で指定したDNS名を使って、エンドポイントユーザ側はプライベートIPの名前解決が可能になります。

やってみた

Private DNSを設定したエンドポイントサービスの公開

まずはエンドポイントサービスを作成します。内部NLBはあらかじめ作成しておきました。

[Enable private DNS name] という項目が追加されていますので、ここにチェックを入れます。

設定したいPrivate DNS名を入力し、作成しましょう。

作成できました。ドメイン名の検証のために必要な情報が表示されます。このレコードをTXTレコードとしてドメインのパブリックDNSに登録します。

作成直後はドメイン検証ステータスがPendingとなっています。こちらでもレコードの値が確認できます。

DNSにTXTレコードを登録し、しばらくすると、検証が完了しました。

Private DNSを有効にしたエンドポイントの作成

続いて、エンドポイントの作成です。今まで通り、エンドポイントを作成するとデフォルトでは、[Private DNS names enabled] が falseとなっていましたので無効のようです。

有効化のため、アクションから[プライベートDNS名の変更]を選びます。

[プライベート DNS 名を有効にする] にチェックを入れて変更を適用します。

この時点で、一度、エンドポイントのステータスが保留となりました。エンドポイントサービス側で再度、承認することで使用可能になりました。

[Private DNS names enabled] が trueになりました。

それでは実際に名前解決を試してみます。エンドポイントと同じVPCにEC2を起動して、名前解決してみます。

$ nslookup internal.bopochi.net
Server:		172.16.0.2
Address:	172.16.0.2#53

Non-authoritative answer:
Name:	internal.bopochi.net
Address: 172.16.0.19
Name:	internal.bopochi.net
Address: 172.16.1.86

ちゃんと名前解決できました。エンドポイントで作成されたENIともIPアドレスが一致しています。

まとめ

新機能のPrivateLinkのプライベートDNS名を試してみました。エンドポイントサービスの公開側でDNS名が設定可能になり、HTTPSのようなエンドポイントでも扱いやすくなるかと思います。