📚 最初に押さえる3つの要点

1

プライベートDNS有効は「自動内線電話帳」。AWSが自動でRoute 53プライベートホストゾーンを作成し、標準エンドポイント名をVPCエンドポイントのプライベートIPに解決する。

2

プライベートDNS無効は「手動内線電話帳」。自分でRoute 53プライベートホストゾーンを作成し、複数VPCで共有可能な柔軟なDNS構成を実現できる。

3

重要な制限:自動作成されるプライベートホストゾーンはVPCエンドポイントが存在するVPC内でのみ機能。他VPCやオンプレミスからは参照不可。

4

試験頻出:複数VPC構成やハイブリッド構成では、プライベートDNSを無効にして手動ホストゾーン+PHZ関連付けで柔軟に制御するパターンが問われる。

🏢 1. たとえ話:ビル内線電話システム

VPCエンドポイントのDNS動作を、オフィスビルの内線電話システムに例えて理解しましょう。AWSサービスへのアクセスは「外部の取引先に電話をかける」ようなものです。

💡 基本イメージ:ビル(VPC)の中から、外部の銀行(S3)や郵便局(SQS)などに電話をかけたいとします。普通なら公衆電話回線(インターネット)を使いますが、VPCエンドポイントはビル内に専用の直通回線窓口を設置して、公衆回線を使わずに直接つなげる仕組みです。

AWS概念 ビル内線電話のたとえ 解説
VPC 🏢オフィスビル あなたの会社のネットワーク空間そのもの
EC2インスタンス 👤ビル内の社員 電話をかける人(サービスを利用する側)
AWSサービス
(S3, SQS等)
🏧外部の取引先
(銀行・郵便局)
電話をかける相手先
VPCエンドポイント
(Interface型)
📞ビル内の直通電話
(専用窓口)
公衆回線を使わず直接つながる内線
プライベートDNS
(有効時)
📗管理者が自動更新する
内線電話帳
「銀行の代表番号→内線番号」を自動登録
プライベートDNS
(無効時)
📝自分で作る
内線電話帳
手動で番号対応を設定、複数ビルで共有可能
Route 53
プライベート
ホストゾーン
📚内線電話帳の
本体
名前→番号の変換辞書(DNSレコード集)
ENI
(プライベートIP)
📱直通電話の
内線番号
実際に接続するための番号(IPアドレス)
💡

ポイント:プライベートDNS有効は「ビル管理者が電話帳を自動管理」、無効は「テナント自身が電話帳を手動管理」と覚えましょう。自動は便利ですが、そのビル内でしか使えないという制限があります。

🗺 2. アーキテクチャ図解

2-1. プライベートDNS有効時のDNS解決フロー

プライベートDNSが有効な場合、AWSが自動でRoute 53プライベートホストゾーン(PHZ)を作成し、標準エンドポイント名をENIのプライベートIPに解決します。

プライベートDNS有効時 ― 自動内線電話帳モード ☁ VPC(オフィスビル) ☁ AWSサービス ✅ AWSが自動作成・管理 EC2インスタンス (ビル内の社員) sqs.us-east-1 .amazonaws.com Route 53 プライベートHZ (自動内線電話帳) VPCエンドポイント ENI (直通内線電話) Amazon SQS (外部の取引先) 🏧 AWSサービス 1 DNS問合せ 2 プライベートIP応答 3 プライベートIPで直接接続 4 AWSバックボーン ⚠ 重要な制限:この自動作成PHZは、VPCエンドポイントが存在するVPC内でのみ機能 (他VPC・オンプレからは、この自動PHZを参照できない = 内線電話帳はビル内限定)

2-2. プライベートDNS無効時のDNS解決フロー

プライベートDNSが無効の場合、AWS管理のPHZは作成されません。代わりに手動でPHZを作成し、複数のVPCに関連付けることで柔軟なDNS構成を実現できます。

プライベートDNS無効時 ― 手動内線電話帳モード(複数VPC対応) VPC-A(ビルA) VPC-B(ビルB) 📝 手動作成PHZ(共有電話帳) VPC-A内 AWSサービス EC2(VPC-A) ビルAの社員 EC2(VPC-B) ビルBの社員 手動作成 Route 53 PHZ (手動内線電話帳) PHZ関連付け VPC-Aに関連付け VPC-Bに関連付け VPCエンドポイント ENI (直通内線電話) Amazon SQS AWSサービス 名前解決 VPCピアリング / TGW接続 ✅ 手動モードのメリット 1. PHZを複数VPCに関連付け可能(ビルBからも同じ電話帳を参照) 2. オンプレミスのDNS転送ルールとも統合可能 3. エンドポイント固有のDNS名で直接アクセスも可能 4. 条件付きDNSフォワーディングとの組合せが柔軟 vpce-xxx.sqs.us-east-1.vpce.amazonaws.com で直接指定も可

