スキップしてコンテンツを表示

Lambda が作成した Elastic Network Interface をデタッチしたり削除したりできない原因を教えてください。

所要時間3分
1

AWS Lambda が作成した Elastic Network Interface をデタッチまたは削除しようとすると、エラーメッセージが表示されます。

簡単な説明

ネットワークインターフェイスは Lambda 経由でのみ削除できます。ネットワークインターフェイスが表すリソースを削除すると、Lambda が自動的にそのネットワークインターフェイスをデタッチして削除します。未使用のネットワークインターフェイスを削除する際に、Lambda はそのネットワークインターフェイスを作成した関数の実行ロールを使用します。ただし、関数または関数バージョンが使用するネットワークインターフェイスは削除できません。

Lambda は、同じ Amazon Virtual Private Cloud (Amazon VPC) 設定を持つ複数の関数とイベントソースマッピングにわたり、ネットワークインターフェイスを共有します。ネットワークインターフェイスを共有すると、AWS アカウントで使用するネットワークインターフェイスの数を削減できます。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

ネットワークインターフェイスを使用する関数と関数のバージョンを特定する

注: 次のコマンドは、Linux および Unix オペレーティングシステムにのみ適用されます。

ネットワークインターフェイスを使用している関数または関数バージョンを確認するには、GitHub のウェブサイトにある Lambda ENI Finder を使用します。

次の手順を実行します。

  1. Lambda とネットワークインターフェイスをクエリするアクセス許可を持つ AWS Identity and Access Management (IAM) ロールを使用して AWS CLI を構成します。
    重要: Lambda は、関数の実行ロールに含まれるアクセス許可を使用して、Hyperplane Elastic Network Interface を削除します。Lambda が Hyperplane Elastic Network Interface を削除した後にのみ、実行ロールを削除してください。

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

    sudo yum install jq -y

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

  3. Git のインストールには、次のコマンドを実行します。

    sudo yum install git -y

    注: 詳細については、Git のウェブサイトで「Getting started - installing Git」(開始方法 - Git のインストール) を参照してください。

  4. GitHub リポジトリ aws-support-tools のクローンを作成するには、次のコマンドを実行します。

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

    注: 詳細については、GitHub のウェブサイトで「aws-support-tools」を参照してください。

  5. ディレクトリを Lambda ENI Finder の場所に切り替えるには、次のコマンドを実行します。

    cd aws-support-tools    cd Lambda  
    cd FindEniMappings
  6. 削除するネットワークインターフェイスに対して Lambda ENI Finder を実行するには、次のコマンドを実行します。

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

    注: eni-0123456789abcef01 をネットワークインターフェイス ID に、us-east-1 をネットワークインターフェイスが配置された AWS リージョンに置き換えてください。詳細については、「リクエスタマネージド型のネットワークインターフェイス」を参照してください。

出力には、アカウントとリージョン内のネットワークインターフェイスを使用する Lambda 関数および関数バージョンのリストが表示されます。これらの関数または関数バージョンのいずれかが必要な場合は、ネットワークインターフェイスを削除しないでください。

出力に関数も関数バージョンも記載されていない場合は、アカウント内の次のサービスがネットワークインターフェイスを使用しているかどうかを確認してください。

  • Amazon Managed Streaming for Apache Kafka (Amazon MSK)
  • セルフマネージド Apache Kafka
  • Amazon MQ for ActiveMQ
  • Amazon MQ for RabbitMQ
  • Amazon DocumentDB (MongoDB 互換)

ネットワークインターフェイスを使用しているイベントソースマッピングを特定する

AWS CLI を使用する

次の手順を実行します。

  1. LambdaAmazon MSKAmazon MQAmazon DocumentDB をクエリするアクセス許可のある IAM ロールを使用して AWS CLI を構成します。
    注: Lambda は、イベントソースマッピングに関連付けられている関数の実行ロールにあるアクセス許可を使用して、Hyperplane Elastic Network Interface を削除します。Lambda が Hyperplane Elastic Network Interface を削除した後にのみ、実行ロールを削除してください。

  2. イベントソースマッピングを一覧表示するには、次の list-event-source-mappings コマンドを実行します。

    aws lambda list-event-source-mappings --query 'EventSourceMappings[?State != Disabled]'
  3. 各イベントソースマッピングの EventSourceArn フィールドまたは SelfManagedEventSource フィールドを確認します。
    EventSourceArn フィールドに Amazon MSK クラスター、Amazon MQ ブローカー、または Amazon DocumentDB クラスターの Amazon リソースネーム (ARN) が含まれている場合は、その ARN を書き留めておきます。
    クラスターまたはブローカーの詳細を確認するには、イベントのソースに応じて次のいずれかのコマンドを実行します。
    Amazon MSK では、次の describe-cluster-v2 コマンドを実行します。

    aws kafka describe-cluster-v2 --cluster-arn MSK_CLUSTER_ARN

    注: MSK_CLUSTER_ARN を MSK クラスターの ARN に置き換えてください。
    Amazon MQ では、次の describe-broker コマンドを実行します。

    aws mq describe-broker --broker-id MQ_BROKER_ID

    注: MQ_BROKER_ID を Amazon MQ ブローカー ID に置き換えてください。
    Amazon DocumentDB では、次の describe-db-clusters コマンドを実行します。

    aws docdb describe-db-clusters --db-cluster-identifier DOCDB_CLUSTER_ID

    注: DOCDB_CLUSTER_ID を Amazon DocumentDB クラスター ID に置き換えてください。

  4. コマンドの出力において、クラスターまたはブローカーがネットワークインターフェイスと同じサブネットおよびセキュリティグループ ID を使用しているかどうかを確認します。

  5. SelfManagedEventSource フィールドがある場合は、ネットワークインターフェイスのサブネットとセキュリティグループ ID が、イベントソースマッピングの SourceAccessConfigurations に含まれているかどうかを確認します。

