仕組み | 集中型アーキテクチャ | 構築手順 | DNSとルーティング | セキュリティと費用 | 長所・短所と選定
🚀 結論:共有すべきEndpointとは
複数VPCでAWSサービスのEndpointを共有する場合、企業環境で有力な構成はCentral Endpoint VPC + Interface VPC Endpoint + Transit Gateway + Route 53 Profilesです。VPCが少なければ、Transit GatewayをVPC Peeringに置き換えられます。
- 🎯 Interface Endpoint:集中配置に向いています。SSM、KMS、ECR、STS、Secrets Manager、CloudWatch、SNS、SQSなどを専用Endpoint VPCに置き、他のVPCからプライベートに利用できます。
- 🪣 Gateway Endpoint:S3とDynamoDBのGateway EndpointはVPCをまたいで利用できません。追加のEndpoint利用料がないため、各アプリケーションVPCに個別作成します。
- 🌐 ネットワーク接続:2~3個のVPCならPeeringで十分な場合が多く、VPCが増えるほどTransit Gatewayの方が管理しやすくなります。
- 🧭 DNS:新規環境ではRoute 53 Profilesを使い、集中型Interface EndpointのPrivate DNSを各VPCへ展開します。
- 🌏 リージョン境界:本番環境では原則としてリージョンごとにEndpoint Hubを設け、リージョン間の遅延、転送料、障害の連鎖を避けます。
🧩 「Endpointを共有する」の本当の意味
Endpointリソースそのものを別VPCへ共有するわけではありません。Interface EndpointはShared Endpoint VPC内に残り、選択したサブネットにプライベートIP付きのENIを作成します。他のVPCはTransit GatewayまたはVPC Peering経由で、そのENIへルーティングします。
- VPC-A、VPC-B、VPC-Cをそれぞれ
10.1.0.0/16、10.2.0.0/16、10.3.0.0/16、Endpoint VPCを10.100.0.0/16とします。 - 20個のVPCに15種類のInterface Endpointを2つのAZで配置すると、20 × 15 × 2 = 600個のEndpoint ENIが必要です。
- 集中化すれば、同じサービスをEndpoint VPCの2つのAZにだけ配置でき、固定リソース、ポリシー、管理対象を大幅に減らせます。
- Interface EndpointにはAZごとの時間料金とデータ処理料金がかかるため、VPC数が増えるほど重複配置の固定費が目立ちます。
🏗️ 推奨する集中型アーキテクチャ
🗺️ 基本トポロジー
AWS SERVICES
▲
│
PrivateLink
│
┌──────────────────────────┐
│ NETWORK ACCOUNT │
│ Central Endpoint VPC │
│ │
│ AZ-A AZ-C │
│ VPCE ENI VPCE ENI│
│ │
│ SSM / KMS / STS / ECR │
│ Secrets / CloudWatch │
│ SNS / SQS / EC2 API │
│ Route 53 Profile │
└────────────┬─────────────┘
│
Transit Gateway
┌──────────┼───────────┐
│ │ │
PROD DEV TEST
│ │ │
VPC-A VPC-B VPC-C
│ │ │
S3 Gateway S3 Gateway S3 Gateway
DDB Gateway DDB Gateway DDB Gateway
🧰 中核となる4つのサービス
- AWS PrivateLink / Interface VPC Endpoint:アプリケーションVPCからリージョナルAWSサービスへのプライベート接続を提供します。
- AWS Transit Gateway:Endpoint VPCと複数の業務VPCを接続し、TGW Route Tableで到達範囲を制御します。
- Route 53 Profiles:Interface EndpointのPrivate DNSを一元管理し、複数VPCに関連付けます。
- AWS RAM:Transit GatewayとRoute 53 Profileを複数AWSアカウント間で共有します。
🏢 オンプレミス環境も接続する場合
オンプレミスからVPNまたはDirect ConnectでAWSへ接続する場合は、Route 53 Resolver Inbound Endpointを追加し、社内DNSからAWSサービス名をResolverへ転送します。VPCの「CIDR + 2」にあるResolverアドレスへ直接問い合わせる構成は避けます。
⚙️ 手順1:Endpoint VPCとネットワーク接続を作る
1️⃣ 専用Endpoint VPCを作成
- Network AccountまたはShared Services Accountに
Endpoint-VPCを作成します。ここでは10.100.0.0/16を使用します。 - 本番では最低2つのAZを使い、AZ-aに
10.100.10.0/24、AZ-cに10.100.20.0/24など、各AZにEndpoint Subnetを用意します。 - Interface Endpointは選択したEndpoint SubnetごとにENIを作成します。2AZ構成にすることでAZ障害の影響を抑えられます。
- 共有Endpointを任意のApplication VPCへ置くと、ネットワーク所有権や権限境界、障害対応が特定のワークロードに依存するため避けます。
2️⃣ Transit GatewayまたはVPC Peeringを構成
- 中央Transit Gatewayを作成し、Endpoint VPC、VPC-A、VPC-B、VPC-CのAttachmentを接続します。
- マルチアカウント環境ではAWS RAMでTGWを共有し、各業務アカウントがAttachmentを作成または承認します。
- 業務VPCが2~3個だけなら、それぞれをEndpoint VPCへ直接Peeringし、TGWのレイヤーと費用を省けます。
- Peeringには推移的ルーティングがありません。規模が大きくなると接続数とルート管理が膨らむため、TGWのHub-and-Spoke構成へ移行します。
🛣️ 手順2:双方向ルーティングを設定
3️⃣ 業務VPCのRoute Table
Endpointへ接続する各業務サブネットで、Endpoint VPCのCIDRをTGWへ向けます。VPC-Aの例:
Destination Target
10.1.0.0/16 local
10.100.0.0/16 tgw-xxxx
VPC-BとVPC-Cも10.100.0.0/16を同じTGWへ送ります。Peeringの場合は、対応するPeering ConnectionをTargetにします。
4️⃣ Endpoint VPCの戻りルート
Endpoint Subnetに関連付けたRoute Tableには、各業務VPCへの戻り経路が必要です。
10.100.0.0/16 local
10.1.0.0/16 tgw-xxxx
10.2.0.0/16 tgw-xxxx
10.3.0.0/16 tgw-xxxx
往路と復路の両方が必要です。往路だけ設定されていると、TCP SYNにSYN/ACKが返らず、最終的に接続タイムアウトになります。
5️⃣ TGW Route Table
- 業務VPC側のルートで
10.100.0.0/16をEndpoint VPC Attachmentへ送ります。 - Endpoint VPC側では、
10.1.0.0/16、10.2.0.0/16、10.3.0.0/16を各VPC Attachmentへ向けます。 - Route PropagationまたはStatic Routeで構成できます。厳密なセグメント分離が必要なら、複数のTGW Route Tableで伝播関係を明示します。
🔌 手順3:Interface Endpointを作成
6️⃣ Endpoint VPCにサービスEndpointを追加
- VPC → Endpoints → Create endpointを開き、東京リージョンのSystems Managerなら
com.amazonaws.ap-northeast-1.ssmを選びます。 - VPCは
Endpoint-VPC、Subnetはendpoint-subnet-aとendpoint-subnet-cを選択します。 - Route 53 Profilesを使う構成では、Private DNSをEnabledのままにします。SDKやCLIは標準サービス名を使いながらPrivateLinkのプライベートIPへ接続できます。
- 実際に必要なサービスだけを作成します。Interface EndpointごとにAZ時間料金とデータ処理料金が増えます。
📦 集中配置されることが多いEndpoint
- Systems Manager:SSM、SSM Messages、EC2 Messages。
- 基盤サービス:EC2 API、KMS、Secrets Manager、STS、Lambda、EventBridge。
- 監視とメッセージング:CloudWatch、CloudWatch Logs、SNS、SQS。
- コンテナと配信:ECR API、ECR DKR、ECS、CodeArtifact。
- アプリケーション接続:API Gatewayの
execute-apiなどPrivateLink対応サービス。
🔐 手順4:Security GroupとEndpoint Policy
7️⃣ Endpoint Security Group
- Endpoint ENI専用のSecurity Groupとして
sg-vpce-centralなどを作成します。 - InboundはHTTPS TCP 443を、必要な業務VPCのCIDR(
10.1.0.0/16、10.2.0.0/16、10.3.0.0/16など)からのみ許可します。 - 本番環境で
0.0.0.0/0を許可しないでください。組織、環境、機密度、専用Endpointなどに応じて送信元を絞ります。 - Security Groupはステートフルですが、インスタンスの送信ルール、NACL、中間アプライアンスでもTCP 443と戻り通信を許可する必要があります。
8️⃣ Endpoint Policy
- Endpoint Policyは、その入口を通じて誰がどのサービス操作を実行できるかを制御します。フルアクセスは疎通確認には便利ですが、本番の恒久設定には不向きです。
- KMS Endpointなら、許可するアカウント、IAM Role、KMS Keyを限定できます。他のサービスでも対応する条件キーとリソース制約を利用します。
- 最終的な認可はEndpoint Policy、IAM Policy、SCP、Resource Policy、Bucket Policy、Key Policyなどの組み合わせで決まります。
- 共有VPCが増えるほど最小権限Policyは複雑になり、Policy文書のサイズ上限にも注意が必要です。必要に応じて環境や信頼境界ごとにEndpointを分割します。
🌐 手順5:Route 53 ProfilesでDNSを一元化
IPレベルで疎通しても、アプリケーションがEndpointを使うとは限りません。通常はssm.ap-northeast-1.amazonaws.comのような標準名を呼び出すため、その名前をAWSサービスのパブリックIPではなくEndpoint ENIのプライベートIPへ解決させます。
- Route 53 → Profiles → Create Profileから、
central-vpce-profileなどのProfileを作成します。 - Route 53 ProfileにはPrivate Hosted Zone、Resolver Rule、DNS Firewall、Interface VPC Endpoint、Resolver Query Loggingをまとめて関連付けられます。
- ProfileのVPC endpoints画面でSSM、KMS、STS、ECR、Secrets Managerなどの中央Endpointを関連付けます。コンソールで一度に選択できる既存Endpointは10個までで、それ以上は複数回またはAPIで処理します。
- 続いてVPC-A、VPC-B、VPC-CをProfileへ関連付けます。1つのVPCが同時に関連付けられるProfileは1つだけなので、既存DNSリソースを先に整理します。
- 設定後、業務VPCの標準サービス名は
10.100.10.25や10.100.20.41といった中央VPCEのプライベートIPを返します。
🏢 マルチアカウントLanding ZoneでのDNS共有
🧭 アカウントの役割分担
AWS Organizations
Network Account
├ Endpoint VPC
├ Transit Gateway
└ Route 53 Profile
Production Account
├ VPC-A
└ VPC-B
Development Account
├ VPC-C
└ VPC-D
Security Account
└ VPC-E
- Network AccountからAWS RAMを使い、同一リージョンのProduction、Development、SecurityなどのアカウントへRoute 53 Profileを共有します。
- 各アカウントは自分のVPCを共有Profileへ関連付け、サービスとVPCごとにPrivate Hosted Zoneを作ることなく中央EndpointのDNSを再利用します。
- AWS Organizations、Control Tower、Landing Zoneに適した役割分担で、ネットワークチームがVPCE、DNS、TGW、ログを、アプリチームがコンピュートと業務リソースを管理します。
🔄 リクエストの全経路
① DNS解決
VPC-Aの10.1.10.50にあるEC2がSecrets Manager APIを呼ぶと、SDKはsecretsmanager.ap-northeast-1.amazonaws.comを検索します。Route 53 Resolverと関連付けたProfileが中央VPCEのプライベートIPを返します。
EC2 → Route 53 Resolver → Route 53 Profile
→ VPCE Private DNS → 10.100.10.25 / 10.100.20.25
② ネットワーク経路
10.1.10.50
│ HTTPS 443
▼
VPC-A Route Table
▼
Transit Gateway
▼
Endpoint VPC
▼
VPCE ENI 10.100.10.25
▼
AWS PrivateLink
▼
Secrets Manager
AWSサービスまでの経路はプライベートに保たれ、NAT GatewayやInternet Gatewayを必要としません。ただしネットワーク制御とID認可の両方を通過する必要があります。
🪣 Gateway Endpointを集中化できない理由
Interface EndpointとGateway Endpointは別の仕組みです。Gateway Endpointは主にS3とDynamoDB向けで、AWS PrivateLinkを使わず、その接続範囲をVPC外へ拡張できません。
- VPN、VPC Peering、Transit Gateway、Direct Connectの反対側にあるリソースは、Endpoint VPC内のS3またはDynamoDB Gateway Endpointを利用できません。
- VPC-A、VPC-B、VPC-CにS3とDynamoDB Gateway Endpointを個別作成し、各VPCのRoute Tableに関連付けます。
- Gateway Endpointには追加のEndpoint利用料がないため、集中化による固定費削減効果もありません。
- そのため企業環境では、Interface Endpointは集中型、Gateway Endpointは分散型が一般的です。
📦 ECR:見落としやすい依存関係
- ECS、EKS、EC2がECRからイメージをPullする場合、通常は
ecr.apiだけでなくecr.dkrも必要です。 - コンテナイメージのLayerはS3に保存されるため、2つのECR Interface EndpointがあってもPullに失敗することがあります。
- 一般的にはECR APIとECR DKRを中央配置し、各Application VPCにS3 Gateway Endpointを作成します。
- Pull障害ではDNS、2つのECR Endpoint、S3 Gateway Endpoint、ルート、Security Group、タスクまたはインスタンスのIAM権限を確認します。
🕰️ 従来方式:Private Hosted Zone
現在も利用できる構成
- 集中型Interface EndpointのPrivate DNSを無効にします。
ssm.ap-northeast-1.amazonaws.comなど、AWSサービス名に一致するRoute 53 Private Hosted Zoneを手動作成します。- VPCEを指すA Alias Recordを作成し、PHZをEndpoint VPCとすべての業務VPCへ関連付けます。
新規環境で優先されなくなった理由
- 30個のEndpointと100個のVPCがあると、手動のPHZ Associationは巨大な管理マトリクスになります。
- Route 53 Profilesなら中央VPCEを一度関連付け、同じ設定を多数のVPCへ適用できるため、Hosted Zone、Record、Associationの重複を減らせます。
- 既存環境や特殊なDNS要件では従来方式も有効ですが、新規構築ではRoute 53 Profilesを先に検討します。
🌏 マルチリージョンの考え方
- 技術的にはInter-Region TGW Peeringやリージョン間VPC Peeringを使い、シンガポールVPCから東京のEndpoint VPCへ接続できます。
- ただしリージョン間データ転送料と遅延が増え、AWSサービスEndpointの多くもリージョナルです。
- 本番では東京とシンガポールにそれぞれEndpoint HubとRoute 53 Profileを作る構成の方が堅牢です。
- リージョン分離により障害範囲を縮小し、DNS、ルーティング、サービス依存、コンプライアンス境界も明確になります。
💴 費用モデル:集中型が必ず安いとは限らない
集中型で発生する費用
- Transit Gateway Attachmentの時間料金。
- Transit Gatewayのデータ処理料金。
- 各AZに配置したInterface Endpointの時間料金。
- PrivateLinkのデータ処理料金、およびAZ間・リージョン間のデータ転送料。
費用を抑えやすい条件
VPC数と必要なEndpoint数が多く、VPCごとの通信量が比較的小さい環境ほど、集中化の効果が出やすくなります。50 VPC、20サービス、2 AZなら、分散型は2,000個のEndpoint ENI、集中型は約40個で済みますが、TGW費用も必ず加えて比較します。
大容量通信は個別に試算
1つのVPCから毎日数TBのS3通信が発生する場合、TGW経由でS3 Interface Endpointへ送る構成は割高になりがちです。ローカルのS3 Gateway Endpointが適しています。AWS料金はリージョンと時期で変わるため、最新のリージョン別料金を基に、すべて日本円へ換算して予算を比較します。
✅ 集中型Endpointの主なメリット
- 📉 リソース削減:多数のVPCで同じEndpoint ENIを重複配置せずに済みます。
- 🧰 一元運用:Endpoint Policy、Security Group、タグ、Private DNS、ログをNetwork Accountで管理できます。
- 🔐 共通セキュリティ基準:中央チームがVPCE、DNS、TGW、アクセス制御を管理し、アプリチームはEC2、ECS、EKS、Lambda、RDSへ集中できます。
- 🌐 NAT依存の削減:PrivateLink対応AWSサービスへの通信でNAT GatewayとパブリックAPI経路が不要になります。
- 🏢 マルチアカウントに適合:AWS Organizations、Control Tower、RAM、Landing Zoneの責任分担と相性が良い構成です。
⚠️ 集中型Endpointの主なデメリット
- 💥 障害範囲が広い:中央SSM Endpoint、DNS、Policyの障害が複数VPCへ同時に影響します。
- 📜 Policyが複雑:多数のアカウント、Role、リソースを1つのEndpointで扱うと最小権限Policyが膨らみ、文書サイズ上限にも達しやすくなります。
- 🧭 DNS経路が長い:Profile、TGW、中央VPCE、アカウント間関連付けなど、ローカル配置より構成要素が増えます。
- 💸 TGW費用が追加:Application VPC → TGW → VPCEの通信量が多いと、データ処理料金が大きくなります。
- 🔒 分離性が低下:Endpointの容量、Security Group、Policyを共有するため、監視、変更管理、セグメント分離がより重要です。
📊 集中型とVPCごとのEndpointを比較
| 比較項目 | Central Endpoint | VPCごとのEndpoint |
|---|---|---|
| Endpoint数と固定費 | 数が少なく、VPCが増えるほど固定費を抑えやすい | VPC数とサービス数に比例して増える |
| ネットワーク費用 | 通常はTGW Attachmentと処理料金が発生 | ローカルVPCEへの通信にTGWは不要 |
| DNSと運用 | DNS要素は多いが一元管理できる | 単一VPCでは簡単だが管理対象が分散する |
| 分離性と障害範囲 | 制御と容量を共有し、分離性が低く影響範囲が広い | 分離性が高く、通常は1つのVPCだけに影響 |
| Endpoint Policy | 一元化できるが複数アカウントで複雑 | 境界が明確で比較的シンプル |
| 適した環境 | 大規模・マルチアカウントLanding Zone | 小規模または分離性・通信量を重視する環境 |
🧭 VPC数に応じた選び方
1~3個のVPC
- 各VPCへの個別配置が最も単純で、分離性にも優れます。
- 数を減らしたい場合はPeering + Route 53 Profile + 小規模Central Endpoint VPCを使います。
- 少数のEndpoint共有だけを目的にTransit Gatewayを導入する必要は通常ありません。
5~20個のVPC
- Endpoint VPC + TGW + Route 53 Profilesを本格的に検討します。
- 重複Endpointの固定費、TGW費用、実トラフィック量を同じ費用モデルで比較します。
- 大容量通信や強い分離が必要なワークロードだけ個別Endpointを残すハイブリッド構成も有効です。
20~数百個のVPC
- Network AccountにTGWまたはCloud WAN、Endpoint VPC、Route 53 Profiles、Resolver、Network Firewall、DNS Firewallを集約するのが一般的です。
- IaC、標準タグ、ログ、監視、変更管理でEndpointとアカウント関連付けを管理します。
- 全ワークロードが1つの中央スタックへ依存しないよう、リージョン、環境、信頼境界で分割します。
🏁 推奨する最終構成
- 🔌 Interface Endpoint:専用Endpoint VPCへ集中配置。
- 🪣 S3 / DynamoDB Gateway Endpoint:各業務VPCに個別作成。
- 🛣️ ネットワーク:少数VPCはPeering、中~大規模はTransit Gateway。
- 🌐 DNS:新規環境はRoute 53 Profiles、必要な既存環境のみ従来PHZを維持。
- 🏢 マルチアカウント:Network Accountで一元管理し、AWS RAMでTGWとProfileを共有。
- 🌏 マルチリージョン:リージョンをまたいで集約せず、リージョンごとにEndpoint Hubを構築。
- 🔐 セキュリティ:Endpoint SG、Endpoint Policy、IAM、SCP、Resource Policyを組み合わせる。
- 💴 費用:サービス数、VPC数、AZ数、通信量を使い、総保有コストを日本円で比較。
🛠️ 接続できないときの確認順序
- DNS:
dig ssm.ap-northeast-1.amazonaws.comを実行し、パブリックIPではなく10.100.x.xのようなVPCEのプライベートIPが返ることを確認。 - Spoke VPC Route Table:Endpoint VPCのCIDRがTGWまたはPeeringへ向いているか確認。
- TGW Route Table:業務VPCからEndpoint VPCまでの往路と復路を確認。
- Endpoint VPC Route Table:Endpoint Subnetから各業務VPCへ戻れるか確認。
- VPCE Security Group:業務VPCのCIDRからTCP 443を許可しているか確認。
- NACL:Inbound、Outbound、エフェメラルポート範囲を確認。
- Endpoint Policy:Principal、Action、Resourceが拒否されていないか確認。
- IAM / Resource Policy / SCP:最後にID権限、リソースポリシー、組織レベル制御を確認。
「名前解決 → ルーティング → ネットワーク制御 → 認可」の順に確認すると、コンソールを手当たり次第に調べるより早く原因を特定できます。