あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

【AWS】VPC Latticeを使ってみた


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あたりでやろう。