「インターネットに出ない」という安心感。VPCエンドポイント(PrivateLink)の正体を紐解く
こんにちは!クラウドの海を泳ぐSREの皆さん、そしてこれからインフラの荒波に漕ぎ出そうとしている初学者の皆さん。
クラウドを触り始めると、必ずと言っていいほどぶつかる壁があります。「パブリックなサービス(AWSのS3やDynamoDBなど)を、なぜかインターネットに出さずに、社内の閉じたネットワークから使いたい」という要望です。
そんな時、魔法のように登場するのが VPCエンドポイント(PrivateLink) です。今回は、この技術が裏側で何をしているのか、郵便配達の仕組みに例えながら、泥臭い現実の挙動まで一緒に紐解いていきましょう!
—
1. VPCエンドポイントは「専用の私書箱」
まず、「インターネットに出る」というのは、自分の家から世界中のどこへでも繋がる「公道」に出るようなものです。便利ですが、誰に見られているかわからないという不安がありますよね。
一方、VPCエンドポイントは、「自分の敷地内に設置された、AWSサービス直通の私書箱」のようなものです。
本来、AWSのサービス(例えばS3)はインターネットの先にある広い世界に住んでいます。しかし、VPCエンドポイント(Interface型)を作ると、あなたのVPCの中に ENI(Elastic Network Interface) という「窓口」がポツンと出現します。
あなたが「S3を使いたい!」とリクエストを送ると、パケットはインターネットという大海原には出ず、VPC内にあるこの「窓口(ENI)」に吸い込まれ、そのままAWSの内部回線を通ってサービスへ届けられるのです。これぞ、PrivateLinkの醍醐味ですね。
2. なぜ「AZごと」にENIが必要なの?
VPCエンドポイントを構築する際、AWSマネジメントコンソールで「どのサブネットに配置しますか?」と聞かれますよね。ここで、「なんで一つじゃダメなの?」と疑問に思う方も多いはず。
理由はシンプルです。「物理的な距離」を無視できないからです。
AWSの各アベイラビリティゾーン(AZ)は、物理的に離れた場所に位置する独立したデータセンターです。もし、ap-northeast-1a にあるサーバーが、わざわざ別のAZにある ap-northeast-1c のENIを経由して通信しようとすると、以下のデメリットが発生します。
- 遅延(レイテンシ): 物理的な距離がある分、通信が少し遅くなります。
- データ転送料金: AZをまたぐ通信には、実は料金がかかります。
- 可用性: もしそのAZが丸ごとダウンしたら、通信経路も共倒れです。
だからこそ、「各AZの中に、自分専用の窓口(ENI)を配置する」のが、ネットワーク設計の鉄則なんです。
3. 実践!AWS CLIでエンドポイントの「窓口」を確認する
言葉で理解したところで、実際に現場でどう確認するかを見てみましょう。ここでは、AWS CLIを使って「今、自分のVPCにどんな窓口があるか」を探るコマンドを紹介します。
# 特定のVPCエンドポイントIDを指定して、関連付けられているENIの一覧を取得します
aws ec2 describe-vpc-endpoint-services \
--service-names com.amazonaws.ap-northeast-1.s3
# エンドポイントがどのサブネット(ENI)に紐づいているか確認する
aws ec2 describe-vpc-endpoints \
--filters Name=vpc-endpoint-id,Values=vpce-xxxxxxxxxxxxxxxxx \
--query "VpcEndpoints[].NetworkInterfaceIds"
このコマンドで返ってくる eni-xxxxxx というIDが、まさにあなたのVPC内に設置された「物理的な窓口」の実体です。
4. プライベートDNSという「魔法の名前解決」
VPCエンドポイントを有効にすると、s3.ap-northeast-1.amazonaws.com というお馴染みのURLにアクセスするだけで、勝手にENIのプライベートIPへ誘導されます。
なぜそんなことができるのでしょうか?それは、VPC内で 「プライベートDNS」 という機能が動いているからです。
通常のDNSは「住所(IPアドレス)を教えてくれる案内所」ですが、プライベートDNSは「あなたのVPCの中にある特定の案内所」です。あなたがS3へアクセスしようと名前解決を試みると、この案内所が「S3に行くなら、あっちの窓口(ENI)に行きなさい!」と、こっそりプライベートIPを教えてくれるのです。
5. まとめ:トラブルシューティングの視点
最後に、現場で詰まった時に思い出してほしいポイントを整理します。
- セキュリティグループを確認せよ: ENIにもセキュリティグループが適用されています。ここが
HTTPS (443)を拒否していれば、どんなに設定が正しくても通信は繋がりません。「窓口の受付嬢が扉を閉めている状態」を疑いましょう。 - ルーティングテーブルは無関係: インターフェース型エンドポイント(PrivateLink)の場合、サブネットのルートテーブルをいじる必要はありません。これはゲートウェイ型エンドポイントとの大きな違いです。
- 名前解決が成功しているか:
digコマンドなどで、実際に返ってくるIPがプライベートなもの(10.x.x.xなど)になっているか確認しましょう。
ネットワークは「目に見えない郵便配達」です。一つひとつのパケットが、どの経路を通って、どの窓口で受付されているのか。そんな想像力を働かせるだけで、トラブル解決のスピードは劇的に上がります。
皆さんのVPCが、今日も安全で健やかな通信環境でありますように!次回は、このENIを跨ぐセキュリティグループの設計について、もう少し深く掘り下げてみたいと思います。お楽しみに!
コメント