⚖ 3. プライベートDNS 有効 vs 無効 徹底比較

2つのモードの違いを整理します。それぞれの特性を理解して、要件に合った選択をしましょう。

📗

プライベートDNS 有効

自動内線電話帳モード
  • PHZ自動作成:AWSが標準サービスエンドポイント名用のプライベートホストゾーンを自動で作成・管理
  • 透過的解決sqs.us-east-1.amazonaws.com のような標準名がそのままプライベートIPに解決される
  • コード変更不要:既存のAWS SDKやCLI設定を一切変更せずに利用可能
  • VPC限定:自動PHZはエンドポイント所在VPC内でのみ機能。他VPCからは参照不可
  • DNS前提条件:VPCのenableDnsSupportenableDnsHostnamesがtrueである必要がある
📝

プライベートDNS 無効

手動内線電話帳モード
  • 🔧 PHZ手動作成:利用者自身でRoute 53プライベートホストゾーンを作成し、エイリアスレコードを設定
  • 🔧 複数VPC共有:手動PHZを複数のVPCに関連付けて、一元的にDNS解決を管理可能
  • 🔧 エンドポイント固有DNS名vpce-xxx.sqs.us-east-1.vpce.amazonaws.com で直接アクセス可能
  • ハイブリッド対応:オンプレミスDNSからの条件付きフォワーディングと柔軟に連携
  • 完全制御:DNSレコードのTTL、ルーティングポリシー等を細かくカスタマイズ可能
比較項目 有効(自動モード) 無効(手動モード)
Route 53 PHZ AWSが自動作成・管理 利用者が手動で作成
DNS名 標準エンドポイント名で解決 エンドポイント固有DNS名 or 手動設定
適用範囲 同一VPC内のみ 複数VPC・オンプレミスに拡張可能
運用コスト 低い(自動管理) やや高い(手動設定・維持)
柔軟性 限定的 高い(カスタムDNS設定可能)
推奨ユースケース 単一VPC・シンプル構成 マルチVPC・ハイブリッド構成
前提条件 enableDnsSupport=true
enableDnsHostnames=true
特になし

🔄 4. DNS解決フロー詳細

4-1. プライベートDNS有効時のフロー

1

EC2からDNSクエリ発行

EC2インスタンスが sqs.us-east-1.amazonaws.com を解決しようとする。たとえ話では「社員が銀行の代表番号を電話帳で調べる」。

2

VPC DNSリゾルバーがPHZを参照

VPCのDNSリゾルバー(AmazonProvidedDNS)が、AWSが自動作成したプライベートホストゾーンを参照。パブリックDNSではなくPHZが優先される

3

プライベートIPアドレスが返却

VPCエンドポイントのENIに割り当てられたプライベートIPアドレス(例:10.0.1.50)が返される。「電話帳で内線番号が見つかる」。

4

プライベート経由でAWSサービスに到達

EC2はプライベートIPを使ってVPCエンドポイント経由でSQSに接続。トラフィックはインターネットを経由せず、AWSバックボーンネットワークのみを通る。

4-2. プライベートDNS無効時のフロー

1

選択肢A:エンドポイント固有DNS名を使用

vpce-0abc123.sqs.us-east-1.vpce.amazonaws.com を直接指定。SDK/CLI設定で --endpoint-url パラメータを変更する必要あり。

2

選択肢B:手動PHZで標準名を上書き

Route 53で sqs.us-east-1.amazonaws.com のプライベートホストゾーンを手動作成し、エイリアスレコードでVPCエンドポイントのDNS名を指定。複数VPCに関連付け可能。

3

選択肢C:Route 53 Resolverルールでハイブリッド構成

オンプレミスDNSサーバーからRoute 53 Resolverインバウンドエンドポイントに条件付きフォワーディングを設定し、オンプレからもVPCエンドポイント経由でAWSサービスにアクセス。

🌐 5. 複数VPC・ハイブリッド構成での使い方

