VPC Lattice は当初L7(HTTP/HTTPS/gRPC)用ルーティングをサポートした状態でリリースされましたが、その後リソースおよびリソースゲートウェイという機能がリリースされ、L4にも対応しています。ALBとNLBが合体したようなサービス、というのは言い過ぎでしょうか。この記事ではそれを見ていきます。
まずは言葉の整理から:リソースとリソースゲートウェイ
リソース:TCP/UDPの通信を受け付けるターゲットです。L7でいうターゲットグループに相当します
リソースゲートウェイ:複数のリソースがアタッチされるロードバランサー的存在。リクエスタからのリクエストを受け付ける。
また前回の記事でVPCをまたぐL7通信を実現した際には特にVPCEndPointを作成しませんでしたが、L4通信を出すリクエスタがVPC内部に存在する場合はVPC Lattice専用VPCエンドポイントを作成する必要がります。
リクエスタ→VPC Lattice サービスエンドポイント → リソース → リソースゲートウェイ → ターゲットとなります。
今日はVPC Lattice その2:2つの異なるVPCの接続 で使った2つのVPCを用いてTCP通信を実現させます。
レスポンダの作成
通信を受け付けるEC2をVPC B に作成します。
sudo yum install nmap-ncat
でncatをインストールした後以下のコマンドを実行しポート12345で待ち受けておきます。
ncat -l -p 12345
リクエスタの作成
次はリクエスタです。VPC A に同じくncatをインストールします。
sudo yum install nmap-ncat
この時VPC A と B はVPC Peeringなどで接続されていないことを確認しておきます。
VPC Lattice サービスネットワークの作成
VPC Latticeを使う場合、なにはなくともサービスネットワークが必要です。

全てデフォルトのまま何も関連付けず作成します。リクエスタ、レスポンダ双方が存在しているVPCも関連づけません。
リソースゲートウェイの作成
過去の手順ではサービスネットワークにはサービスを設定しました。そしてサービスはターゲットグループが設定されていました。L4の場合はリソースゲートウェイとリソースをサービスネットワークに関連付けます。
まずはリソースゲートウェイを作成します。

リソースゲートウェイはレスポンダ側に必要となりますのでVPC Bに作成します。

リソースの作成
つぎにリソースゲートウェイにぶら下げるリソースを作成します。


レスポンダのIPアドレスとポート12345を指定します。

あとはそのままで`リソース設定を作成`をクリックします。
サービスネットワークへリソースの関連付け


無事リソースが関連付けられました。

以下の通りリソースそのものにもDNS名が付与されていますが、これはリソースゲートウェイがあるVPC B側でのみ名前解決が可能です。このリソースにVPC AからアクセスするにはLattice専用VPCエンドポイントを作成する必要があります。

Latticeサービスエンドポイントの作成

サービスネットワークを選択します。
Latticeサービスネットワークを選択しVPC Aを指定します。

DNS名を有効化し、リクエストが存在しているAZを指定します。


エンドポイントを作成をクリックします。しばらく待つとサービスネットワークに無事エンドポイントが認識されます。

テスト
エンドポイントの詳細画面、関連付けタブを確認するとものすごい長いDNS名が作成されています。

以下のコマンドをリクエスタ側で実行してください。
echo "hello" | ncat vpce-02542d2614201ca36-snra-08de7e04565c78210.rcfg-0247af7ba6fe2359a.4232ccc.vpc-lattice-rsc.ap-northeast-1.on.aws 12345
レスポンダ側でhelloを受信すれば成功です。