
2種類のエンドポイント、違いを比べてみた!〜ゲートウェイ型&インターフェース型〜
こんにちは!Koty-Mousa 矢坂幸太郎 です!
今回は、2種類の VPCエンドポイントの違いについて見てみましょう!
VPC エンドポイント
まず、VPCエンドポイントとは、VPC内のリソースが、インターネットを経由せずにVPC外のAWSマネージドサービス(S3、DynamoDB、SNSなど)と安全に通信するために利用するサービスです。
例として、下記図では、EC2とS3の接続に、「ゲートウェイ型エンドポイント」を用いて接続しています。
VPCエンドポイントには、「ゲートウェイ型」と「インターフェース型」があります。
特徴 | ゲートウェイエンドポイント | インターフェースエンドポイント |
---|---|---|
対応サービス | S3とDynamoDBのみ | 多数のAWSサービス |
料金 | 無料 | 時間単位の料金とデータ処理料金が発生 |
技術的実装 | ルートテーブルにエントリを追加 | VPC内にENI (Elastic Network Interface) を作成 |
接続方法 | AWS内部ネットワーク経由 | プライベートIPアドレス経由 |
リージョン制限 | 同一リージョン内のみ | クロスリージョン接続可能 |
ある日、私はふと「どうしてゲートウェイ型は無料なのに、インターフェース型は料金が発生するのだろうか」と考えました。
じっくり調べてみました!
ゲートウェイ型
ゲートウェイ型エンドポイントは、明示的に新たなリソースは作成されず、サブネットのルートテーブルに変更を加えます。
ゲートウェイ型のS3エンドポイントを設定したサブネットのルートテーブルを見てみます。
pl-61a54008
というルートが新たに設定されています。
これは、東京リージョンにおいてS3のアクセスに使用されるIPアドレスのプレフィックスリスト(一覧)です。
つまり、EC2からS3宛の通信ができるように、ルートテーブルが自動で変更され、ゲートウェイ型エンドポイントによって通信経路が確保されたということです。
ゲートウェイ型エンドポイントを設定すると、この通信のルートが設定されます。
特別にNIC・ENI等が用意されることはなく、ルーティングの調整でこのメカニズムを実現しています。
nslookupの結果を見て、通信経路を確認してみましょう
[ec2-user@ip-10-0-137-56 ~]$ nslookup s3.ap-northeast-1.amazonaws.com
Server: 10.0.0.2
Address: 10.0.0.2#53
Non-authoritative answer:
Name: s3.ap-northeast-1.amazonaws.com
Address: 52.219.17.20
Name: s3.ap-northeast-1.amazonaws.com
Address: 52.219.163.52
Name: s3.ap-northeast-1.amazonaws.com
Address: 3.5.154.121
(以下、同様に pl-61a54008 のIPアドレス...)
このように、S3の接続先に対して、AWS内部から接続していることがわかります。
繰り返しますが、これはプライベートサブネットからの接続であり、インターネット経由での接続ではありません。
インターフェース型
インターフェース型エンドポイントは、VPC内にENI(Elastic Network Interface)を作成します。
S3宛の通信は、DNSによってENIへルートされ、ここからS3へとアクセスします。
パブリック経由の通信では、DNS解決によりインターネット経由で接続しますが、その仕組みををプライベートサブネット内でも ENI を用いて実現しています。
こちらも nslookup を確認してみましょう
[ec2-user@ip-10-0-137-89 ~]$ nslookup s3.ap-northeast-1.amazonaws.com
Server: 10.0.0.2
Address: 10.0.0.2#53
Non-authoritative answer:
Name: s3.ap-northeast-1.amazonaws.com
Address: 10.0.136.239
こちらは、10
から始まる プライベートIPアドレスが表示されています。
これは、インターフェース型エンドポイントに伴うENIのIPアドレスです。
つまり、EC2はENI宛に通信を行っていることがわかります。
パブリック通信
実は、エンドポイントがなくても、インターネットに通信できるEC2インスタンスであれば、同じやり方でS3に接続することができます
S3の接続先にパブリックIP経由で接続しているということです。
AWSサービスへの接続は、必ずしもVPCエンドポイントである必要はありません。
どうして有料・無料なのか
どちらのエンドポイントも、結果的にはAWSサービスとの接続を行うサービスですが、ゲートウェイ型は無料、インターフェース型は有料です。
ゲートウェイ型は「ルートテーブルにエントリを追加」、インターフェース型は「VPC内にENI (Elastic Network Interface) を作成」することで実現しています。
インターフェース型のみ有料である理由は、利用するENIに対して課金が発生するためです。
コンポーネント | 料金 |
---|---|
VPC | 無料 |
ルートテーブル | 無料 |
サブネット | 無料 |
セキュリティグループ | 無料 |
DNS | 無料 |
ENI | 有料(時間単位+データ処理料金) |
(このほか、一部通信やサービス・リソースに課金が発生することがあります。)
参考:
インスタンス間のパブリックIPでの通信は本当に外部に出ないのか試してみた | DevelopersIO
【初心者向け】VPCエンドポイントとAWS PrivateLinkの違いを実際に構築して理解してみた | DevelopersIO
2つのVPCエンドポイントの違いを知る | DevelopersIO
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。