実務では複数VPCやオンプレミス連携のケースが多く、プライベートDNSの有効/無効の選択が重要になります。

🏢 単一VPC構成

プライベートDNS有効が最適。自動PHZで設定不要、コード変更なしで即利用可能。最もシンプルな構成。

🏙 マルチVPC構成

プライベートDNS無効+手動PHZ推奨。Hub VPCにエンドポイントを集約し、手動PHZを全Spoke VPCに関連付けることで一元管理。

🏗 ハイブリッド構成

プライベートDNS無効+Route 53 Resolver推奨。オンプレDNSからResolverインバウンドエンドポイントへ転送し、手動PHZで名前解決。

よくある落とし穴:プライベートDNSを有効にしたまま、他VPCからTransit Gatewayで接続しても、自動作成PHZは他VPCに関連付けられないため、名前解決が失敗します。マルチVPC構成では必ず手動PHZ方式に切り替えましょう。

5-1. Hub-Spoke構成の推奨アーキテクチャ

Hub-Spoke構成 ― プライベートDNS無効 + 手動PHZ方式 Spoke VPC-A EC2(App-A) ワークロード Spoke VPC-B EC2(App-B) ワークロード Transit Gateway ビル間連絡通路 Hub VPC(中央管理ビル) VPCエンドポイント(ENI) プライベートDNS: 無効 手動Route 53 PHZ 全VPCに関連付け済み Route 53 Resolver オンプレDNSとの中継役 AWSサービス群 S3, SQS, KMS等 オンプレミス Direct Connect / VPN DNS転送 PHZ関連付け PHZ関連付け

🎯 6. 戦略的アーキテクチャ設計 ― 4つの柱

VPCエンドポイントのDNS動作を最大限に活かすために、以下の4つの戦略を柱としたアーキテクチャ設計が重要です。ビル内線電話のたとえでいえば、「本社・支社すべてのビルで、同じ電話帳を使い、同じ番号で取引先につながり、しかもすべて内線のまま」という理想の通信環境を実現する方法です。

🎯

戦略1:プライベートDNSの戦略的無効化

制限を外して柔軟性を手に入れる
  • 🔑 あえて自動を使わない:プライベートDNSを意図的に無効にすることで、AWS管理の「VPC限定PHZ」という制約から解放される
  • 📈 スケーラブルな構成:手動PHZは任意の数のVPCに関連付け可能。VPCが増えても同じ手動PHZに追加するだけでスケールする
  • 💡 たとえ話:ビル管理者の電話帳(1棟限定)を使わず、自社で電話帳を作り、全ビルに配布するイメージ
🌐

戦略2:統一DNS名前空間の構築

全VPCで同じDNS名を透過的に使用
  • 🔗 同一DNS名を維持:手動PHZにより、すべてのVPCから sqs.us-east-1.amazonaws.com という標準DNS名でVPCエンドポイントにアクセス
  • 💻 コード変更ゼロ:AWS SDKやCLIのエンドポイントURLを変更する必要がなく、アプリケーションコードは一切修正不要
  • 💡 たとえ話:どのビルからでも「銀行」と言えば同じ内線番号でつながる。ビルごとに番号を覚え直す必要なし
🔒

戦略3:プライベート完全通信

全通信をAWS内部ネットワークに閉じ込める
  • 🛡 セキュリティ最大化:VPCエンドポイント経由ですべての通信がAWS内部ネットワークで完結。インターネットに一切露出しない
  • 🚀 パフォーマンス+コスト:NAT Gatewayのデータ処理コストが不要になり、AWS内部の低遅延ネットワークを活用可能
  • 💡 たとえ話:すべての通話が内線回線で完結。公衆電話回線(インターネット)は使わないので、盗聴リスクも通話料もかからない
🔌

戦略4:既存インフラとの統合

オンプレDNSとの双方向シームレス連携
  • 🔄 Route 53 Resolver:インバウンド/アウトバウンドエンドポイントで、オンプレミスDNSとのシームレスな双方向DNS解決を実現
  • 🛠 TGW Hub & Spoke:Transit Gatewayのハブ&スポーク構成で、ネットワークルーティングも効率的に一元管理
  • 💡 たとえ話:自社ビルの内線システムを旧本社ビル(オンプレ)の電話交換機と接続。どちらからでも内線でつながる

6-1. 4つの戦略を統合した完全アーキテクチャ

