VPCエンドポイントはどこから通信できる?
今回はVPCエンドポイントでつなげたサービスにどこからまで接続することができるか確認します。
なお、VPCエンドポイント自体については以下の公式ドキュメントを確認していただければと思います。
https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpc-endpoints.html
実はVPCエンドポイントには3つタイプがあり、タイプによって繋げられる場所に違いがあります。
ゲートウェイ型とインターフェイス型とGateway Load Balancer型の3つのタイプがあります。
どこからつながるか、表にまとめました。インターフェイス型はここに書いているところ以外にも様々なところから繋がります。
どこからつながるか? | ゲートウェイ型 | インターフェイス型 | ゲートウェイロードバランサー型 |
---|---|---|---|
エンドポイントを作成したVPC | ○ | ○ | ○ |
エンドポイントを作成したVPCとピアリングしているVPC | ☓ | ○ | ○ |
エンドポイントを作成したVPCとDirect Connectで接続しているオンプレ拠点 | ☓ | ○ | ○ |
エンドポイントを作成したVPCとTransit Gatewayを介して接続している拠点 | ○ | ○ | ○ |
Contents
ゲートウェイ型
ゲートウェイ型は昔からあるもので、S3とDynamoDBにプライベートIPで接続したい声が多かった為用意されたものです。
NATゲートウェイを知っている方であれば、NATゲートウェイの先がS3やDynamoDBになっている版、といえば伝わるでしょうか?
S3やDynamoDBにつながるルーターができて、S3やDynamoDB宛のトラフィックはそのルータに流すようにするイメージです。
DynamoDBの場合の接続イメージ図をかいてみました。
VPCエンドポイントを作成したVPCからはDynamoDBに接続することができます。
VPCエンドポイントを作成したVPCとピアリングをしているVPCからはこのVPCエンドポイントを使ってDynamoDBに接続することはできません。VPCはTransit Gatewayを使わないかぎりトランジットを許可していないからです。
また、ゲートウェイ型の場合ルートテーブルにルートを追加する必要がある。
といっても、ルートテーブルへのルート追加はエンドポイント作成時に自動で行ってくれる。
下記図はS3のルートが追加された例。
pl-61a54008というS3のプレフィックスリストに記載されているIP宛の通信はゲートウェイ型のVPCエンドポイント経由となる。
プレフィックスリストについてはこちらの記事を。
ゲートウェイ型のメリット
- ゲートウェイ型のVPCエンドポイント自体の料金が無料(通信料金は別途かかる)
- インターフェイス型はAZ毎に約10ドル/月かかる
- アプリケーションへの改修が不要
- ネットワークレイヤでS3やDynamoDBへの経路が変わるだけなので、アプリケーション側で接続先FQDNなどを変更する必要がない
ゲートウェイ型のデメリット
- VPCエンドポイントを作成したVPCからしか接続できない
- S3やDynamoDBのグローバルIPへの通信がVPCエンドポイントの経路を通って通信されることになるので気持ち悪さが残る(プライベート感がない)
- 何らかの制約によってグローバルIP向けのパケットが許可されない場合は使えない
インターフェイス型
インターフェイス型はゲートウェイ型よりも新しく、50以上のAWSサービスがサポートしていることからVPCエンドポイントといえばこちらのほうが主流です。
https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpce-interface.html#vpce-private-dns
VPCピアリング先、Direct Connectで接続しているオンプレ拠点、Transit Gatewayで接続している拠点…様々なところから到達可能です。
これはインターフェイス型のVPCエンドポイントがPrivateLinkを活用していて、AWSサービスから指定のサブネットにENIを出すからです。ENIには当然プライベートIPを割り当てることができ、そのサブネットのEC2と通信するのと同じようにKinesisなどのAWSサービスと通信することができます。
つまりVPCエンドポイントを作成したサブネットに通信できるところからであれば、インターフェイス型のVPCエンドポイントに対しても通信可能です。
VPCエンドポイントを作るとプライベートIPが払い出されます。VPCエンドポイントを作成したVPCからそのサービスのデフォルトDNS(kinesis.ap-northeast-1.amazonaws.comなど)を名前解決するとそのプライベートIPアドレスが返されるようになります。またエンドポイント固有のDNSも発行され、こちらはパブリックで名前解決可能でそのプライベートIPが返されます。
また、インターフェイス型のVPCエンドポイントで払い出されたプライベートIPは固定です。エンドポイントが削除されるまでIPアドレスが変わることはありません。
インターフェイス型のメリット
- VPCエンドポイントを作成したエンドポイント以外にも様々なところから接続可能
- VPCエンドポイントに対応する固定プライベートIPが払い出されるので扱いやすい
- 同じVPC内の複数サブネットにエンドポイント(ENI)を作ることができ、AZ冗長が組める
インターフェイス型のデメリット
- VPCエンドポイントを作ったサブネット毎に約10ドル/月かかる(別途通信料金もかかる)
Gateway Load Balancer型
Gateway Load Balancer エンドポイントは、トラフィックをインターセプトし、セキュリティ検査などのために Gateway Load Balancer を使用して設定したサービスにルーティングすることを可能にします。
Gateway Load Balancer を使用して、ネットワーク仮想アプライアンスのフリートにトラフィックを分散できます。アプライアンスは、セキュリティ検査、コンプライアンス、ポリシー制御、およびその他のネットワークサービスに使用できます。
https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpce-gateway-load-balancer.html
少し作り方は他とことなるのですが、VPCエンドポイントとしてはインターフェイス型と同じくPrivateLinkを使っているのでどこからつながるかと言われるとインターフェイス型と同じとなります。
まとめ
表を再掲しますが、PrivateLinkを使っているインターフェイス型とゲートウェイロードバランサー型は様々なところから繋がります。
どこからつながるか? | ゲートウェイ型 | インターフェイス型 | ゲートウェイロードバランサー型 |
---|---|---|---|
エンドポイントを作成したVPC | ○ | ○ | ○ |
エンドポイントを作成したVPCとピアリングしているVPC | ☓ | ○ | ○ |
エンドポイントを作成したVPCとDirect Connectで接続しているオンプレ拠点 | ☓ | ○ | ○ |
エンドポイントを作成したVPCとTransit Gatewayを介して接続している拠点 | ○ | ○ | ○ |
本で体系的に学ぶ場合はこちら
VPCエンドポイント関連の他の記事も書いているのでよかったらどうぞ。