AWS Lambda が作成した Elastic Network Interface をデタッチまたは削除しようとすると、 「You are not allowed to manage 'ela-attach' attachments」というエラーメッセージが表示されます。
簡単な説明
Amazon Virtual Private Cloud (Amazon VPC) 内のリソースにアクセスするように Lambda 関数を設定すると、Lambda はその関数をネットワークインターフェイスに割り当てます。このネットワークインターフェイスは Lambda サービスを介してのみ削除できます。ネットワークインターフェイスが表すリソースを削除すると、Lambda は自動的にネットワークインターフェイスをデタッチして削除してください。未使用のネットワークインターフェイスを削除する際、Lambda サービスはネットワークインターフェイスを作成した関数の実行ロールを使用します。
ネットワークインターフェイスは、それらを作成した関数と同じ Amazon VPC 設定の関数または関数バージョンで使用される場合があります。この場合、ネットワークインターフェイスは削除できません。
現在、ネットワークインターフェイスを使用している関数または関数バージョンを確認するには、GitHub ウェブサイトの「Lambda ENI Finder」の bash スクリプトを使用してください。詳細については、「リクエスタマネージド型のネットワークインターフェイス」を参照してください。
**注:**Lambda は、同じ Amazon VPC 設定の複数の関数でネットワークインターフェイスを共有します。ネットワークインターフェイスを共有すると、AWS アカウントで使用されるネットワークインターフェイスの数を減らすことができます。
解決策
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
Lambda ENI Finder を実行して、ネットワークインターフェイスを使用する関数と関数バージョンを特定します
**注:**次のコマンドは Linux、Unix、および macOS オペレーティングシステムでのみ有効です。
ネットワークインターフェースを使用する機能と機能バージョンを特定するには、次の手順を実行してください。
-
Lambda とネットワークインターフェイスをクエリする権限を持つ AWS Identity and Access Management (IAM) ロールを使用して AWS CLI を設定します。詳細については、Execution role and user permissionsを参照してください。
**注:**Lambda は、関数の実行ロールのアクセス許可を使用して、Hyperplane Elastic Network Interface を削除します。Lambda が Hyperplane Elastic Network Interface を削除する前に、実行ロールを削除しないでください。
-
コマンドライン JSON プロセッサー jq を jq のウェブサイトからインストールします。
$ sudo yum install jq -y
-
Git がインストールされていることを確認してください。
$ sudo yum install git -y
Git をインストールするには、Git ウェブサイトのGetting started - Installing Gitを参照してください。
-
GitHub ウェブサイトから aws-support-tools GitHub リポジトリのクローンを作成します。
$ git clone https://github.com/awslabs/aws-support-tools.git
-
ディレクトリを Lambda ENI Finder の場所に移動します。
$ cd aws-support-tools
$ cd Lambda
$ cd FindEniMappings
-
削除するネットワークインターフェイスの Lambda ENI Finder を実行します。
./findEniAssociations --eni eni-0123456789abcef01 --region us-east-1
注:eni-0123456789abcef01 は、ネットワークインターフェイスの ID に置き換えてください。ID は Amazon Elastic Compute Cloud (Amazon EC2) コンソールの**[ネットワークインターフェイス]** ページで確認できます。us-east-1 は、ネットワークインターフェイスがある AWS リージョンに置き換えてください。
出力には、ネットワークインターフェイスを使用する AWS アカウントと指定したリージョンの Lambda 関数と関数バージョンのリストが返されます。これらの機能または関数バージョンのいずれかが必要な場合は、ネットワークインターフェイスを削除しないでください。
Lambda が作成したネットワークインターフェイスを削除する
Lambda が作成したネットワークインターフェイスを削除するには、次の手順を実行してください:
- Lambda ENI Finder にリストされている未公開の Lambda 関数バージョン ($LATEST) ごとに、次のいずれかの操作を実行してください:
別のサブネットとセキュリティグループを使用するように Amazon VPC 設定を変更します。
または、
関数を Amazon VPC から切断します。
- リストに表示されている公開済みの Lambda 関数バージョンごとに、その関数バージョンを削除します。
**注:**公開されている関数のバージョンは編集できないため、VPC 設定を変更することはできません。
- ネットワークインターフェイスが使用されていないことを確認してください。これを行うには、Lambda ENI Finder をもう一度実行します。
出力に他の関数や関数のバージョンがない場合、ラムダは20分以内にネットワーク・インターフェイスを自動的に削除してください。
関連情報
AWS リージョンの上限に達した場合に、Elastic Network Interface を増やす方法を教えてください。