4つの戦略がどのように組み合わさって、スケーラブルなプライベート通信基盤を構成するかを図解します。

4つの戦略を統合した完全アーキテクチャ 🎯 戦略1:プライベートDNS無効 → 手動PHZで柔軟制御 🏗 オンプレミス オンプレDNS 既存DNS基盤 アプリサーバー オンプレワークロード Direct Connect / VPN接続 🔌 戦略4:既存インフラ統合 ☁ Hub VPC(中央管理ビル) Route 53 Resolver Inbound / Outbound エンドポイント 📚 手動Route 53 PHZ sqs.us-east-1.amazonaws.com → ENI IP 🌐 戦略2:全VPCで同じDNS名を透過的に使用 📞 VPCエンドポイント (ENI) プライベートDNS: 無効 | 10.0.1.50 🛠 Transit Gateway(Hub & Spoke) Spoke VPC-A EC2 (App-A) ワークロード sqs.us-east-1.amazonaws.com Spoke VPC-B EC2 (App-B) ワークロード sqs.us-east-1.amazonaws.com 追加Spoke VPC-N... PHZ関連付けで即追加可能 → スケーラブルに拡張 AWSサービス群 SQS / S3 / KMS SNS / DynamoDB等 🔒 戦略3:完全プライベート通信 DNS転送 DX/VPN 解決 AWSバックボーン (完全プライベート) PHZ関連付け PHZ関連付け 💡 4戦略の統合効果 全VPC+オンプレから、同じDNS名で、コード変更なしに、 すべての通信をAWS内部ネットワーク経由でプライベートに完結。 → セキュリティ・パフォーマンス・コスト・スケーラビリティを同時に最適化

6-2. 各戦略の詳細と実装ポイント

🎯 戦略1:戦略的無効化の実装

VPCエンドポイント作成時に --no-private-dns-enabled を指定。既存エンドポイントは modify-vpc-endpoint で変更可能。無効化後は必ず手動PHZを作成し、エイリアスレコードでENIのDNS名を設定する。

🌐 戦略2:統一DNS名前空間の構築

Route 53で sqs.us-east-1.amazonaws.com のPHZを作成し、Aレコード(エイリアス)でVPCエンドポイントのDNSエントリを指定。このPHZをHub VPC+全Spoke VPCに associate-vpc-with-hosted-zone で関連付ける。

🔒 戦略3:完全プライベート通信

VPCエンドポイント経由でAWSサービスに接続すると、通信はAWSバックボーンネットワークのみを通過。NAT GatewayやIGWが不要になり、データ処理料金の削減+遅延改善+セキュリティ向上を同時に達成する。

🔌 戦略4:オンプレ統合の実装

Route 53 Resolverインバウンドエンドポイントを作成し、オンプレDNSサーバーに条件付きフォワーダー(amazonaws.com → Resolver IP)を設定。Direct Connect/VPN経由でオンプレからもプライベートアクセスが可能になる。

💡

なぜ4つを同時に実装するのか?:いずれか1つだけでは不完全です。戦略1(無効化)で柔軟性を確保し、戦略2(統一DNS)でアプリケーション透過性を維持し、戦略3(完全プライベート通信)でセキュリティ・コストを最適化し、戦略4(オンプレ統合)でハイブリッド環境にも対応する。この4つが揃って初めて、エンタープライズレベルのプライベート通信基盤が完成します。

💻 7. 設定コード例

7-1. VPCエンドポイント作成(プライベートDNS有効/無効)

# プライベートDNS有効(デフォルト)でVPCエンドポイント作成
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-0abc123def456 \
  --service-name com.amazonaws.us-east-1.sqs \
  --vpc-endpoint-type Interface \
  --subnet-ids subnet-aaa111 subnet-bbb222 \
  --security-group-ids sg-0123456789 \
  --private-dns-enabled

# プライベートDNS無効で作成(マルチVPC構成向け)
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-0abc123def456 \
  --service-name com.amazonaws.us-east-1.sqs \
  --vpc-endpoint-type Interface \
  --subnet-ids subnet-aaa111 subnet-bbb222 \
  --security-group-ids sg-0123456789 \
  --no-private-dns-enabled
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  SQSEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      VpcId: !Ref MyVPC
      ServiceName: !Sub com.amazonaws.\${AWS::Region}.sqs
      VpcEndpointType: Interface
      SubnetIds:
        - !Ref PrivateSubnet1
        - !Ref PrivateSubnet2
      SecurityGroupIds:
        - !Ref EndpointSG
      # trueで有効、falseで無効
      PrivateDnsEnabled: false
