0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VPCエンドポイント 〜ゲートウェイ型とインターフェース型の違い〜

0
Posted at

この記事の前提

  • 対象読者: AWSのネットワークを触っている人。VPCエンドポイントの存在は分かるが、ゲートウェイ型/インターフェース型の違いが分からない人
  • ゴール: 自分の構成でどちらを選ぶべきか判断できるようになること
  • 注意: 対応サービス数・対応リージョン・料金体系は今後変更となる可能性があります。設計時はAWS公式ドキュメントで最新の仕様を確認してください

VPCエンドポイントとは

例として、VPCの中にあるEC2から、S3を使いたい場合に通るのが、VPCエンドポイントです。

インターネットゲートウェイ・NAT・パブリックIP(いずれも外部とやり取りするためのネットワークサービス)を使わずに、AWSサービスへ到達するための出入口が、VPCエンドポイントです。外部に通信が露出しないため、安全にAWSサービスへ接続できます。

VPCエンドポイントには5つの種類がありますが、AWSサービスへのアクセスに使うのは「ゲートウェイ型」と「インターフェース型」の2つだけです。この記事ではその2つの違いについてお話します。

VPCエンドポイントとは?

  1. VPC内でAWSサービスと通信できる
  2. ゲートウェイ型とインターフェース型の2種類ある

結論

ゲートウェイ型と、インターフェース型の違いは

  • 「ルートテーブル経由 = ゲートウェイ型」
  • 「ENI(プライベートIPアドレス)経由 = インターフェース型」

の2点で、S3/DynamoDBなら基本的にゲートウェイ型、これ以外のほとんどのサービス(200以上)はインターフェース型を利用します。

ルートテーブルは宛先ごとの道案内表、ENI(ElasticNetworkInterface)はVPCの中に置かれるネットワークの差し込み口でプライベートIPを1つ持ちます。

ポイント

  1. 宛先IPがプライベートIPかどうか
  2. ルートテーブルとGatewayがあるかどうか

上記2つの違いから、料金もオンプレから使えるかどうかが変わってきます。順番に見ていきます。

違い①:DNSが返すIPが違う

AWSサービスのDNS名前解決(ドメイン名をIPアドレスに変換する仕組み)の答えが違います。

  • ゲートウェイ型は、サービスのパブリックIPがそのまま返ってきます
  • インターフェース型は、VPC内に作られたENIのプライベートIPが返ってきます

ゲートウェイ型

ゲートウェイ型では、エンドポイント専用のDNS名は払い出されません。使うのは本来のドメイン名のままです。
例えば、S3は下記のようになります。

s3.ap-northeast-1.amazonaws.com

これを名前解決しても、返ってくるのはS3の パブリックIP です。エンドポイントを作る前と後で、DNSの答えは変わりません。

インターフェース型

ゲートウェイ型と反対に、S3にインターフェース型のエンドポイントを作ると、専用のDNS名が払い出されます。

bucket.vpce-1a2b3c4d-5e6f.s3.ap-northeast-1.vpce.amazonaws.com

これを名前解決すると、ENIの プライベートIP が返ります。「プライベートDNS名を有効化」をオンにしておけば、この長い名前を使わなくても、本来の s3.ap-northeast-1.amazonaws.com を引くだけでプライベートIPが返るようになります。

ちなみに、他のサービスの例で、EC2のAPIサービスのDNSに対してVPCエンドポイント(インターフェース型)を作成すると下記のようになります。

vpce-1a2b3c4d-5e6f.ec2.ap-northeast-1.vpce.amazonaws.com

これも名前解決すると、ENIのプライベートIPが返ります。「プライベートDNS名を有効化」をオンにすることによる名前短縮の恩恵は同様に得られます。

違い②:ルートテーブルとGatewayがあるかどうか

ゲートウェイ型

宛先はパブリックIPのままです。放っておけばインターネットへ出ていきます。

