![見出し画像](https://assets.st-note.com/production/uploads/images/157575293/rectangle_large_type_2_5e7ef58dd481b09c3b8d4460d8312cfe.png?width=1200)
[AWS SAP]VPCエンドポイントのしくみ
VPCエンドポイントってなに?なににつかうの?
VPCエンドポイントとは、
主にプライベート環境(インターネットに出られない環境)から、
AWSネットワーク上にある各サービスに、プライベートに
接続するために使う裏戸みたいなものです。
ほとんどシステムはプライベート環境に作るものだと思うので
VPCエンドポイントは必須です。
VPCエンドポイントの種類には、インターフェイスエンドポイントとGatewayエンドポイントの2種類があります。
それぞれの用途や仕組みについて順番に解説します。
インターフェイスエンドポイント
インターフェイスエンドポイントの実態としては、
「サブネット上に作成すると、VPC内のリソースと指定したAWS上のサービスエンドポイント同士をAWS Private Linkで通信代行してくれるENI」
のことです。
具体的な例を挙げて説明します。
例えば、プライベート環境にあるEC2から、CloudWatchにメトリクスを送信して、監視通報を行いたいとします。
この場合、プライベート環境に置かれたEC2の中にあるCloudWatchAgentはメトリクスを送信するために、AWSネットワーク上のCloudWatchと通信しなければなりません。
そのためにCloudWatch用のインターフェイスエンドポイントとして以下を指定して作成します。
・com.amazonaws.ap-northeast-1.monitoring
・com.amazonaws.ap-northeast-1.ec2
そして、作成したインターフェイスエンドポイントをサブネットにアタッチします。
サブネットに二枚のENIが設置されました。
このENIを介して、AWS PrivateLinkを使い、EC2はインターネットを経由せずにCloudWatch(のサービスエンドポイント)と通信することができます。
すこしややこしいのは、リージョンごとにあるサービスエンドポイントとVPCを通信するためのENIをつくっているのに、VPCエンドポイントという名前がついていることですね。(エンドポイントはあっちについてる名前じゃん、、こうおもうのはわたしだけ?)
ですがこれも、AWSサービス側から見て、うちらがVPCエンドポイントだと考えれば理解しやすいです。
実際にコンソールでエンドポイントを作成しようとするときには、通信したいサービスのエンドポイントを指定して、vpcエンドポイントを作成し、それがインターフェイスエンドポイントとなります。
ここで作っているのが、選択したサービスエンドポイントと通信するためのENIだと認識してよいです
つまり、上記で作成時に指定したcom.amazonaws.ap-northeast-1.monitoring、com.amazonaws.ap-northeast-1.ec2はClodWatchの東京リージョンのCloudWatchサービスエンドポイントで、これと通信するためのENIを作ったということになります。
⇒ということは、vpcエンドポイント作ったら、ENI勝手に増えてるの??
⇒ルートテーブルっていらないの?あとSGってどうなってるの?
↑後日調べたい
インターフェイスエンドポイントは、ルートテーブルをつかうわけではないので、ルートテーブルは更新不要です。
ちなみに、インターフェイスエンドポイントはひとつ所有するごとにお金がかかります。
1ヶ月何円の単位で説明されることが多いです。
結構な金額になるのでご注意を
GateWayエンドポイント
こちらもプライベート環境から、awsのプライベートリンクで接続するためというのは同じですが、
S3とDynamoDBのみに対応しています。
この二つに接続したいときはこっちを使います。
こちらの方が知られていると思います。
インターフェイスエンドポイントとの違いは
・ENIは存在しない
・ルートテーブルを介している
・vpcにアタッチする
・無料
です。
s3とdynamoのみ、ルートが確立されているため独立しているようです。そのため、インターフェイスエンドポイントと違い、ルートテーブルの設定が必要になります。
おまけ
ちなみにVPCエンドポイントは、NATGatewayと同じで、一度アタッチすると外すことはできないようです。
また、サービスエンドポイントの表記方法はいろいろあるようです。
一般的なのは以下です。
<サービス名>.<リージョン>.amazonaws.com
また、awsサービス同士の通信は、パブリック環境で運用していても、インターネットに出ることはなくawsのプライベート環境内で完結しているそうです。(じゃあなんのためにお金払ってvpcエンドポイント使うんだ、、?)
※インターフェイスエンドポイントでも、DynamoとS3は繋がります
参考サイト:
AWS サービスエンドポイント - AWS 全般のリファレンス (amazon.com)