本ページは、AWS に関する個人の勉強および勉強会で使用することを目的に、AWS ドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。
最新の情報については、AWS 公式ドキュメントをご参照ください。
Amazon VPC Lattice は、VPCやアカウントをまたいでサービス間の通信を簡単に接続・保護・監視できるアプリケーションネットワーキングサービスです。マイクロサービスやサービス指向アーキテクチャを採用する場合に、基盤となるインフラストラクチャやネットワーク接続を意識することなく、サービス同士を接続できるようになります。

主要コンポーネントには次のようなものがあります。
1.1. 公式ドキュメント
Amazon VPC Latticeを理解する公式ドキュメントは次のとおりです。
Amazon VPC Lattice サービス概要
Amazon VPC Lattice ドキュメント
Amazon VPC Lattice よくある質問
Amazon VPC Lattice の料金
1.2. 学習リソース
【AWS Black Belt Online Seminar】PrivateLink and Lattice - Amazon VPC Lattice Service 編(YouTube)(0:36:17) | PDF

Amazon VPC Lattice × EKS で実現するアプリケーションネットワーキング(PDF)
Amazon VPC Lattice: エンタープライズネットワークアーキテクチャをモダン化し、簡素化する(Amazon Web Services ブログ)
1.3. ワークショップ
Amazon VPC Lattice ワークショップ - AWS が提供する VPC Lattice ハンズオン形式のワークショップです。
- 所要時間の目安: 4 時間
- 学習目標: Amazon VPC Lattice の主要概念の紹介

1.4. 既存サービスとの違い
VPC Lattice以外のVPC間接続サービスは次のようなものがあります。
- VPC Peering: 単純なVPC間の接続
- Transit Gateway: 複数VPCやオンプレミスとの接続


これらのサービスは、ネットワークレイヤー(L3)での接続に焦点を当てているのに対し、VPC Latticeはアプリケーションレベル(L7)のサービス接続と管理に重点を置いています。
特定のリソースを接続するサービスには次のようなものがあります。
PrivateLinkは、VPC Latticeと共通する部分が多いですが、目的と機能が異なります。 PrivateLinkは、サービスプロバイダーがサービスをプライベートに公開するなどのシナリオに適しています。一方、VPC Latticeは、マイクロサービスアーキテクチャでの複数サービス間の接続管理に適しています。
1.5. 導入のメリット
Amazon VPC Latticeを導入する主なメリットは以下の3つです。
- 接続の簡素化: VPCやアカウントをまたいだサービス間の接続を自動化し、基盤となるネットワークインフラを抽象化します。
- セキュリティの向上: 認証・認可ポリシーを一元管理でき、サービスレベルでのきめ細かいアクセス制御を実現します。
- 運用監視の統一: サービス間通信の監視、ログ記録、トラブルシューティングを一元的に管理できます。
1.6. 主なユースケース
- マイクロサービスアーキテクチャの接続管理: 多数のマイクロサービス間の通信を効率的に管理し、サービスメッシュのような機能を提供します。

- クロスアカウントサービス連携: 複数のAWSアカウントにまたがるサービスを安全に接続し、マルチアカウント戦略を促進します。
- ハイブリッドワークロードの統合: EC2インスタンス、コンテナ、Lambda関数などの異なるコンピューティングリソース間の通信を統一的に管理します。
- TCPベースのサービス連携: HTTPだけでなく、TCPベースの通信も含めた幅広いサービスの接続を可能にします。

参考:Amazon Web Services ブログ>Amazon VPC Lattice: エンタープライズネットワークアーキテクチャをモダン化し、簡素化する
Amazon VPC Latticeは、いくつかの主要コンポーネントから構成されており、これらが連携してサービス間の通信を実現します。

