みなさん、こんにちは。小寺です。
re:Invent 2022でプレビュー版として発表されたAmazon VPC LatticeがGAになりました。
https://aws.amazon.com/about-aws/whats-new/2023/03/general-availability-amazon-vpc-lattice/

Amazon VPC Latticeとは

VPCラティスは、クライアントをVPCに接続させる際、VPCのインフラを抽象化しサービスメッシュを実現するサービスです。
サービス アプリケーション 同士をシンプルかつ安全に接続するためのアプリケーション層のネットワークサービスで、マイクロサービスなどの環境でサービス同士が通信する際に必要となるサービスディスカバリ、リクエストルーティング、ロードバランシング、認証、モニタリング等の機能を簡単に満たしてくれます。

上記の説明では、AWS PrivateLink (プライベート VPC エンドポイントとも呼ばれます) に一見よく似ていますが、大きな違いがあります。

PrivateLink はサブネット内に Elastic Network Interface を配置することで機能し、クライアントはネットワークトラフィックを宛先サービスにトンネリングするためにヒットさせられます。
VPC ラティスはエンドポイントをリンクローカルアドレスとして公開することで機能します。リンクローカル アドレスは通常、クライアントのインスタンス自体で実行されるソフトウェアによってのみアクセス可能です。

VPCラティスのコンポーネントです。


・サービス
特定のタスクまたは機能を提供する、独立してデプロイ可能なソフトウェアの単位。サービスは任意の VPC やアカウントで利用でき、インスタンス、コンテナ、またはサーバーレスコンピューティングで実行可能。
サービスは、AWS Application Load Balancer と同様に、リスナー、ルール、およびターゲットグループで構成される。
・サービスディレクトリ
自ら作成したか、または AWS RAM を通じてアカウントと共有され、VPC Lattice に登録されたすべてサービスディレクトリとして管理できる。
AZのIDを確認する必要はなし。
・サービスネットワーク
利用者が接続を有効にし、サービスのコレクションに共通のポリシーを簡単に適用できるための論理的なグループ化メカニズム。
サービスネットワークは、AWS RAM を使用してアカウント間で共有し、VPC に関連付け、サービスのグループへの接続を有効にすることができる。
・認証ポリシー
認証ポリシーは、アクセスコントロールを定義するためにサービスネットワークおよび個々のサービスに関連付けることができるIAMが使えます。
認証ポリシーは IAM を使用し、ユーザーはリッチなプリンシパル-アクション-リソース-条件 (PARC) スタイルの質問を指定して、VPC Lattice サービスでコンテキスト固有の認証を強制利用させることができます。
通常の使い方としては、「自分の組織 ID 内で認証されたリクエストのみを許可する」などの粒度としては、粗めの認証ポリシーを適用しておき、サービスレベルでよりきめ細かいポリシーの適用が推奨とされています。

Amazon VPC Latticeのユースケース

例えば注文サービスを例にとってみます。

VPC に接続されたLambda 関数で実行されるものとします。図のすべてのVPCはサービス ネットワークに関連付けられているため、注文サービスは、他のサービス (Inventory、Delivery、および Payment) が別の AWS アカウントにデプロイされてる場合や、IP アドレスが重複する VPC にデプロイされている場合でも、これらのサービスを呼び出すことができます。

他にはどのようなユースケースに対応している?

・サービスを大規模に接続する
ネットワーク構成をシンプルなままで、VPC やアカウント全体で数千のサービスが接続可能です。
・きめ細かいアクセス許可が適用できる
サービス間のセキュリティを強化し、一元化されたアクセスコントロール、認証、およびコンテキスト固有の承認により、ゼロトラストアーキテクチャをサポートします。
・高度なトラフィックコントロールを実装可能
リクエストレベルのルーティングや、ブルー/グリーンおよび canary デプロイ向けの重み付けされたターゲットなど、きめ細かなトラフィックコントロールを適用します。
・サービス間のインタラクションがモニタリング可能
リクエストタイプ、トラフィック量、エラー、応答時間などについて、サービス間の通信をモニタリングおよびトラブルシューティングができます。

Amazon VPC Latticeを使ってみる

(1)VPC Lattiveコンソールからサービスを起動してみます。東京リージョンを選んで、日本語表示にしていると「VPC格子」って表示がされています。

(2)まずは「Getting Started」をクリックします。

(3)「Create a service network」をクリックします。

(4)サービスネットワークを作成画面では、任意のサービスネットワーク名を入力します。

(5)「Service associations」(サービス関連付け)で、VPC Latticeサービスの新規作成をします。「Amazon VPC Latticeサービスを作成」リンクをクリックして作成画面を開きます。

(6)サービス作成画面では任意のサービス名を入力します。

(7)カスタムドメインとサービスアクセスは、今回はデフォルト設定のままにします。

(8)モニタリングも設定なしで「Next」(次へ)をクリックします。

(9)ルーティング定義は別画面で設定するため、本画面ではスキップし、「Next」(次へ)をクリックします。

(10)ネットワークの関連付けも同様に、本画面ではスキップし、「Next」(次へ)をクリックします。

(11)次画面で設定内容を確認し、「Create VPC Lattice service」をクリックします。

(12)VPC Latticeサービスの作成完了後、「VPCの関連付けを追加」をクリックします。

(13)VPC Latticeターゲットグループとリスナーの追加をしてみます。
「Create Target Group」をクリックします。

(14)ターゲット先としては「ALB」を選びます。

(15)ルーティング先を選びます。

(16)ALB作っていなかったので、とりあえずは後で作成にします。

セットアップとしては完了です。
後はLattice経由で接続を試してみるだけです。

料金

VPC Lattice の料金モデルは PrivateLink の料金モデルとは異なり、全体的なコストは高めです。
北バージニアリージョンの場合、PrivateLink サービスの料金は、アベイラビリティ ゾーンごとに 1 時間あたり 0.01 USD に加えて、ボリューム ディスカウントで 1 GB あたり 0.01 USD です。
同じリージョンの場合、VPC Lattice サービスの料金は、AZ に関係なく 1 時間あたり 0.025 USD、さらにボリューム ディスカウントなしで 1 GB あたり 0.025 USD、さらに 100 万リクエストあたり 0.10 USD (1 時間あたり最初の 30 万リクエストは無料) です。
正式な料金についてはこちらからご確認をお願いします。

対象リージョン

プレビュー版はオレゴンリージョンのみでしたが、GA時点では以下のリージョンで利用が可能です。
・米国東部 (オハイオ)
・米国東部 (バージニア北部)
・米国西部 (オレゴン)
・アジア パシフィック (シンガポール)
・アジア パシフィック (シドニー)
・アジア パシフィック (東京)
・ヨーロッパ(アイルランド)

東京リージョンでも使えるの嬉しいですね。

やっぱりVPC Laticeのベストプラクティスまとめ

やはり、開発者がインフラのことをあまり気にせずL7の世界だけでサービス間の通信を自在に活用することができるようになります。
PrivateLinkと比較すると、PrivateLinkの方が価格感としては手ごろで、すでに広く普及していますが、開発者ががこの新しいLaticeを活用することで、セキュリティ面も改善になりますよね。
ネットワーク エンジニアの負荷を軽減するサービスとして活用されていくのではないかと思います。