Lambda コンソールを使用する

注: セルフマネージド Apache Kafka のイベントソースマッピングを確認するには、Lambda コンソールを使用する必要があります。

次の手順を実行します。

  1. Lambda コンソールを開きます。
  2. ナビゲーションペインで [イベントソースマッピング] を選択します。
  3. [イベントソースサービス] 列を参照し、apache kafkadocdbmskmq のイベントソースマッピングを見つけます。
  4. docdbmskmq では、[イベントソースリソース] に表示されるクラスター名またはブローカー名を書き留めます。apache kafka では、イベントソースマッピングの UUID を選択し、ステップ 8 に進みます。
  5. クラスター名またはブローカー名を Amazon MSKAmazon MQAmazon DocumentDB コンソールのいずれかを使用して検索します。
  6. クラスター名またはブローカー名を選択すると、詳細が表示されます。
  7. ネットワーク設定において、クラスターまたはブローカーがネットワークインターフェイスと同じサブネットおよびセキュリティグループ ID を使用するよう構成されていることを確認します。
  8. サービスの [イベントソース ARN] を選択すると、イベントソースとサービス構成が表示されます。
  9. [ソースアクセス設定] で、ネットワークインターフェイスのサブネットとセキュリティグループ ID が含まれているかどうかを確認します。

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

次の手順を実行します。

  1. Lambda ENI Finder を実行します。
  2. リストに含まれる未公開の Lambda 関数バージョン ($LATEST) ごとに、次のいずれかの手順を実行します。
    別のサブネットとセキュリティグループを使用するように Amazon VPC 設定を変更します。
    または、
    関数を Amazon VPC から切断します。
  3. 公開されている Lambda 関数バージョンを、それぞれ削除します。
    注: 公開されている関数のバージョンは編集できないため、Amazon VPC の設定は変更できません。
  4. ネットワークインターフェイスを使用する Lambda イベントソースマッピングごとに、イベントソースマッピングを無効にするか削除します。
  5. ネットワークインターフェイスが使用中ではなくなったことを確認するために、Lambda ENI Finder を再度実行します。

Lambda は、次の両方の設定が満たされた場合、ネットワークインターフェイスを自動的に削除します。

  • 出力に、他の関数や関数バージョンが含まれていない。
  • イベントソースマッピングがネットワークインターフェイスを使用していない。

スクレイパーを見つけて削除する

Lambda ネットワークインターフェイスを Amazon Managed Service for Prometheus スクレイパーに関連付けている場合は、次の手順を実行します。

  1. スクレイパーの設定を特定するには、次の list-rule-groups-namespaces コマンドを実行します。

    aws amp list-rule-groups-namespaces
  2. アカウント内のスクレイパーを一覧表示するには、次の list-scrapers コマンドを実行します。

    aws amp list-scrapers --region your-region

    注: your-region を実際のリージョンに置き換えます。

  3. スクレイパーを削除するには、次の delete-scraper コマンドを実行します。

    aws amp delete-scraper --scraper-id your-scraperId

    注: your-scraperId をスクレイパー ID に置き換えます。スクレイパーの削除が完了するまで 5~10 分待ってから、ステップ 4 に進みます。

  4. ENI を削除するには、次の delete-network コマンドを実行します。

    aws ec2 delete-network --your-network-interface-id

    注: your-network-interface-id をネットワークインターフェイス ID に置き換えます。

詳細については、「Find and delete scrapers」(スクレイパーを見つけて削除する) を参照してください。

関連情報

AWS リージョンで制限に達した場合、より多くの Elastic Network Interface を利用できるようにするにはどうすればよいですか?

AWS公式更新しました 7ヶ月前
コメントはありません

関連するコンテンツ