resource "aws_vpc_endpoint" "sqs" {
  vpc_id             = aws_vpc.main.id
  service_name       = "com.amazonaws.us-east-1.sqs"
  vpc_endpoint_type  = "Interface"
  subnet_ids         = [
    aws_subnet.private_a.id,
    aws_subnet.private_b.id
  ]
  security_group_ids = [aws_security_group.endpoint.id]

  # マルチVPC構成ではfalseに設定
  private_dns_enabled = false
}

7-2. 手動PHZ作成+複数VPC関連付け

# 1. 手動でプライベートホストゾーン作成
aws route53 create-hosted-zone \
  --name sqs.us-east-1.amazonaws.com \
  --vpc VPCRegion=us-east-1,VPCId=vpc-hub123 \
  --caller-reference sqs-phz-\$(date +%s) \
  --hosted-zone-config PrivateZone=true

# 2. Spoke VPCにも関連付け
aws route53 associate-vpc-with-hosted-zone \
  --hosted-zone-id Z0123456ABCDEF \
  --vpc VPCRegion=us-east-1,VPCId=vpc-spoke-a

aws route53 associate-vpc-with-hosted-zone \
  --hosted-zone-id Z0123456ABCDEF \
  --vpc VPCRegion=us-east-1,VPCId=vpc-spoke-b

# 3. エイリアスレコード作成
aws route53 change-resource-record-sets \
  --hosted-zone-id Z0123456ABCDEF \
  --change-batch '{
    "Changes": [{
      "Action": "CREATE",
      "ResourceRecordSet": {
        "Name": "sqs.us-east-1.amazonaws.com",
        "Type": "A",
        "AliasTarget": {
          "HostedZoneId": "Z1HUB2JCJCWAQQ",
          "DNSName": "vpce-0abc.sqs.us-east-1.vpce.amazonaws.com",
          "EvaluateTargetHealth": true
        }
      }
    }]
  }'
Resources:
  SQSPrivateHostedZone:
    Type: AWS::Route53::HostedZone
    Properties:
      Name: sqs.us-east-1.amazonaws.com
      VPCs:
        - VPCId: !Ref HubVPC
          VPCRegion: !Ref AWS::Region
        - VPCId: !Ref SpokeVPCA
          VPCRegion: !Ref AWS::Region

  SQSAliasRecord:
    Type: AWS::Route53::RecordSet
    Properties:
      HostedZoneId: !Ref SQSPrivateHostedZone
      Name: sqs.us-east-1.amazonaws.com
      Type: A
      AliasTarget:
        HostedZoneId: !GetAtt SQSEndpoint.DnsEntries.0.HostedZoneId
        DNSName: !GetAtt SQSEndpoint.DnsEntries.0.DnsName
        EvaluateTargetHealth: true
resource "aws_route53_zone" "sqs_phz" {
  name = "sqs.us-east-1.amazonaws.com"

  # Hub VPCに関連付け
  vpc {
    vpc_id = aws_vpc.hub.id
  }
}

# Spoke VPCにも関連付け
resource "aws_route53_zone_association" "spoke_a" {
  zone_id = aws_route53_zone.sqs_phz.id
  vpc_id  = aws_vpc.spoke_a.id
}

# エイリアスレコード作成
resource "aws_route53_record" "sqs_alias" {
  zone_id = aws_route53_zone.sqs_phz.id
  name    = "sqs.us-east-1.amazonaws.com"
  type    = "A"

  alias {
    name    = aws_vpc_endpoint.sqs.dns_entry[0].dns_name
    zone_id = aws_vpc_endpoint.sqs.dns_entry[0].hosted_zone_id
    evaluate_target_health = true
  }
}

✅ 8. ベストプラクティス vs アンチパターン

ベストプラクティス

  • 🟢 単一VPCではプライベートDNS有効をデフォルトに。シンプルさを優先
  • 🟢 マルチVPCではHub VPCにエンドポイントを集約し、手動PHZ+全VPC関連付けで一元管理
  • 🟢 ハイブリッド構成ではRoute 53 Resolverを活用し、オンプレDNSとの双方向転送を設計
  • 🟢 エンドポイントのセキュリティグループでHTTPS(443)のみ許可し、最小権限を維持
  • 🟢 enableDnsSupportenableDnsHostnamesを事前にtrueに設定確認
  • 🟢 AZ障害耐性のため、複数AZのサブネットにENIを配置

