インターフェイスVPCエンドポイント(PrivateLink)に発行される複数のDNS名

記事タイトルとURLをコピーする

PS課の杉村です。PrivateLinkのインターフェイスVPC Endpointを作った時に複数のDNS名が割り当てられますが、これらが何を意味しているのかについて書いてみます。

PrivateLinkとは?

PrivateLink、便利なんです。原則的にインターネット経由でリーチしなければいけないAWSのAPI群ですが、PrivateLink (Interface VPC Endpoint) を利用すればインターネットを経由することなく、VPC内からAWSサービスへ到達できます。 またAWSサービスだけでなく、EC2インスタンス等で実装したサービスに対してもPrivateLink経由でネットワーク的に到達することができます。全く新しいサービス提供の形が実現できるかもしれません。

「違うVPC間でEC2インスタンス間の通信をさせたいけど、IPレンジがかぶっちゃってるからVPC Peeringで繋ぐわけにもいかない。どうしよう...」というときもPrivateLinkが使えます。サービス提供側で「NLB」「エンドポイントサービス」を作成し、サービス利用側で「インターフェイスVPC Endpoint」を作成すればよいのです。

DNS名が複数・・・

早速、エンドポイントを作ってみました。 可用性のため、複数のAZにまたがるインターフェイス群とします。 エンドポイントにはDNS名が発行されますので、利用するEC2インスタンス等からそのDNS名に対してアクセスすればよいのです。

ん?

複数のDNS名がありますね...なんでしょうこれは。どれを使えばいいの? となりましたので調べてみました。

インターフェイスエンドポイントを介したサービスへのアクセス https://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/vpce-interface.html#access-service-though-endpoint

・インターフェイスエンドポイント用に生成したエンドポイント固有のリージョン DNS ホスト名。このホスト名には、一意のエンドポイント識別子、サービス識別子、リージョン、および vpce.amazonaws.com が含まれます (例: vpce-0fe5b17a0707d6abc-29p5708s.ec2.us-east-1.vpce.amazonaws.com)。 ・エンドポイントが使用できるアベイラビリティーゾーンごとに生成したエンドポイント固有のゾーン DNS ホスト名。このホスト名には、アベイラビリティーゾーンが含まれます (例: vpce-0fe5b17a0707d6abc-29p5708s-us-east-1a.ec2.us-east-1.vpce.amazonaws.com)。アーキテクチャーでアベイラビリティーゾーンが分離されている場合 (たとえば障害抑制のためや、リージョン内データ転送コスト削減のため)、このオプションを使用できます。

というわけで、インターフェイスエンドポイントには「リージョン固有のDNSホスト名」と「ゾーンごとのDNSホスト名」が発行されるようです。 リージョンDNSホスト名は紐づいている全てのENIのプライベートIPアドレスを返します。 ゾーンDNSホスト名は各AZ毎に生成され、そのゾーンにあるENIのプライベートIPアドレスを返します。

DNS名に "ap-northeast-1" とだけあるのがリージョンDNSホスト名で "ap-northeast-1a", "ap-northeast-1c" とあるのがそれぞれのゾーンのDNSホスト名だと分かりますね。

使い分け

原則的にはリージョンDNS名を利用し、AZまたぎのレイテンシや通信料金が気になる場合のみゾーン固有のDNSを利用するのがよさそうです。

杉村 勇馬 (記事一覧)

サーバーワークス → 株式会社G-gen 執行役員CTO

2021 Japan APN Ambassadors / 2021 APN All AWS Certifications Engineers

マルチAWSアカウント管理運用やネットワーク関係のAWSサービスに関するブログ記事を過去に執筆。

2021年09月から株式会社G-genに出向、Google Cloud(GCP)が専門に。G-genでもGoogle Cloud (GCP) の技術ブログを執筆中。