VPC Latticeとは
アプリケーションのサービスの接続、保護、モニタリングに使用する、フルマネージド型アプリケーションネットワーキングサービス。
docs.aws.amazon.com
前提
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あたりでやろう。