📑

VPC Lattice その4:リソースとリソースゲートウェイ - L4のルーティング

に公開

この記事は
https://serverless.co.jp/blog/h5e5dkl4pgrm/
へ投稿したものを加筆再構成したものです。

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通信を実現させます。
https://zenn.dev/kameoncloud/articles/8c5e68668f1013

さっそくやってみる

レスポンダの作成

通信を受け付ける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を受信すれば成功です。

Discussion