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 時間以内にネットワークインターフェイスを自動的に削除します。
関連情報
AWS リージョンで制限に達した場合、より多くの Elastic Network Interface を利用できるようにするにはどうすればよいですか?
Elastic network interfaces per VPC (Service Quotas コンソール)