前回の記事ではVPC Latticeを使用してVPC1個とLambda関数1個を関連付けを行い、EC2からLattice経由でLambdaへの接続を行いました。
今日はターゲットを別VPCのEC2/HTTP/80として接続を行います。
1. 2つのVPC作成
以下2つのVPCを作成します。
VPC A: 10.0.0.0/16

VPC B: 10.1.0.0/16

いずれもシンプルに一つのPublicサブネットのみです。
2. 2つのEC2の起動とWebサーバ起動
VPC A にクライアントとなるEC2(A)、VPC B にWebサーバとなるEC2(B)を起動します。
EC2(A)はSSHかインスタンスコネクトでシェル接続出来ればそれでOKです。
EC2(B)には以下のコマンドで nginxを起動しておきます。
sudo dnf install nginx
sudo service nginx start
EC2インスタンスのPublicIPでブラウザからアクセスできればOKです。

EC2(A)からLattice経由でEC2(B)へアクセスさせることが目的です。
3. Lattice サービスネットワークの作成
VPCマネージメントコンソール左ペインから、サービスネットワークをクリックします。

サービスネットワークを作成 をクリックします。

適当な名前を付けVPCの関連付けをクリックします。

2つのVPCを関連付けます。


セキュリティグループで通信を制御できます。例えばHTTP/80のみを通す、などです。もちろんVPCA側のインバウンド、アウトバウンド、VPCB側のインバウンド、アウトバウンド、それぞれ異なるルールを設定できます。
後はデフォルトのままサービスネットワークを作成をクリックします。

無事VPCが2つ関連付けられたLatticeサービスネットワークが出来上がりました。

4. ターゲットグループの作成
Latticeサービスネットワークは、Latticeサービスのエンドポイント経由で通信をルーティングします。Latticeサービスはターゲットグループをもとにルーティングを判断します。
この辺りは慣れるまでは少しややこしいかもしれませんが、以下の関係性と似ています。
VPC : Lattice サービスネットワーク
ALB:Latticeサービス
ターゲットグループ:ターゲットグループ
ターゲットグループをクリックします。

ターゲットグループの作成をクリックします。

前回の記事ではLambda関数を選択しましたが、今回はインスタンスを選択します。

適当な名前を付けます。プロトコルはHTTPSではなくHTTPです。

VPCBを選択します。

テスト用ですから、ヘルスチェックはオフにして次へをクリックします。

次の画面でリクエストをルーティングさせるEC2を指定します。

次のステップを少しややこしいのですが、保留中として以下を含めるをクリックします。

そうすると先ほど選択したEC2が登録されます。

最後にターゲットグループの作成をクリックします。

ターゲットが登録済のターゲットグループができました。


5. Latticeサービスの設定
ではいよいよLatticeサービスにターゲットグループを登録します。
Latticeサービスをクリックします。

サービスを作成をクリックします。

適当な名前を付けて次へをクリックします。

リスナーの追加をクリックします。

プロトコルとポートを指定します。

ルールを追加するをクリックします。

適当な名前を付けGET条件を指定します。

ルールアクションで先ほど作成したターゲットグループを指定し、ルールを追加する、をクリックします。

次にデフォルトアクションを404に次へをクリックします。これによりGET以外は404が戻ります。

Latticeサービスネットワークにいま作成中のLatticeサービスを関連付け、次へをクリックします。

VPC Lattice サービスを作成、をクリックします。

エンドポイント(ドメイン名)が作成されました。

6. テスト
EC2(A)で以下のコマンドを実行すればResponseがあるはずです。
curl service-0355aacaa5b5af816.7d67968.vpc-lattice-svcs.ap-northeast-1.on.aws
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
以下の様にPOSTを行えば404(Not Found)となります。
curl http://service-0355aacaa5b5af816.7d67968.vpc-lattice-svcs.ap-northeast-1.on.aws -d "username=user1"
Not Found
ではこの状態で最後にEC2(B)からパブリックIPを外します。引き続きLattice経由でアクセスが可能であることがわかります。
