Lambda が作成した Elastic Network Interface のデタッチまたは削除ができないのはなぜですか?

最終更新日: 2021 年 12 月 1 日

AWS Lambda が作成した Elastic Network Interface をデタッチまたは削除しようとすると、「「ela-attach」アタッチメントの管理は許可されていません」というエラーメッセージが表示されます。 これが生じる原因は何ですか? また、Lambda が作成したネットワークインターフェイスを削除するにはどうすればよいですか?

簡単な説明

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

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

ネットワークインターフェイスは、作成した関数と同じ Amazon VPC 設定の関数または関数バージョンで使用されている場合、削除されません。

現在ネットワークインターフェイスを使用している関数または関数のバージョンを特定するには、GitHub の Lambda ENI Finder bash スクリプトを使用します。

詳細については、リクエスタマネージド型のネットワークインターフェイスを参照してください。

注: Lambda は、同じ Amazon VPC 設定を持つ複数の関数でネットワークインターフェイスを共有します。ネットワークインターフェイスを共有すると、AWS アカウントで使用されるネットワークインスタンスの使用量を減らすことができます。

解決方法

注: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください

Lambda ENI Finder を実行して、引き続きネットワークインターフェイスを使用している関数と関数のバージョンを特定する

注: 次の手順のコマンドは、Linux、Unix、および macOS オペレーティングシステムでのみ有効です。

1.    まだインストールしていない場合は、AWS CLI をインストールします

2.    Lambda およびネットワークインターフェイスをクエリするアクセス許可を持つ AWS Identity and Access Management (IAM) ロールを使用して AWS CLI を設定します。詳細については、実行ロールとユーザーアクセス許可を参照してください。

3.    次のコマンドを実行して、コマンドライン JSON プロセッサ jq をインストールします。

$ sudo yum install jq -y

注: 詳細については、GitHub の jq ウェブサイトを参照してください。

4.    まだインストールしていない場合は、次のコマンドを実行して Git をインストールします。

$ sudo yum install git -y

5.    以下のコマンドを実行して、aws-support-tools GitHub リポジトリのクローンを作成します。

$ git clone https://github.com/awslabs/aws-support-tools.git

6.    ディレクトリを Lambda ENI Finder の場所に変更します。

Lambda ENI Finder の場所

$ cd aws-support-tools
$ cd Lambda
$ cd FindEniMappings

7.    次のコマンドを実行して、削除するネットワークインターフェイスのために Lambda ENI Finder を実行します。

./findEniAssociations --eni eni-0123456789abcef01 --region us-east-1

重要: eni-0123456789abcef01 をネットワークインターフェイスの ID に置き換えます。(ID は、Amazon Elastic Compute Cloud (Amazon EC2) コンソールの [Network Interfaces] (ネットワークインターフェイス) ページで確認できます。) また、us-east-1 は、ネットワークインターフェイスが存在する AWS リージョンに置き換えます。

この出力は、ネットワークインターフェイスを使用している AWS アカウントおよび指定されたリージョンの Lambda 関数と関数バージョンのリストを返します。

注: これらの関数または関数バージョンのいずれかが引き続き必要な場合は、ネットワークインターフェイスを削除する必要はない可能性があります。

Lambda が作成したネットワークインターフェイスを削除するには

1.    Lambda ENI Finder にリストされている未発行の Lambda 関数のバージョン ($LATEST) ごとに、次のいずれかを実行します。

Amazon VPC 設定を変更して、別のサブネットとセキュリティグループを使用します。

- または -

Amazon VPC から関数を切断します。

2.    リストされている発行済みの Lambda 関数のバージョンごとに、関数のバージョンを削除します。
注: 発行された関数バージョンは編集できないため、VPC 設定を変更することはできません。

3.    Lambda ENI Finder を再度実行して、ネットワークインターフェイスが使用されなくなったことを確認します。

他の関数または関数バージョンが出力にリストされていない場合、Lambda は 24 時間以内にネットワークインターフェイスを自動的に削除します。