S3のインターフェースエンドポイントとゲートウェイエンドポイントの使い分けを整理してみた
VPCからS3へプライベートにアクセスしたいとき、ゲートウェイエンドポイントとインターフェースエンドポイントの2つが出てきます。
自分なりに違いを整理してみました。本記事は初学者向けです。
結論
ざっくり結論。
VPC内のEC2やLambdaからS3へアクセスするだけなら、まずはゲートウェイエンドポイントでよさそうです。
一方で、オンプレミスや別VPC、Transit Gateway経由など、VPCの外側も含めてS3へプライベート接続したい場合は、インターフェースエンドポイントを検討する形になります。
それぞれの違い
ゲートウェイエンドポイントは、ルートテーブルにS3向けの経路を追加して使う方式です。
VPC内からS3へアクセスする用途に向いていて、追加料金もかかりません。
インターフェースエンドポイントは、PrivateLinkを使う方式です。
サブネット内にENIが作られ、プライベートIP経由でS3へ接続します。
そのぶん柔軟ですが、料金はかかります。
どう使い分けるか
たとえば、次のようなケースならゲートウェイエンドポイントが合いそうです。
- Private SubnetのEC2からS3へアクセスしたい
- LambdaからS3を使いたい
- NAT Gatewayを経由せずS3へ行きたい
- できるだけコストを抑えたい
逆に、次のようなケースならインターフェースエンドポイントを考えることになりそうです。
- オンプレミスからS3へプライベート接続したい
- 複数VPCをまたいだ構成で使いたい
- Transit Gateway経由でS3へアクセスしたい
- PrivateLinkベースで接続をそろえたい
比較表
| 項目 | ゲートウェイエンドポイント | インターフェースエンドポイント |
|---|---|---|
| 主な用途 | VPC内のリソースからS3へアクセス | VPC外も含めてS3へプライベート接続 |
| 接続方式 | ルートテーブルで経路制御 | PrivateLink経由 |
| VPC内のEC2/Lambdaからの利用 | 向いている | 使える |
| オンプレミスからの利用 | 向いていない | 向いている |
| Transit Gateway経由の利用 | 向いていない | 向いている |
| コスト | 追加料金なし | 利用料金あり |
| まず検討する場面 | VPC内で完結する構成 | もう少し広いネットワーク構成 |
自分なりの理解
自分の理解では、かなりシンプルに考えてよさそうでした。
VPC内で完結するなら、まずはゲートウェイエンドポイント。
VPCの外側まで含めてプライベート接続したいなら、インターフェースエンドポイント。
名前が似ていて混乱しやすいですが、「どこからS3へアクセスしたいのか」で考えると、だいぶ整理しやすかったです。
まとめ
迷ったら、まずはゲートウェイエンドポイントで要件を満たせるかを見るのがよさそうです。
それで足りない場合に、インターフェースエンドポイントを検討する流れが分かりやすいと思いました。
自分と同じように混乱しがちな人の参考になればうれしいです。
参考
- Amazon S3 gateway endpoints
https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html - Gateway endpoints for Amazon VPC
https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html - AWS PrivateLink for Amazon S3
https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html - What is AWS PrivateLink?
https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html