Open4
ecspressoでVPC Latticeサポートするメモ
aws-sdk-go-v2/service/ecs v1.50.0 で VPC Lattice のサポートが追加されたのでecspressoで対応するためのメモ
blogの通りマネコンからECSサービスでVPC Latticeを関連付けてみる
- task definition で portMappings が最低一個定義されている必要がある
-
portMapping には
Name
が必須- ないとマネコンでECS ServiceにVPC Lattice target groupを追加するときに "port name" が選択できなくて作れない
- でも作成された VPC Lattice target group には port name はない
- ECSサービスの vpcLatticeConfigurations に portName があってそこと一致させる必要がある(マネコンでは隠蔽されている)
- Infrastructure role には ポリシー AmazonECSInfrastructureRolePolicyForVpcLattice をattachする必要がある(はず)
-
portMapping には
ECSマネコンから作成された target group をCLIでみるとこう
$ aws vpc-lattice list-target-groups
{
"items": [
{
"arn": "arn:aws:vpc-lattice:ap-northeast-1:123456789012:targetgroup/tg-009147df264a0bacb",
"createdAt": "2024-11-19T02:24:47.736000+00:00",
"id": "tg-009147df264a0bacb",
"ipAddressType": "IPV4",
"lastUpdatedAt": "2024-11-19T02:24:47.736000+00:00",
"name": "nginx",
"port": 80,
"protocol": "HTTP",
"serviceArns": [],
"status": "ACTIVE",
"type": "IP",
"vpcIdentifier": "vpc-0bd402791d5028205"
}
]
}
マネコンから
- VPC Lattice サービスを作成
- name: ecspresso-test
- 認証なし、リスナー http-80 から default action で作成したtarget groupに転送
- サービスネットワークのと関連付けはここではskip
- VPC Lattice サービスネットワークを作成
- name: ecspresso-test
- サービスの関連付けで作成したサービスを指定
- VPCの関連付けで元々ECSがいるVPCを指定
- セキュリティグループは default (ECSサービスにも付いているもの) を指定
VPC内CloudShellから、VPC Lattice サービスのドメイン名を指定して curl でリクエストしたらECSサービスのnginxに繋がった
$ curl -v http://ecspresso-test-0607b74e99a732e9f.7d67968.vpc-lattice-svcs.ap-northeast-1.on.aws
* Host ecspresso-test-0607b74e99a732e9f.7d67968.vpc-lattice-svcs.ap-northeast-1.on.aws:80 was resolved.
* IPv6: fd00:ec2:80::a9fe:ab01
* IPv4: 169.254.171.1
* Trying 169.254.171.1:80...
* Connected to ecspresso-test-0607b74e99a732e9f.7d67968.vpc-lattice-svcs.ap-northeast-1.on.aws (169.254.171.1) port 80
> GET / HTTP/1.1
> Host: ecspresso-test-0607b74e99a732e9f.7d67968.vpc-lattice-svcs.ap-northeast-1.on.aws
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 200 OK
< server: nginx/1.27.2
< date: Tue, 19 Nov 2024 02:40:54 GMT
< content-type: text/html
< content-length: 615
nginxのログ
2024-11-19T11:42:16.778+09:00 nginx 169.254.171.195 - - [19/Nov/2024:02:42:16 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/8.5.0" "10.3.3.107"
VPC LatticeはECSサービスに関連づけられるが、SDK的には Service にはなく、Deployment のほうにある
deployment単位で設定される VolumeConfiguration などと同じ扱いなので、ecspresso.Service に vpcLatticeConfigurations []types.VpcLatticeConfiguration
を定義して create / update service 時に Input struct に詰めてやる必要がある。describe 時には Deployment から引っ張って埋める commit