本記事は TechHarmony Advent Calendar 12/10付の記事です。 |
皆さんこんにちは。SCSKで飼育されているひつじです。
突然ですがエンドポイントちゃんと理解して使っていますか!?
エンドポイントと聞いて私が思い出すのはヨーロッパに赴任していたころです。
ヨーロッパにはシェンゲン協定というものがあり、協定内の国家間の移動は入国審査などが免除されます。
日本の場合は下図のように出向審査、入国審査を経て外国に行きますよね。
しかしシェンゲン協定内たとえばスペイン、ポルトガル間は審査不要で入国できるのです。
このような外国への移動が、まるで国内のように移動できる体験をVPCエンドポイント体験と名付けております。
さて、本題ですがそんなエンドポイントですがなんとなく使っていたりはしませんでしょうか。
今日はそんなエンドポイントの役割について説明したいと思います。
AWSのVPC外にあるサービスにつなぐ場合に使う
以下の図をご覧ください。よく聞くサービスですが実はVPCの外に配置されているサービスがいくつかあるのがわかりますね。
このようなVPCの外にいるサービスにはどのようにアクセスすればよいでしょうか。
例えばVPC内のEC2から別のSubnetにあるEC2につなぐことを考えた場合、同一VPC内にインスタンスを立てることでIPベースでの接続が可能になりますね。これは非常に単純でわかりやすいと思います。
しかし、VPC内に構築できないサービスと接続したい場合はどうでしょうか。
このような場合に使われるのがVPCエンドポイントです。
たとえばS3にアクセスしたいとします。S3はインターネットにも公開できるためインターネット経由でアクセスすることも可能です。
しかしインターネット公開はセキュリティ的に安全な手法とは言えません。
そこでインターネットを経由しないでAWSの中を通ってアクセスする必要があります。
エンドポイントの役割のひとつはインターナルに接続する手段となります。
別のVPC環境につなぐ場合に使う
次に別のVPC環境につなぐ場合のケースを考えてみましょう。
別のVPCということNW環境としては分離されています。
そのため、IPベースでの通信を行うことができません。
ではVPC間を接続(Peering)しNWを拡張することを考えてみましょう。
この場合はVPCに接続することができますが、以下の点に注意です。
- NWアドレス帯が重複している場合はコンフリクトを起こして正常な通信ができない。
- VPC間の通信を制御する仕組みが必要(接続元IPをフィルタする、通信プロトコルを制限するなど)
より管理する手間を省き安全な接続を実現するためにエンドポイントを利用します。
このようなエンドポイントの使い方はPrivateLinkと呼ばれます。
- 通信をHTTPSに限定することができる。
- 送信元と送信先を明確に定義することできる。
これはクロスアカウントの場合も同様です。別のアカウントや他社が提供するAWSリソースにアクセスする要件があった場合に、PrivateLinkを使うことで安全に接続することが可能です。
VPCエンドポイントの種別について
このように便利なエンドポイントですが大きく3つの種類があります。
DynamoDBとS3の2種類のみで利用することが可能です。無償で使えるためお手軽に利用することができます。
このゲートウェイ型で払い出されるエンドポイントの実態はパブリックIPです。
そのためインターナル接続だと思い通信をローカルに閉じてしまった場合は接続ができなくなります。
※本仕様について、パブリックIPへのアクセスだとインターネットを経由しているのでは?みたいな記事も散見されましたが、正確な情報はつかめませんでした。
200種類近い種類が用意されています。そのためECRやCodeシリーズへのアクセスにも利用することが可能です。
インターフェース型のエンドポイントのIPはプライベートとなります。
ただし1エンドポイントあたりに金額がかかります。ただNATGatewayと比較してもリーズナブルな価格となっています。
- 1か月で10GB通信した場合の試算(2023年12月時点/アジアパシフィック(東京))
エンドポイント インターフェース型 | NAT Gateway |
約10USD
VPC エンドポイント 1 つあたりの料金 (USD/時間):0.014USD |
約45USD
NAT Gateway 1 つあたりの料金 (USD/時間):0.062USD |
こちらは今までの文脈とは少し異なる使い方になります。
通信経路にエンドポイントを介在させて、別VPC(例えばセキュリティ用VPC)に用意した仮想アプライアンスで通信を検査する場合などに有効なエンドポイントとなります。
引用:AWSドキュメント(https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpce-gateway-load-balancer.html)
まとめ
いかがでしたでしょうか。
普段なんとなく使っているエンドポイントにもさまざまな種別がありましたね。
AWSを触り始めた当初、「VPC外にあるサービスに接続する」という概念がわかりにくかったのですが図にすることでイメージできました。
また冒頭でも記載した入国審査の例に関しても、クロスアカウントで接続するためのエンドポイントがまさしく言い得て妙なのかと思います。
AWSリソース間=シェンゲン協定というイメージで覚えていこうかなと思います!
もし海外旅行などで入国審査しないで入国する場合「VPCエンドポイント体験だ~」と感じて頂ければと思います。
それではご査収ください。