Lambdaが作成したENIをデタッチ・削除できない
とりあえず公式さんのQA
Amazon Virtual Private Cloud (Amazon VPC) のリソースにアクセスするように Lambda 関数を設定すると、Lambda は関数をネットワークインターフェイスに割り当てます。
ネットワークインターフェイスが表すリソースを削除すると、Lambda はネットワークインターフェイスをデタッチおよび削除します。使用されていないネットワークインターフェイスを削除するために、Lambda サービスはネットワークインターフェイスを作成した関数の実行ロールを使用します。
なるほど。
RDSにアクセスするLambdaを作ったから自動で作成されてたのね。
今回削除しようとしているのはアカウントのVPC内リソースにアクセスするLambda、によって生成されたENI。
その削除できないENIを見てみるとサブネット単位で作成されてるのがわかる。
AWSでよくお世話になるクラスメソッドさん
ここまで調べてみて
「LambdaがサブネットごとにENIを設置してよしなにアクセスコントロールしてる」
「(アカウントの)VPC内リソースにアクセスするLambdaがある以上は消さなくても良さげ」
みたいなことは分かってきた気がします。
LambdaがENIを自動生成する仕組みが気になるので、もう少し深堀りしてみる。
いつものクラスメソッドさん、数年前にアプデがあったみたい。
公式のアプデノート。
なるほどね、、
名前をHyperplane ENI言うらしい、かっこいい
それでこいつらが生成されてたわけだ。初めの方に書いたとおり、使われなくなったら自動削除されますよと。
ネットワークインターフェイスが表すリソースを削除すると、Lambda はネットワークインターフェイスをデタッチおよび削除します。使用されていないネットワークインターフェイスを削除するために、Lambda サービスはネットワークインターフェイスを作成した関数の実行ロールを使用します。
今回はLambda関数まで消す予定はないので、このENIもそのまま残すことになるか。
大体の仕組みがわかったので良しとしよう。
記事を書いた時点では誤解していたのですが、ここでサブネットごとにENIが生成されている状態は自然とそうなるわけではないです。
Lambda関数内の「VPC設定」の項目で指定されているサブネットの数だけ作成してくれます。