そこでルートテーブルに「対象IPレンジ宛はGateway Endpointへルーティングするルート」を加え、経路を設定します。通常、VPCエンドポイントを作成すると自動で当該ルートがAWSマネージドプレフィックスリスト(pl-xxxx)で作成されます。要は、ユーザがひとつずつ設定しなくて問題ないです。

インターフェース型

宛先が同じVPC内のIPなので、そのまま届きます。ルートテーブルもGatewayも要りません。

代わりにENIという実体がサブネットの中に置かれます。これが料金差の理由です。

実体 料金
ゲートウェイ型 経路の設定だけ 追加料金なし
インターフェース型 ENIという実体がある 時間課金+データ処理課金

違い③:オンプレから使えるかどうか

オンプレミス(社内ネットワークなどクラウド以外のネットワーク・サーバ)からのアクセスについての対象サービスの利用可否が変わります。

ゲートウェイ型:
AWSクライアント内のルートテーブルの設定に従います。ルートが効くのはVPC内のサブネットだけなので、 オンプレからは届きません。

インターフェース型:
宛先はVPC内のプライベートIPです。そのIPに届く経路さえあれば、送信元がVPCの外でも構いません。VPNやDirect Connectのオンプレと接続するサービスを経由し、AWSクラウド環境がプライベートIPアドレス空間で繋がっていればそのまま使えます。

オンプレからのプライベートアクセスが要件に入った時点で、 選択肢はインターフェース型だけになります。

一覧比較

上記までの仕様を一覧化した表です。

観点 ゲートウェイ型 インターフェース型
対象サービス S3・DynamoDBのみ 200以上
宛先IP パブリックIP プライベートIP
ルートテーブル 必要 不要
VPC内の実体 なし ENI
オンプレから 使えない 使える
追加料金 なし あり

S3は2021年2月、DynamoDBは2024年3月からインターフェース型にも対応しました。この2サービスだけはどちらも選べます。

判断フロー

ゲートウェイア型、インターフェース型を利用する場面を選択する際のフローです。

VPC内からしか使わず、対象がS3かDynamoDBならゲートウェイ型。追加料金がかからないので、ほかに選ぶ理由がありません。

ハマりどころ3つ

1. アクションごとにエンドポイントが分かれる

同じサービスでも、APIの系統が違えばエンドポイントは別物です。Bedrockでモデル一覧の取得と推論の実行を両方やるなら、東京リージョンでは2つ要ります。

bedrock.ap-northeast-1.amazonaws.com
bedrock-runtime.ap-northeast-1.amazonaws.com

一部のAPIだけタイムアウトするなら、まずここを疑ってください。

2. ENIのセキュリティグループで443を開け忘れる

インターフェース型の通信先はVPC内のENIです。そのENIに付くセキュリティグループでHTTPS(443)を許可していないと止まります。

厄介なのは、名前解決だけは成功してしまうこと。プライベートIPはちゃんと返るのに、接続だけがタイムアウトします。

3. プライベートDNS名を有効化していない

インターフェース型を作るときの「プライベートDNS名を有効化」というオプション。オフのままだと、サービス本来のドメイン名を引いてもパブリックIPが返ります。違い①の図の上段のまま、エンドポイントがあるのに一切使われません。

アプリ側の接続先を書き換えたくないなら、オンにしておきます。

まとめ

ゲートウェイ型、インターフェース型の違いと使い方についてのまとめです。

  • 違いは「DNSが返すIP」と「ルートテーブルとゲートウェイの有無」の2点
  • ゲートウェイ型はS3/DynamoDB限定、追加料金なし、オンプレからは使えない
  • インターフェース型はENIを持つので課金あり、200以上のサービスとオンプレに対応
  • VPC内だけでS3/DynamoDBならゲートウェイ型、それ以外はインターフェース型
  • 作っただけで使われていないことがあるので、dig で確認する

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?