跳至內容

為什麼我無法中斷連接或刪除 Lambda 建立的彈性網路介面?

3 分的閱讀內容
0

我嘗試中斷連接或刪除 AWS Lambda 建立的彈性網路介面,但我收到錯誤訊息。

簡短說明

您只能透過 Lambda 刪除網路介面。如果您刪除網路介面所代表的資源,Lambda 就會為您中斷連接並刪除網路介面。若要刪除未使用的網路介面,Lambda 會使用建立這些網路介面之函式的執行角色。不過,您無法刪除函式或函式版本使用的網路介面。

Lambda 會在具有相同 Amazon Virtual Private Cloud (Amazon VPC) 組態的多個函式和事件來源對應之間共用網路介面。若要減少您在 AWS 帳戶中使用的網路介面數量,您可以共用網路介面。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

找出使用該網路介面的函式和函式版本

**注意:**以下命令僅適用於 Linux 和 Unix 作業系統。

若要找出使用網路介面的函式或函式版本,請使用 GitHub 網站上的 Lambda ENI Finder

請完成以下步驟:

  1. 使用有權查詢 Lambda 和網路介面的 AWS Identity and Access Management (IAM) 角色來設定 AWS CLI
    **重要:**Lambda 會使用函式執行角色中的權限來刪除 Hyperplane 彈性網路介面。只有在 Lambda 刪除 Hyperplane 彈性網路介面之後,您才能刪除執行角色。

  2. 若要安裝 jq 命令列 JSON 處理器,請執行以下命令:

    sudo yum install jq -y

    **注意:**如需更多資訊,請參閱 jq 網站上的 jq

  3. 若要安裝 Git,請執行以下命令:

    sudo yum install git -y

    **注意:**如需更多資訊,請參閱 Git 網站上的 開始使用 - 安裝 Git

  4. 若要複製 aws-support-tools GitHub 儲存庫,請執行以下命令:

    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
  • 適用於 ActiveMQ 的 Amazon MQ
  • 適用於 RabbitMQ 的 Amazon MQ
  • Amazon DocumentDB (with MongoDB compatibility)

找出使用該網路介面的事件來源對應

使用 AWS CLI

請完成以下步驟:

  1. 使用具有查詢 LambdaAmazon MSKAmazon MQAmazon DocumentDB 權限的 IAM 角色來設定 AWS CLI
    **注意:**Lambda 會使用函式 (與事件來源對應相關聯) 執行角色的權限來刪除 Hyperplane 彈性網路介面。只有在 Lambda 刪除 Hyperplane 彈性網路介面之後,您才能刪除執行角色。

  2. 若要列出事件來源對應,請執行以下 list-event-source-mappings 命令:

    aws lambda list-event-source-mappings --query 'EventSourceMappings[?State != Disabled]'
  3. 請檢查每個事件來源對應的 EventSourceArn 欄位或 SelfManagedEventSource 欄位。
    如果 EventSourceArn 欄位包含 MSK 叢集、Amazon MQ 代理程式或 Amazon DocumentDB 叢集的 Amazon Resource Name (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 console (Lambda 主控台)。
  2. 在導覽窗格中,選擇 Event source mappings (事件來源對應)。
  3. 檢查 Event source service (事件來源服務) 欄,以找出 apache kafkadocdbmskmq 的事件來源對應。
  4. 對於 docdbmskmq,請記下 Event source resource (事件來源資源) 下的叢集或代理程式名稱。對於 apache kafka,請選擇事件來源對應的 UUID,然後繼續執行步驟 8。
  5. 使用 Amazon MSKAmazon MQAmazon DocumentDB 主控台來搜尋叢集或代理程式名稱。
  6. 選擇叢集或代理程式名稱以檢視其詳細資訊。
  7. 在網路設定中,確認您已將叢集或代理程式設定為使用與該網路介面相同的子網路和安全群組 ID。
  8. 選擇您服務的 Event Source ARN (事件來源 ARN),以檢視事件來源和服務組態。
  9. Source access configurations (來源存取組態) 下,檢查是否列出網路介面的子網路和安全群組 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。繼續執行步驟 4 之前,請等待 5-10 分鐘讓抓取工具刪除完成。

  4. 若要刪除 ENI,請執行以下 delete-network 命令

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

    **注意:**將 your-network-interface-id 替換為您的網路介面 ID。

如需更多資訊,請參閱尋找並刪除抓取工具

相關資訊

如果我已達到 AWS 區域中的限制,該如何取得更多彈性網路介面?

AWS 官方已更新 7 個月前