【AWS】VPC Latticeを使ってみた

VPC Latticeとは
アプリケーションのサービスの接続、保護、モニタリングに使用する、フルマネージド型アプリケーションネットワーキングサービス。
docs.aws.amazon.com
やること
とりあえず、VPC Latticeを立てて動作を確認してみる
前提
EC2がすでに作成されていること
※まだの場合、下記を参考に作成する。
amegaeru.hatenablog.jp
実践!
1.Lambda関数作成
1-1.AWS - Lambda - 関数

1-2.「関数の作成」

1-3.下記を入力
関数名:VPC_Lattice_Test_Lambda
ランタイム:Python3.13
アーキテクチャ:x86_64

1-4.「関数の作成」

1-5.コードに下記を入力
def lambda_handler(event, context): return { 'statusCode': 200, 'body': 'OK', 'headers': { 'Content-Type': 'text/plain' } }

1-6.「Deploy」

2.VPC Lattice作成
2-1.サービスネットワーク作成
2-1ー1.AWS - VPC
2-1-2.左ペインから「VPC Lattice」-「開始方法」

2ー1-3.「サービスネットワークを作成する」

2ー1-4.サービスネットワーク名に「lattice-test-network」と入力、それ以外はデフォルト
※3~63 文字で、先頭と末尾は文字または数字である必要があります。小文字、数字、ハイフンのみ使用可



2ー1-5.「サービスネットワークを作成」
![]()
2-2.サービス作成
2-2-1.左ペインから「VPC Lattice」-「サービス」

2-2-2.「サービスを作成」

2-2-3.サービス名に「lambda-backend-service」と入力、それ以外はデフォルト



2-2-4.「次へ」
![]()
2-2-5.「次へ」

2-2-6.サービスネットワークの関連付けで、先ほど作成したサービスネットワークを選択

2-2-7.「次へ」
![]()
2-2-8.「VPC Lattice サービスを作成」

2-3.ターゲットグループ作成
2-3-1.左ペインから「VPC Lattice」-「ターゲットグループ」

2-3-2.「ターゲットグループの作成」

2-3-3.下記を選択
ターゲットタイプの選択:Lambda 関数
ターゲットグループ名:lambda-target-group


2-3-4.「次へ」
![]()
2-3-5.先ほど作成したLambda関数を選択

2-3-6.「ターゲットグループの作成」
![]()
2-4.サービスのルーティング設定
2-4-1.先ほど作成したサービスへ移動し、ルーティングタブを開く

2-4-2.「リスナーの追加」

2-4-3.下記を入力
リスナー名としてプロトコルとポートを使用する:✅
プロトコル:HTTP
ポート:80
デフォルトアクション:ターゲットグループへ転送します
ターゲットグループ:lambda-target-group
重み:1


2-4-4.「追加」
![]()
2-5.サービスネットワークにVPCを関連付け
2-5-1.AWS - VPC
2-5-2.左ペインから「VPC Lattice」-「サービスネットワーク」

2-5-3.先ほど作成したサービスネットワークを選択

2-5-3.「VPCの関連付け」タブ

2-5-4.「VPCの関連付けを作成」

2-5-5.「VPCの関連付け追加」

2-5-6.下記を選択
VPC:EC2が存在しているVPC
セキュリティグループ:インバウンドで80番が空いているセキュリティグループ

2-5-7.「変更内容の保存」

2-6.セキュリティ設定
2-6-1.AWS - VPC
2-6-2.左ペインから「VPC Lattice」-「サービスネットワーク」

2-6-3.「アクセス」タブ

2-6-4.「アクセス設定を編集」

2-6-5.認証ポリシーに下記を入力
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "vpc-lattice-svcs:Invoke", "Resource": "*" } ] }

2-6-6.「設定内容の保存」
![]()
3.接続確認
3-1.接続ドメイン確認
3-1-1.AWS - VPC
3-1-2.VPC Lattice - サービス

3-1-3.作成したサービスを選択

3-1-3.ドメイン名を確認

3-2.EC2から下記を実行し、200 OKが返ってくることを確認
> curl -v http://<接続ドメイン>
sh-5.2$ curl -v http://lambda-backend-service-0e41ee0d6c9b6f910.7d67968.vpc-lattice-svcs.ap-northeast-1.on.aws * Host lambda-backend-service-0e41ee0d6c9b6f910.7d67968.vpc-lattice-svcs.ap-northeast-1.on.aws:80 was resolved. * IPv6: fd00:ec2:80::a9fe:ab61 * IPv4: 169.254.171.97 * Trying 169.254.171.97:80... * Connected to lambda-backend-service-0e41ee0d6c9b6f910.7d67968.vpc-lattice-svcs.ap-northeast-1.on.aws (169.254.171.97) port 80 > GET / HTTP/1.1 > Host: lambda-backend-service-0e41ee0d6c9b6f910.7d67968.vpc-lattice-svcs.ap-northeast-1.on.aws > User-Agent: curl/8.5.0 > Accept: */* > < HTTP/1.1 200 OK < date: Tue, 26 Nov 2024 11:26:38 GMT < content-length: 2 < x-amzn-requestid: ecf13e4b-2f45-4124-8b04-6a55a0c5197c < x-amzn-remapped-content-length: 0 < x-amz-executed-version: $LATEST < x-amzn-trace-id: Root=1-6745b06e-53857c7e4a9803ff3b5f60d4;Parent=6f7f9a5decbdfe4a;Sampled=0;Lineage=1:36cc46cd:0 < content-type: text/plain < * Connection #0 to host lambda-backend-service-0e41ee0d6c9b6f910.7d67968.vpc-lattice-svcs.ap-northeast-1.on.aws left intact
感想
今回はLambdaでやったのでALBと変わらない気がした、、、次はECSあたりでやろう。