はじめに
今回はVPC Latticeについて調べた内容をまとめます。
VPC Latticeとは
VPC Latticeは、サービス間の通信を一貫して接続、監視、保護するアプリケーションレイヤーサービスです。
公式ドキュメントには以下のように記載されているように、アプリケーション間の通信をターゲットにしたサービスとなります。
最新のアプリケーションは、マイクロサービスと呼ばれることが多い、複数の小規模でモジュール化されたサービスで構成されます。近代化には利点がありますが、レガシーサービスに関連するネットワーキングが複雑になり、課題が生じる可能性もあります。これは多くの場合、これらのアプリケーションを構築する開発者がさまざまなコンピューティングニーズを持つさまざまなチームに分散しているためです。その結果、複数のアカウント、VPC、あるいはその両方にまたがってマイクロサービスを構築してデプロイします。
Amazon VPC Lattice は、マイクロサービスとレガシーサービスを論理的な境界内で相互接続するのに役立ち、より効率的に検出して管理できます
サポートされているプロトコルは現在(2023年5月30日)以下の3つとなります。
- HTTP
- HTTPS
- gRPC
VPC Latticeは、異なるVPC、異なるAWSアカウントをまたがって設定可能です。
そのため、異なるVPC及びAWSアカウントにまたがるサービス間のネットワーク接続と、アプリケーションレイヤーのルーティングを自動的に管理することができます。
コンポーネント
VPC Latticeのコンポーネントについて紹介します。
サービスネットワーク
- サービスとVPCを関連付けるためのコンポーネント
- サービスネットワークに関連付けられたVPCは、そのサービスネットワークに関連付けられているサービスにリクエストを送信することができます。
サービス
- クライアントアプリケーションからのリクエストを認証・承認し、ターゲットにルーティングします。
- ほとんどALBのようなもので、以下の項目を設定できます。
- リスナー:1つまたは複数のリスナーを任意のポート番号とプロトコルで構成
- ルール:複数のターゲットグループに対して、パスベースルーティングやウェイトルーティングを構成
- ドメイン:クライアントアプリケーションが送信先に指定するドメイン。カスタムドメインの設定も可能
- サービスアクセス:クライアントアプリケーションをIAMおよび認証ポリシーで認証する。(※省略可能)
ターゲットグループ
- サービスのルーティングで設定された、宛先となるアプリケーションインスタンスや、その前段のALB等
- 指定可能なものは以下となります。
- EC2インスタンス
- IPアドレス
- Lambda関数
- Kubernetes Pod(Gateway Controller for Kubernetes経由で指定可能)
公式ドキュメントでは、各コンポーネントについて、以下のように図示されています。
構成
ポイント
- VPCをサービスネットワークに関連付けると、ルートテーブルに、サービスネットワーク向けのルートが自動で設定されます
- ターゲットグループがあるVPCはサービスネットワークとは関連付けしません
- サービスネットワーク、ターゲットグループどちらのセキュリティグループでも許可をしないと、関連付けられたVPCから接続できません
- クライアントのリクエスト送信先は、サービスのドメインとなります
- サービスにて設定したリスナールールに従い、ターゲットグループにリクエストをルーティングします
VPC Latticeの注意点
-
Private Linkとの違い
- Private Link:サブネット内に Elastic Network Interface を配置することで機能し、クライアントはネットワークトラフィックを宛先サービスにトンネリングするためにヒットさせます
- VPC Lattice:サービスネットワーク内のエンドポイントをリンクローカルアドレスとして公開することで機能します
→ 送信元VPCと宛先VPCのCIDRが重複していても通信が可能
-
管理/運用通信をターゲットにしたサービスではない
- VPC Latticeはアプリケーション間の通信をサポートするサービスのため、踏み台サーバから各サーバへのSSH/RDPログインや、監視サーバからの監視通信などを目的に利用するサービスではありません。
VPC Latticeのユースケース
公式ドキュメントでは以下のユースケースが示されています。
・サービスを大規模に接続する
ネットワーク構成はシンプルなままに、VPCやアカウント全体で数千のサービスが接続可能です。
インフラをあまり気にせずにVPCやアカウントを接続できるのは便利ですね。
・きめ細かいアクセス許可を適用する
サービス間のセキュリティを強化し、一元化されたアクセスコントロール、認証、およびコンテキスト固有の承認により、ゼロトラストアーキテクチャをサポートします。
サービスネットワークとサービスにそれぞれ、IAMまたは認証ポリシーによる認証を行うことができます。
・高度なトラフィックコントロールを実装する
リクエストレベルのルーティングや、ブルー/グリーンおよび canary デプロイ向けの重み付けされたターゲットなど、きめ細かなトラフィックコントロールを適用します。
サービスの設定における、ルールにて細かいトラフィックコントロールを実現できます。
・サービス間のインタラクションを観察する
リクエストタイプ、トラフィック量、エラー、応答時間などについて、サービス間の通信をモニタリングおよびトラブルシューティングします。
モニタリング設定において、VPC Lattice Service に対するすべてのリクエストと、レスポンスのアクセスログを取得できます。
おわりに
今回は、以下の記事を参考に調査しました。