目的
- PrivateLinkは既に登場して2年ほどになる、ある程度枯れたサービスだが、構成を理解するため触ってみることにした。
AWS PrivateLink とは(自分の理解)
- 自分のVPCのNLB配下のWEB等のサービスを、同一リージョン内の他のVPCに公開できるサービス。VPCピアリング等と異なり、IPアドレスレンジの重複等の考慮が不要で、AWS内に閉じた安全なNW接続を実現できる。
- PrivateLinkは、サービスを公開する側(エンドポイントサービス)と、サービスにアクセスする側(インターフェースエンドポイント)のセットで構成される。
やったこと
- VPC(Provider)側にNLBとEC2(nginx)、VPC(Consumer)側にEC2(WEB Client)を作成する。
- VPC(Provider)側で「エンドポイントサービス」を作成し、NLBを指定する。
- VPC(Consumer)側で「インターフェースエンドポイント」を作成し、接続先として、「エンドポイントサービス」を指定する。
- VPC(Provider)側で、「インターフェースエンドポイント」の接続要求を承認し、接続を確立する。
- EC2(web client)からEC2(nginx)へPrivateLink経由でhttpアクセスする。
構成図
作業手順
VPC(2個)及びEC2(WEBサーバ/クライアント)の作成
- VPC(Provider)を作成し、NLBとEC2(nginx)を作成する。NLBのスキームを「内部」で設定する。
- VPC(Consumer)を作成し、EC2(WS2019,Web Client用)を作成する。
エンドポイントサービスの作成
- VPCのメニューから、「エンドポイントサービスの作成」を選択し、VPC(Provider側)にて既存のNLBを指定してエンドポイントサービスを作成する。「エンドポイントサービスの作成」とは、NLBの配下のサービスを、他のVPCに対しての公開サービスとして登録するイメージ。2019/11現在、エンドポイントサービスとして公開設定できるのはNLBのみ。
インターフェースエンドポイントの作成
- VPCのメニューから、「エンドポイントの作成」を実行し、VPC(Consumer側)にてインターフェースエンドポイントを作成する。「インターフェースエンドポイント」は、「エンドポイントサービス」とつながる道の入口のようなもの。エンドポイントサービスの「サービス名」(com.amazonaws.vpce.ap-northeast-1.vpce-svc-xxxxxxxxxxxxxxxxx)を入力することで、エンドポイントサービスとの紐づけ要求を作成することができる。
エンドポイントサービス側での承認
PrivateLink経由での接続確認
- VPC(Consumer)側で起動したEC2(WEB Client)のブラウザで、URLにインタフェースエンドポイントのDNS名を入力して、PrivateLink経由でNLBの先のEC2(nginx)へアクセスする。
所感
- VPC PrivateLinkというサービスメニューがあるわけではなく、「エンドポイントサービスとインターフェースエンドポイントをつなげること」=「PrivateLink」という感じなので、ちょっと分かりにくいなと感じた。
参考
-
【新機能】PrivateLinkで独自エンドポイントを作ってアプリをプライベート公開する #reinvent
- ほとんどこの記事の内容を実施して自分なりにまとめなおしただけ、、