AWS PrivateLink 経由での VPC リソースへのアクセス
2024年12月のサービスアップデートにより、PrivateLink経由でVPCリソースへアクセスができるようになりました。
- NLBなしでVPC内のリソースにプライベートアクセスが可能
- NLB不要なので、コストを抑えられる
- VPC CIDRが重複していても利用可能
準備
- 同じリージョンにアクセス元、アクセス先のVPCを2つ作る
- 各VPCに1台ずつEC2を起動する
- アクセス先のEC2はnginxをインストールし、HTTPアクセスをするとページが返ってくるようにする
設定
セキュリティグループの作成
- アクセス元のEC2用のセキュリティグループ
インバウンドルール:なし
アウトバウンドルール:リソースエンドポイント用のセキュリティグループへのHTTP通信を許可 - アクセス先のEC2用のセキュリティグループ
インバウンドルール:Resouce gateway用のセキュリティグループからのHTTP通信を許可
アウトバウンドルール:なし - リソースエンドポイント用のセキュリティグループ
インバウンドルール:アクセス元のEC2用のセキュリティグループからのHTTP通信を許可
アウトバウンドルール:アクセス先のVPC CIDRへのHTTP通信を許可 - Resource gateway用のセキュリティグループ
インバウンドルール:リソースエンドポイントのIPアドレスからのHTTP通信を許可
アウトバウンドルール:アクセス先のEC2用のセキュリティグループへの通信を許可
Resource gatewayの作成
VPCのマネジメントコンソールのPrivateLink and Latticeにある、Resouce gatewaysから作成。
後で作成するResource configurationで指定したリソースへのアクセスポイント
- Resource gateway name
任意 - IPアドレスタイプ
IPv4 - VPC
アクセス元のVPC - AZ
事前にサブネットを作成したAZ - サブネット
事前に作成したサブネット - セキュリティグループ
Resouce gateway用に作成したセキュリティグループ
Resource configurationの作成
VPCのマネジメントコンソールから、PrivateLink and Latticeにある、Resource configurationsから作成。
リソースのIPアドレスやARNを指定することで、他のVPCから接続するリソースを定義する。
- 名前
任意 - Configuration type
Resouce - Type
Single - プロトコル
TCP - Resource gateway
先ほど作成したResource gateway - Resource type
IP resource - IPアドレス
アクセス先のEC2インスタンスのプライベートIPv4アドレス - Port ranges
1~65535 - Association settings
Allow - Share resource configuration
選択しない - モニタリング
オフ
リソースエンドポイントの作成
VPCのマネジメントコンソールから、PrivateLink and Latticeにある、エンドポイントから作成。
Resource configurationで指定したリソースへのプライベートアクセスを提供する。
エンドポイントの設定
- 名前タグ
任意 - タイプ
リソース - サービス
先ほど作成したResource configuration - VPC
アクセス元のEC2があるVPC - DNS名を有効化
オン - サブネット
事前に作成したサブネット - セキュリティグループ
エンドポイント用に作成したセキュリティグループ
実際にアクセスしてみる
アクセス元のEC2から、リソースエンドポイントのIPアドレスにアクセスします。
最初に設定したhtmlが返ってくることが確認できます。
実際に触ってみて分かったこと
-
VPCリソースへのアクセス専用のサービスのため、シンプルな設計になる
→構成の複雑化を避けられる -
RDSのみ、ARN指定でリソース指定ができる
→フェイルオーバー対応のLambdaの作りこみが不要 -
TCP通信のみの対応で、UDP通信は未対応
→UDP通信の場合、従来通りNLBが必要 -
Resource gateway側のリソースから通信を行うことはできない
→双方向の通信が必要な場合は、別途検討が必要 -
リソースエンドポイントに、エンドポイントポリシーの設定ができない
→アクセス制限はセキュリティグループでかける必要がある -
TCP通信のみの対応で、UDP通信は未対応
→UDP通信の場合、従来通りNLBが必要