2.1. サービスネットワーク
サービスネットワークは、VPC Latticeの中核となる概念で、サービスとVPCの関連付けを管理する論理的なコンテナです。
- 定義: サービスディスカバリーと接続性を提供する論理的なグループで、サービスとVPCを関連付けます
- 機能
- 複数のサービスを1つのネットワークに関連付け可能
- 複数のVPCをサービスネットワークに関連付け可能
- クロスアカウント共有をサポート(AWS RAM経由)
- 制限
- リージョンごとのアカウントあたり最大10個のサービスネットワーク
- サービスネットワークごとに最大500個のVPCアソシエーション
- サービスネットワークごとに最大500個のサービスアソシエーション
2.2. サービス
VPC Lattice内のサービスは、アプリケーションのエンドポイントを表現し、クライアントがリクエストを送信する対象となります。
- 定義: Lattice内の個々のサービスエンドポイントを表し、リスナーとルートを含みます
- 特徴
- 各サービスには一意のDNS名が割り当てられる
- デフォルトは、
service_name-service_id.partition_id.vpc-lattice-svcs.region.on.aws
- カスタムドメイン名の設定が可能
- サービスはHTTP、HTTPS、gRPC、TCPプロトコルをサポート
- VPC Lattice では WebSocket はサポートされていません。
- 認証ポリシーとアクセスコントロールルールを設定可能
- 作成方法
- コンソール、CLI、API、CloudFormation、CDKから作成可能
2.3. ターゲットグループ
ターゲットグループは、リクエストを処理する実際のバックエンドリソースを定義します。
- 定義: トラフィックをルーティングする宛先となるリソースのグループ
- タイプ
- インスタンス: EC2インスタンス
- IP: IPアドレス(VPC内またはオンプレミス)
- Lambda: Lambda関数
- ALB: Application Load Balancer
- ヘルスチェック: 設定可能なヘルスチェックによりターゲットの健全性を監視
- 重み付けルーティング: 各ターゲットに重み付けを設定可能
2.4. リスナーとルール
リスナーとルールは、トラフィックの受信とリクエストのルーティングを担当します。
- リスナー
- 指定したポートとプロトコル(HTTP/HTTPS/gRPC/TCP)でトラフィックを待ち受ける
- 複数のリスナーを1つのサービスに設定可能
- TLS証明書の管理(ACMと統合)
- ルール
- HTTPベースプロトコル(HTTP/HTTPS/gRPC)の場合:
- パスベースルーティング
- ヘッダーベースルーティング
- メソッドベースルーティング
- TCPの場合は単純なフォワーディング
- 優先度を設定してルーティングの順序を制御可能
2.5. 認証と認可
VPC Latticeは、サービスへのアクセスを制御するための認証と認可の仕組みを提供します。
- 認証ポリシー
- AWS IAMベースの認証をサポート
- 相互TLS(mTLS)による認証
- 匿名アクセスの許可も可能
- 認可ポリシー
- リソースベースのポリシー(JSON形式)
- きめ細かいアクセス制御(サービスレベル、操作レベル)
- プリンシパル(IAMユーザー、ロール、AWSアカウント)単位でのアクセス制限
- タグベースの条件付きアクセス制御
3.1. クロスアカウント接続
VPC Latticeはマルチアカウント環境において、アカウントをまたいだサービスの接続をシームレスに実現します。
- AWS RAM (Resource Access Manager)との統合
- サービスネットワークをアカウント間で共有可能
- サービスを別アカウントのサービスネットワークに関連付け可能
- 接続フロー
- サービスネットワークの所有者がAWS RAMを使用して他アカウントとネットワークを共有
- 共有先アカウントはVPCをそのサービスネットワークに関連付け
- サービス所有者はサービスを同じネットワークに関連付け
- クライアントアカウントのVPC内のリソースはサービスを利用可能に
- セキュリティ考慮事項
- 共有されたリソースへのアクセス権限は、認証・認可ポリシーで詳細に制御可能
- 組織単位(OU)単位でのリソース共有が可能
3.2. サービスディスカバリー
VPC Latticeはサービスディスカバリー機能を提供し、クライアントが利用可能なサービスを簡単に特定できるようにします。
- 自動DNS登録
- 各サービスに一意のDNS名を自動的に割り当て
- 形式:
.
- プライベートDNSゾーンとの統合
- サービスディレクトリ
- サービスネットワークに関連付けられたサービスの一覧をクエリ可能
- API、AWS CLIでのリスト取得サポート
- サービスのメタデータ(タグなど)を含む情報の取得
- DNS設定オプション
- Route 53プライベートホストゾーンとの連携
- カスタムドメイン名のサポート
- 複数のエイリアスレコードによるアクセス
3.3. TCPワークロードのサポート
VPC LatticeはHTTPベースのプロトコルに加えて、TCPベースのワークロードもサポートしています。
- TCP接続の利点
- レイヤー4(トランスポート層)レベルでの接続
- プロトコルに依存しない通信が必要なアプリケーションに適合
- 既存のTCPベースのシステムを容易に統合可能
- 主なTCPリソース
- RDS
- 任意のTCPサービス(カスタムアプリケーションなど)
- 制限事項
- TCPトラフィックではコンテンツベースのルーティングは利用不可
- TCPリスナーはシンプルなフォワーディングのみ
- HTTP/HTTPSと比較して高度なルーティング機能は制限される
4.1. コスト管理
VPC Latticeのコスト構造を理解し、効率的に管理するためのポイントです。
- 料金体系
- 処理時間: サービスリクエストの処理時間に対する課金
- データ転送: サービス間で転送されるデータ量に対する課金
- サービス時間: サービスとVPCの関連付けに対する課金
- コスト最適化の戦略
- 不要なサービスネットワークの関連付けを削除
- キャッシング戦略の実装によるリクエスト数削減
- CloudWatchメトリクスを活用したコスト監視
- リザーブドインスタンスやSavings Planの活用(バックエンドリソース向け)
4.2. モニタリング
VPC Latticeは、サービス間通信の監視とトラブルシューティングのための包括的なモニタリング機能を提供します。
- CloudWatch統合
- サービスメトリクス: リクエスト数、レイテンシー、エラー率
- ディメンション別の分析: サービス、VPC、ターゲットグループ
- カスタムダッシュボードの作成方法
- ログ記録
- アクセスログの設定(CloudWatch Logs、S3、Firehoseへの配信)
- ログフォーマットとフィールド
- ログの分析とクエリ
- 分散トレーシング
- AWS X-Rayとの統合
- サービス間依存関係の可視化
- パフォーマンスボトルネックの特定
- アラートとアクション
- CloudWatchアラームの設定
- SNSとの連携による通知
- 自動修復アクションの実装
4.3. セキュリティ
VPC Latticeでのセキュリティ強化のためのベストプラクティスです。
- ネットワークセキュリティ
- 最小権限の原則に基づく設計
- セキュリティグループとNACLの適切な設定
- VPCエンドポイントポリシーの活用
- 認証と認可
- IAMポリシーの詳細設定
- 相互TLS(mTLS)の実装手順
- リソースポリシーの定期的な監査
- 暗号化
- 転送中のデータ暗号化(TLSの強制)
- ACM証明書
- コンプライアンス
- AWSコンプライアンスプログラムの活用
- リソースのタグ付けと監査
- セキュリティイベントの記録と追跡
Amazon VPC Latticeは、マイクロサービスやサービス指向アーキテクチャを採用する組織にとって、サービス間通信を簡素化し、セキュアにするための強力なソリューションです。
主要なポイント
- VPC Latticeはアプリケーションネットワーキングサービスとして、サービス間の接続、保護、監視を一元管理
- サービスネットワーク、サービス、ターゲットグループ、リスナー、ルートという主要コンポーネントで構成
- クロスアカウント、クロスVPC接続を簡素化し、サービスディスカバリーをネイティブサポート
- HTTPSだけでなく、TCPベースのワークロードもサポート
- CloudWatchとの統合による包括的なモニタリングと可観測性を実現
- 適切なIAMポリシーと認証メカニズムによるセキュリティの確保