Serverless Operations, inc

>_cd /blog/id_tze6t5bt7

title

VPC Lattice その2:2つの異なるVPCの接続

summary

Amazon VPC Lattice は、アプリケーションのサービスとリソースの接続、保護、モニタリングに使用するフルマネージド型のアプリケーションネットワークサービスです。この連載記事ではVPC Latticeの機能を1個ずつ見ていきます

前回の記事では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経由でアクセスが可能であることがわかります。

Written by
編集部

亀田 治伸

Kameda Harunobu

  • Facebook->
  • X->
  • GitHub->

Share

Facebook->X->
Back
to list
<-