この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、岩城です。
以下のようなコマンドからVPC Lambdaの一覧を取得したところ、VPCIDが表示されるもの、Noneが表示されるもの、何も表示されない結果が返ってきました。 なぜこのような結果の違いになるのか調べたの共有します。
$ aws lambda list-functions --query 'Functions[].{FunctionName:FunctionName,VPCID:VpcConfig.VpcId}' --output table
---------------------------------------------------------------------
| ListFunctions |
+-----------------------------------------+-------------------------+
| FunctionName | VPCID |
+-----------------------------------------+-------------------------+
| test-function-1 | vpc-xxxxxxxxxxxxxxxxx |
| test-function-2 | None |
| test-function-3 | |
+-----------------------------------------+-------------------------+
結論
まずは結論です。
- VPCIDが表示される
- VPC Lambdaであることを示す
VpcConfig
にVPCやサブネットなどの情報が記録されている
- None表示される
- VPC Lambdaではないことを示す
- 過去に一度でもVPC Lambdaとして設定したことがなく、
VpcConfig
パラメーターが存在しない
- 何も表示されない
- VPC Lambdaではないことを示す
- 過去に一度でもVPC Lambdaとして設定したことがあり、
VpcConfig
パラメーターが存在する
確認してみた
VPCIDが表示されるパターン
VpcConfig
を確認するとサブネットIDやVPCIDが記録されていますので、VPC Lambdaであることがわかります。
$ aws lambda get-function --function-name vpcconfig-test-1
{
"Configuration": {
"FunctionName": "vpcconfig-test-1",
"FunctionArn": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:vpcconfig-test-1",
"Runtime": "nodejs16.x",
"Role": "arn:aws:iam::xxxxxxxxxxxx:role/service-role/vpcconfig-test-role-avjihgst",
"Handler": "index.handler",
"CodeSize": 304,
"Description": "",
"Timeout": 3,
"MemorySize": 128,
"LastModified": "2022-05-31T07:50:40.000+0000",
"CodeSha256": "BoZeaw/DbJn9WCuwWo55uYOBIKfOwod6Mg372ZVNbSI=",
"Version": "$LATEST",
"VpcConfig": {
"SubnetIds": [
"subnet-0e631f5d739936811",
"subnet-08a27acc1efdceff9"
],
"SecurityGroupIds": [
"sg-06e39c4a3dc758c77"
],
"VpcId": "vpc-0a7d3950c035d3947"
},
"TracingConfig": {
"Mode": "PassThrough"
},
"RevisionId": "7ac91128-6861-4352-9f87-df6dd5f98172",
"State": "Active",
"LastUpdateStatus": "InProgress",
"LastUpdateStatusReason": "The function is being created.",
"LastUpdateStatusReasonCode": "Creating",
"PackageType": "Zip",
"Architectures": [
"x86_64"
]
}
}
Noneが表示されるパターン
非VPC Lambdaで関数を新規作成した時点では、VpcConfig
は存在しません。当然ですがVPC Lambdaではありません。
$ aws lambda get-function --function-name vpcconfig-test-2
{
"Configuration": {
"FunctionName": "vpcconfig-test-2",
"FunctionArn": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:vpcconfig-test-2",
"Runtime": "nodejs16.x",
"Role": "arn:aws:iam::xxxxxxxxxxxx:role/service-role/vpcconfig-test-2-role-jjufgkdn",
"Handler": "index.handler",
"CodeSize": 304,
"Description": "",
"Timeout": 3,
"MemorySize": 128,
"LastModified": "2022-05-31T07:41:53.140+0000",
"CodeSha256": "BoZeaw/DbJn9WCuwWo55uYOBIKfOwod6Mg372ZVNbSI=",
"Version": "$LATEST",
"TracingConfig": {
"Mode": "PassThrough"
},
"RevisionId": "ffbb1f9c-97a1-419e-b94d-53efa1ad42c2",
"State": "Active",
"LastUpdateStatus": "Successful",
"PackageType": "Zip",
"Architectures": [
"x86_64"
]
}
}
何も表示されないパターン
一度VPC Lambdaに設定した後に非VPC Lambdaに設定変更した場合、VpcConfig
は存在しますが中身は空となります。
$ aws lambda get-function --function-name vpcconfig-test-3
{
"Configuration": {
"FunctionName": "vpcconfig-test-3",
"FunctionArn": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:vpcconfig-test-3",
"Runtime": "nodejs16.x",
"Role": "arn:aws:iam::xxxxxxxxxxxx:role/service-role/vpcconfig-test-role-avjihgst",
"Handler": "index.handler",
"CodeSize": 304,
"Description": "",
"Timeout": 3,
"MemorySize": 128,
"LastModified": "2022-05-31T07:48:44.000+0000",
"CodeSha256": "BoZeaw/DbJn9WCuwWo55uYOBIKfOwod6Mg372ZVNbSI=",
"Version": "$LATEST",
"VpcConfig": {
"SubnetIds": [],
"SecurityGroupIds": [],
"VpcId": ""
},
"TracingConfig": {
"Mode": "PassThrough"
},
"RevisionId": "ac2861ee-eb8c-4fe3-b493-73731de431c2",
"State": "Active",
"LastUpdateStatus": "InProgress",
"LastUpdateStatusReason": "The function is being created.",
"LastUpdateStatusReasonCode": "Creating",
"PackageType": "Zip",
"Architectures": [
"x86_64"
]
}
}
おわりに
分かってしまえば簡単なことでしたが、また一つ疑問が解消されたので良かったです。
本エントリがどなたかのお役に立てれば幸いです。