はじめに
こんにちは。
Amazon VPCサービスはアップデートが盛んに行われており、最新のre:Inventのセッションでは、たくさんのコンポーネントがあるアーキテクチャが展開されました。
re:Invent 2024セッション "Amazon VPC: Advanced design and what’s new (NET301)"
- YouTubeリンク (2024/12/16閲覧可)
- PDFリンク (2024/12/16閲覧可)
Private Link・Trangit Gateway・Cloud WANなどなどたくさんありますね笑
今回はその中でも、2023年3月31日にGAされたVPC Latticeに注目します。
VPC Latticeとは?
Amazon VPC Latticeは、アプリケーションのサービスの接続・保護、モニタリングに使用する、フルマネージド型アプリケーションネットワーキングサービスです。VPC Latticeは、単一の仮想プライベート (VPC)、または1つ以上のアカウントの複数のVPCで使用できます。
各VPCをマイクロサービスと置き換えて、レガシーサービスからの接続課題を解決ソリューションであることが読み取れます。
構築するアーキテクチャ
今回の内容では、下記のアーキテクチャを構築しました。
特にお伝えしたい構成の特徴4選
- Client VPC, Target VPC-A/VPC-BのCIDR重複を許容 (アカウント跨ぎ可)
- EC2のほかにEKS/ECS・Lambdaを許容
- CloudWatch/S3へのログ出力可
- 各ターゲットレベルでセキュリティ設定可 (IAMの一次認証コードも可)
主要なコンポーネント
※実際に作成する場合は、Target Group⇒Service⇒ListenerRule⇒Service NetWorkで作成される順番がWorkShopでは提示されていました。
- Service Network
- 論理的なアプリケーション層ネットワークの境界
- VPCやアカウントを跨いでクライアントとサービスを接続
- Service
- 単一のアプリケーションユニット (今回の場合は
virtual-server-group/lambda-group
の2つで作成しました)
- 単一のアプリケーションユニット (今回の場合は
- Listener Rule (Sericeの中で作成)
- メソッドコンディション・パスコンディション・ヘッダーコンディションを選択可 (今回の場合は
virtual-target-group
のServiceで複数のTarget Groupがあるので、メソッド属性で区切りました) - 各ターゲットグループへの重みづけも可能
- メソッドコンディション・パスコンディション・ヘッダーコンディションを選択可 (今回の場合は
- Target Group
- Instance, IP addresses, Lambda function, Application Load Balancerが選択できる (EC2のターゲットグループと同じ)、今回の場合は
Target-VPC-A/Target-VPC-B/Lambda
で3つ作成
- Instance, IP addresses, Lambda function, Application Load Balancerが選択できる (EC2のターゲットグループと同じ)、今回の場合は
最終的にVPC Latticeのリソースページは下記の内容で構築されます。
- Serivce Association: Serviceの接続を設定する箇所
- VPC associations: Client VPCを設定する箇所
- Domain name: (VPC Latticeの大きな特徴)各Serviceにドメインが割り振られる。Target側はアップデートをしても、Client側では設定を変える必要はない
※Service Networkでバージョンによる、重みなどは設定する必要はあるかも
いざ、接続!
- 事前準備
- Client VPCのEC2にSSM Session Managerで接続
- TargetのService
- Lambda Gruopは、初期設定の
{statusCode: 200, body: "Hello from Lambda!}"
を返却想定 - Virtual Server Groupは、Apacheを起動させており、HTMLを返却想定
- Lambda Gruopは、初期設定の
- Lambda編
- VPC Latticeで出力されたドメインから
curl
を実施すると返却
※curl -v
を付け足すことでIPv4の169.254.171.161
のリンクローカルアドレスに変換されている様子が確認できました
- VPC Latticeで出力されたドメインから
- Virtual Server編
- Lambdaと同様に、VPC Latticeで出力されたドメインから
curl
を実施すると返却 - 同じServiceでリスナールールをメソッド属性でターゲットグループを分けたため、同じURLでもEC2単独とALB配下に振り分けることを確認
- Lambdaと同様に、VPC Latticeで出力されたドメインから
最後に
今回はVPC Latticeについて、簡易的なアーキテクチャを用いてサービスの解像度上げを試みました。これまでにもそれぞれのVPCを接続するソリューションは提供されていましたが、VPC Latticeは各VPCをマイクロサービスとして利用するためにCIDRの重複を気にしなくてよい点・ドメインで接続できる点などから、各VPCをマイクロサービス化して共有する取っ掛かりにできると思いました。
こちらの内容が理解の一助になれれば幸いです!最後まで読んでいただき、ありがとうございました!
参考URL