Closed7

Lambdaが作成したENIをデタッチ・削除できない

Gekitenius.YGekitenius.Y

Amazon Virtual Private Cloud (Amazon VPC) のリソースにアクセスするように Lambda 関数を設定すると、Lambda は関数をネットワークインターフェイスに割り当てます。

ネットワークインターフェイスが表すリソースを削除すると、Lambda はネットワークインターフェイスをデタッチおよび削除します。使用されていないネットワークインターフェイスを削除するために、Lambda サービスはネットワークインターフェイスを作成した関数の実行ロールを使用します。

なるほど。
RDSにアクセスするLambdaを作ったから自動で作成されてたのね。

Gekitenius.YGekitenius.Y

今回削除しようとしているのはアカウントのVPC内リソースにアクセスするLambda、によって生成されたENI。

その削除できないENIを見てみるとサブネット単位で作成されてるのがわかる。

Gekitenius.YGekitenius.Y

ここまで調べてみて
「LambdaがサブネットごとにENIを設置してよしなにアクセスコントロールしてる」
「(アカウントの)VPC内リソースにアクセスするLambdaがある以上は消さなくても良さげ」
みたいなことは分かってきた気がします。

LambdaがENIを自動生成する仕組みが気になるので、もう少し深堀りしてみる。

いつものクラスメソッドさん、数年前にアプデがあったみたい。
https://dev.classmethod.jp/articles/announced-vpclambda-improved/

公式のアプデノート。
https://aws.amazon.com/jp/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/

Gekitenius.YGekitenius.Y

なるほどね、、

こうなってたのが、

こうしたくて、

それでこいつらが生成されてたわけだ。
名前をHyperplane ENI言うらしい、かっこいい

初めの方に書いたとおり、使われなくなったら自動削除されますよと。

ネットワークインターフェイスが表すリソースを削除すると、Lambda はネットワークインターフェイスをデタッチおよび削除します。使用されていないネットワークインターフェイスを削除するために、Lambda サービスはネットワークインターフェイスを作成した関数の実行ロールを使用します。

今回はLambda関数まで消す予定はないので、このENIもそのまま残すことになるか。
大体の仕組みがわかったので良しとしよう。

Gekitenius.YGekitenius.Y

記事を書いた時点では誤解していたのですが、ここでサブネットごとにENIが生成されている状態は自然とそうなるわけではないです。

Lambda関数内の「VPC設定」の項目で指定されているサブネットの数だけ作成してくれます。

このスクラップは2023/04/08にクローズされました