【AWS】VPC 内での DNS による名前解決の仕組みについて

VPC 内で名前解決をする場合は DNS の設定について確認しておく必要があります

VPC 内での DNS の仕組み

VPC には AWS が用意している DNS サーバーがあります。これが Amazon Route 53 Resolver です。

Route 53 Resolver は、AWS リソースからの DNS クエリに対して、パブリックレコード、VPC 固有の DNS 名、Route 53 プライベートホストゾーンの名前解決を行います。

Route 53 Resolver は、名前の種類に応じて参照先を変更します。

ip-10-0-1-10.ap-northeast-1.compute.internal
  → VPC 内の EC2 private DNS

db.internal.example.com
  → Route 53 private hosted zone

secretsmanager.ap-northeast-1.amazonaws.com
  → public DNS または VPC Endpoint private DNS

www.amazon.com
  → インターネット上の public DNS

パブリック DNS と プライベート DNS の違い

パブリック DNS

パブリック DNS は、インターネット全体から名前解決できる DNS です。

例:

www.example.com
api.example.com

Route 53 の Public Hosted Zone にレコードを作ると、インターネット上の DNS から解決できます。

パブリックホストゾーン設定の画面

プライベートDNS

プライベート DNS は、VPC 内、または関連付けたネットワーク内だけで使う DNS です。

例:

db.internal.example.com
redis.internal.example.com
service.local

Route 53 の Private Hosted Zone にレコードを作り、VPC に関連付けると、その VPC 内からだけ解決できます。

VPC 内の EC2
  ↓
db.internal.example.com
  ↓ DNS
10.0.10.10

プライベート DNS を利用するメリット

正直言って VPC 内でプライベート DNS を利用するメリットはそんなに感じませんが、メリットもあります。ただ、それ以上に運用の負荷があるかもしれません。
EC2 や RDS に対して、DNS 名でプライベートで対象リソースへ接続できるようになります。

たとえば、アプリケーションから 特定の EC2 インスタンスに接続するときに、

10.0.12.34

ではなく、

web.internal.example.com

で接続できるようになります。

他にメリットとしては、先に命名規則を設計しておき、それに対してリソースを割り当てていくことができます。その結果、IP アドレスが変わっても柔軟に対応することができます。それに対して運用しやすいと感じるのか、運用の手間がかかると感じるのかは環境によると思います。