AWS

VPC内のLambda関数とENIの数は1対1とは限らない話

今回は、VPCに配置したLambda関数とそのENIの数は必ずしも1対1ではないお話をします。

Lambda関数のENIとは?

Lambda関数のENIとは、VPC内に配置したLambda関数のセキュリティグループに紐づくENI(Elastic Network Interface)のことです。

Lambda関数はオプションの機能としてVPC内に配置できます。
公式ドキュメント:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/foundation-networking.htmlhttps://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-vpc.html
※以後、VPCに配置したLambda関数のことを「VPC内Lambda」と表現します。
VPC内Lambdaを作成すると、自動的にENIが1つ作成されます。
このENIは、VPC内Lambda設定時に指定したセキュリティグループに紐づき、Lambdaのネットワークアクセスを実現します。

VPC内LambdaのENIの数は、同時実行数にかかわらず1つです。
ENIが1つなのは、Lambda関数の同時実行によるスケールはAWSが管理しているVPC内で発生し、ユーザのVPCのENIへNATされているためです。
2019年9月2日以前はLambdaの同時実行の数だけENIを作成される仕様だったため、消費IPアドレスの数を気にせず利用できるようになったのはありがたいですね。

引用元:https://aws.amazon.com/jp/blogs/news/announcing-improved-vpc-networking-for-aws-lambda-functions/

Lambda関数とENIは1対1とは限らない

複数のVPC内Lambdaを作成して、それぞれ異なるセキュリティグループを設定した場合、Lambda関数ごとにENIが作成されるため、Lambda関数とENIの数は1対1です。
しかし、複数のVPC内Lambdaを作成して、それぞれ同じセキュリティグループを設定した場合、各Lambda関数で共有されるようにENIが1つだけ作成されます。

Lambda関数のセキュリティグループを変更するとどうなる?

Lambda関数のセキュリティグループを変更すると、古いセキュリティグループに紐づくENIは削除されます。
新しいENIが作成され、新しいセキュリティグループに紐づきます。
※前述のとおり複数のLambda関数が同じセキュリティグループを使用している場合はENIを共有します。
変更前のセキュリティグループを使用しているLambda関数が他にある場合、ENIは削除されません。

参考資料

[発表] Lambda 関数が VPC 環境で改善されます
Lambda 用 VPC ネットワーキング

この記事を通して、少しでもお役に立てれば幸いです。