アンチパターン

  • 🔴 マルチVPC構成で自動PHZ依存:他VPCから名前解決できず通信失敗
  • 🔴 セキュリティグループ設定漏れ:VPCエンドポイントのENIへのインバウンド443を忘れると接続不可
  • 🔴 DNS設定を確認せずエンドポイント作成:enableDnsSupport=falseだとDNS解決自体が失敗
  • 🔴 単一AZのみにENI配置:AZ障害時に全通信が遮断されるリスク
  • 🔴 手動PHZのレコード更新忘れ:エンドポイント再作成時にDNSが古いままになる
  • 🔴 エンドポイントポリシー未設定:意図しないリソースへのアクセスを許可してしまう

🔧 9. トラブルシューティング

⚠ エンドポイント作成時に「Private DNS requires enableDnsSupport and enableDnsHostnames」エラー

原因:VPCのDNS設定が無効になっている

対処法:VPCの enableDnsSupportenableDnsHostnames を共にtrueに設定してから再実行。
aws ec2 modify-vpc-attribute --vpc-id vpc-xxx --enable-dns-support '{"Value":true}'
aws ec2 modify-vpc-attribute --vpc-id vpc-xxx --enable-dns-hostnames '{"Value":true}'

⚠ 他VPCからエンドポイント経由でAWSサービスに接続できない

原因:プライベートDNS有効の自動PHZは同一VPC内限定。他VPCからは名前解決がパブリックIPに向かう。

対処法:プライベートDNSを無効に変更し、手動PHZを作成して全関連VPCに関連付け。もしくはエンドポイント固有DNS名を直接使用。

⚠ DNS解決はできるが接続がタイムアウトする

原因:VPCエンドポイントのENIに付与されたセキュリティグループのインバウンドルールが不足

対処法:セキュリティグループで、ソースIPまたはソースSGからTCP 443(HTTPS)のインバウンドを許可。
aws ec2 authorize-security-group-ingress --group-id sg-xxx --protocol tcp --port 443 --source-group sg-app

⚠ nslookupで標準エンドポイント名がパブリックIPを返す

原因:プライベートDNS有効にしていない、またはPHZの関連付けが正しくない

対処法aws ec2 describe-vpc-endpointsPrivateDnsEnabled の状態を確認。手動PHZ使用時はRoute 53でレコードの存在とVPC関連付けを確認。

⚠ オンプレミスからVPCエンドポイント経由でAWSサービスにアクセスできない

原因:オンプレDNSからRoute 53 Resolverへの条件付きフォワーディングが未設定

対処法:Route 53 Resolverインバウンドエンドポイントを作成し、オンプレDNSサーバーで対象ドメイン(例:sqs.us-east-1.amazonaws.com)をResolverのIPに転送する条件付きフォワーディングルールを追加。

🎓 10. 試験対策ポイント(ANS-C01 / SAP-C02)

📚 ANS-C01(ネットワーク専門)頻出ポイント

  • 🔸 「複数VPCから共通のVPCエンドポイントを利用する」→ プライベートDNS無効+手動PHZ+全VPCへのPHZ関連付けが正解パターン
  • 🔸 「オンプレミスからVPCエンドポイント経由でS3/DynamoDB以外のAWSサービスにアクセスする」→ Route 53 Resolverインバウンドエンドポイント+条件付きフォワーディング
  • 🔸 「プライベートDNS有効にできない(VPCのDNS設定がfalse)」→ enableDnsSupport / enableDnsHostnames の前提条件を問う問題
  • 🔸 「Hub-Spoke構成のエンドポイント集約」→ Transit Gatewayと組み合わせたHub VPCへのエンドポイント集約パターン

📚 SAP-C02(ソリューションアーキテクト プロ)頻出ポイント

  • 🔹 「最小限の運用負荷でプライベート接続を実現」→ 単一VPCならプライベートDNS有効(自動管理)、マルチVPCなら手動PHZ(運用コストとトレードオフを考慮)
  • 🔹 「セキュリティ要件:インターネットを一切経由しない」→ VPCエンドポイント+NAT Gateway/IGW不要の構成
  • 🔹 「コスト最適化」→ 各VPCに個別エンドポイントを作るよりHub集約+TGWの方がエンドポイント数を削減できる(ただしTGWコストとのトレードオフ)

🚨 試験の引っかけパターン:「プライベートDNS有効にすれば全VPCで使える」という選択肢は不正解。自動PHZの適用範囲はエンドポイント所在VPCのみ。複数VPC構成では手動PHZ方式が必要。

❓ 11. よくある質問(FAQ)

はい、既存のVPCエンドポイントのプライベートDNS設定は変更可能です。aws ec2 modify-vpc-endpoint --vpc-endpoint-id vpce-xxx --private-dns-enabled(有効化)または --no-private-dns-enabled(無効化)で切り替えられます。ただし、切り替え時にDNSキャッシュのTTL期間中は古い解決結果が残る場合があるため注意してください。

Gateway型エンドポイントにはプライベートDNS設定はありません。Gateway型はルートテーブルにプレフィックスリストを追加する方式で、DNS解決の仕組みが根本的に異なります。S3やDynamoDBでInterface型エンドポイントを使いたい場合は、別途Interface型として作成し、プライベートDNS設定を行います。

Route 53の仕様として、VPCに関連付けられたプライベートホストゾーンはパブリックDNSよりも優先されます。そのため、プライベートDNS有効時の自動PHZも、手動作成PHZも、パブリックDNS(インターネット上のDNSレコード)より先に参照されます。同一ドメインで自動PHZと手動PHZが競合する場合、動作が不安定になるため避けるべきです。

Interface型VPCエンドポイントを作成すると、標準のサービスエンドポイント名とは別に、vpce-0abc123.sqs.us-east-1.vpce.amazonaws.com のようなエンドポイント固有のDNS名が発行されます。これはプライベートDNSの有効/無効に関係なく常に利用可能で、直接このDNS名をSDKの--endpoint-urlに指定することもできます。

はい、Route 53プライベートホストゾーンは異なるリージョンのVPCにも関連付け可能です。ただし、VPCエンドポイント自体はリージョン内リソースのため、クロスリージョンのDNS解決はできても、実際のトラフィックはエンドポイントが存在するリージョン内のVPCからのみ流せます。リージョン間のルーティング設計に注意してください。

📖 12. 用語集

Interface VPC Endpoint
ENI(Elastic Network Interface)を使ってVPC内にプライベートIPアドレスを持つAWSサービスへの接続口。PrivateLinkベース。
プライベートホストゾーン(PHZ)
Route 53で作成するVPC内限定のDNSゾーン。特定VPCからのみDNSクエリに応答する。
ENI(Elastic Network Interface)
VPC内の仮想ネットワークカード。プライベートIPアドレスが割り当てられ、セキュリティグループが適用される。
AWS PrivateLink
AWSネットワーク内でサービス間のプライベート接続を提供する技術。Interface VPCエンドポイントの基盤。
Route 53 Resolver
VPC DNSリゾルバーの拡張機能。インバウンド/アウトバウンドエンドポイントによるオンプレDNSとの統合を実現。
エンドポイント固有DNS名
vpce-xxx.service.region.vpce.amazonaws.com 形式のDNS名。PHZ設定に依存せず直接使用可能。

📋 13. チートシート

📗 プライベートDNS有効

自動PHZ作成 → 標準名でプライベートIP解決 → 同一VPC限定 → コード変更不要 → 単一VPC向け

📝 プライベートDNS無効

手動PHZ or 固有DNS名 → 複数VPC共有可 → ハイブリッド対応 → 柔軟なDNS制御 → マルチVPC向け

🚨 前提条件チェック

enableDnsSupport = true
enableDnsHostnames = true
SG: TCP 443 インバウンド許可
サブネット: 複数AZ配置推奨

🎓 試験キーワード

「複数VPCで共有」→ 手動PHZ
「オンプレから」→ Resolver
「コード変更なし」→ 有効
「Hub集約」→ TGW + 無効

🎯 4戦略の覚え方

① 戦略的無効化 → 制限解除
② 統一DNS名前空間 → コード変更ゼロ
③ 完全プライベート通信 → 安全+低コスト
④ 既存インフラ統合 → Resolver + TGW

🔌 ハイブリッド構成の公式

DNS無効 + 手動PHZ + Resolver Inbound + DX/VPN + TGW Hub&Spoke = オンプレ+全VPCからプライベートアクセス完成

Created by SSuzuki1063

AWS SAP Learning Resources