Por que não consigo desanexar ou excluir uma interface de rede elástica criada pelo Lambda?

7 minuto de leitura
0

Quando tento desanexar ou excluir uma interface de rede elástica criada pelo AWS Lambda, recebo uma mensagem de erro.

Breve descrição

Você pode excluir uma interface de rede somente por meio do Lambda. Se você excluir os recursos que a interface de rede representa, o Lambda desanexará e excluirá a interface de rede para você. Para excluir interfaces de rede não utilizadas, o serviço do Lambda usa o perfil de execução das funções que criaram as interfaces de rede. No entanto, não é possível excluir as interfaces de rede que uma função ou versão da função usa.

O Lambda compartilha interfaces de rede em várias funções e mapeamentos da origem do evento que têm a mesma configuração da Amazon Virtual Private Cloud (Amazon VPC). Para reduzir o número de interfaces de rede usadas na sua conta da AWS, você pode compartilhar interfaces de rede.

Resolução

Identifique as funções e as versões de funções que usam a interface de rede

Observação:

Para identificar as funções ou versões de funções que usam uma interface de rede, use o script Bash do Lambda ENI Finder no site do GitHub. Para obter mais informações, consulte Interfaces de rede gerenciadas pelo solicitante.

Conclua as seguintes etapas:

  1. Configure a AWS CLI com um perfil do AWS Identity and Access Management (AWS IAM) que tenha permissões para consultar interfaces do Lambda e de rede. Para obter mais informações, consulte Conceder às funções do Lambda acesso aos recursos em uma Amazon VPC.
    Observação: o Lambda usa as permissões no perfil de execução de uma função para excluir a interface de rede elástica Hyperplane. Exclua o perfil de execução somente após que o Lambda exclua a interface de rede elástica Hyperplane.

  2. Instale o processador JSON de linha de comando jq:

    $ sudo yum install jq -y

    Observação: Para obter mais informações sobre o jq, consulte o site do jq.

  3. Verifique se o Git está instalado:

    $ sudo yum install git -y

    Se o Git não estiver instalado, consulte Introdução — instalando o Git no site do Git.

  4. Clone o repositório aws-support-tools do GitHub:

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

    Observação: Para obter mais informações sobre as ferramentas, consulte aws-support-tools no site do GitHub.

  5. Altere o diretório para o local do Lambda ENI Finder:

    $ cd aws-support-tools  
    $ cd Lambda  
    $ cd FindEniMappings
  6. Execute o Lambda ENI Finder para a interface de rede que você deseja excluir:

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

    Observação: No comando anterior, substitua eni-0123456789abcef01 pelo ID da interface de rede. Você pode encontrar o ID na página Interfaces de rede do console do Amazon Elastic Compute Cloud (Amazon EC2). Substitua us-east-1 pela região da AWS na qual a interface de rede reside.

A saída retorna uma lista das funções e versões de funções do Lambda que usam a interface de rede na sua conta e região. Se precisar de alguma das funções ou versões de funções, não exclua a interface de rede.

Se a saída não listar nenhuma função ou versão de função, verifique se os seguintes serviços em sua conta usam a interface de rede:

  • Amazon Managed Streaming for Apache Kafka (Amazon MSK)
  • Apache Kafka autogerenciado
  • Amazon ActiveMQ
  • Amazon RabbitMQ
  • Amazon DocumentDB

Identifique mapeamentos da origem do evento que usam a interface de rede

Use a AWS CLI

Conclua as seguintes etapas:

  1. Configure a AWS CLI com um perfil do IAM que tenha permissões para consultar o Lambda, o Amazon MSK, o Amazon MQ e o Amazon DocumentDB.
    Observação: O Lambda usa as permissões no perfil de execução da função associada ao mapeamento da origem do evento para excluir a interface de rede elástica Hyperplane. Exclua o perfil de execução somente após que o Lambda exclua a interface de rede elástica Hyperplane.

  2. Execute o comando list-event-source-mappings:

    aws lambda list-event-source-mappings --query 'EventSourceMappings[?State != Disabled]'
  3. Verifique o campo EventSourceArn ou o campo SelfManagedEventSource para cada mapeamento da origem do evento.
    Se o campo EventSourceARN contiver um ARN para um cluster do Amazon MSK, um broker do Amazon MQ ou um cluster do Amazon DocumentDB, anote o ARN.
    Para visualizar os detalhes do cluster ou do broker, execute um dos seguintes comandos para a origem do evento:

    aws kafka describe-cluster-v2 --cluster-arn MSK_CLUSTER_ARN
    aws mq describe-broker --broker-id MQ_BROKER_ID
    aws docdb describe-db-clusters --db-cluster-identifier DOCDB_CLUSTER_ID
  4. Na saída do comando, verifique se o cluster ou o broker usa os mesmos IDs de sub-rede e de grupo de segurança da interface de rede.

  5. Se o campo SelfManagedEventSource existir, verifique se os IDs de sub-rede e de grupo de segurança da interface de rede estão listados em SourceAccessConfigurations no mapeamento da origem do evento.

Usar o console do Lambda

Você também pode verificar a página de mapeamentos da origem do evento no console do Lambda para encontrar mapeamentos da origem do evento para os seguintes serviços:

  • Amazon MSK
  • Apache Kafka autogerenciado
  • Amazon ActiveMQ
  • Amazon RabbitMQ
  • Amazon DocumentDB

Conclua as seguintes etapas:

  1. Abra o console do Lambda.
  2. No painel de navegação, escolha Mapeamentos da origem do evento.
  3. Verifique a coluna serviço da origem do evento para encontrar mapeamentos da origem do evento para “apache kafka”, “docdb”, “msk” ou “mq”.
  4. Para “docdb”, “msk” ou “mq”, anote o nome do cluster ou do broker em Recurso da origem do evento.
  5. Use o console do Amazon MSK, do Amazon MQ ou do Amazon DocumentDB para pesquisar o nome do cluster ou do broker.
  6. Escolha o nome do cluster ou do broker para ver seus detalhes.
  7. Nas configurações de rede, verifique se o cluster ou broker está configurado para usar os mesmos IDs de sub-rede e de grupo de segurança da interface de rede.
  8. Para “apache kafka”, escolha o UUID do mapeamento da origem do evento.
  9. Escolha o ARN da origem do evento do seu serviço para visualizar a origem do evento e as configurações do serviço.
  10. Em Configurações de acesso à origem, verifique se os IDs de sub-rede e de grupo de segurança da interface de rede estão listados.

Excluir uma interface de rede criada pelo Lambda

Conclua as seguintes etapas:

  1. Execute o Lambda ENI Finder.
  2. Para cada versão não publicada da função do Lambda ($LATEST) listada, conclua uma das seguintes etapas:
    Altere a configuração da Amazon VPC para usar uma sub-rede e um grupo de segurança diferentes.
    -ou-
    Desconecte a função da Amazon VPC.
  3. Para versões publicadas da função do Lambda, exclua cada uma.
    Observação: Como não é possível editar versões de funções publicadas, você não pode alterar a configuração da Amazon VPC.
  4. Para cada mapeamento da origem do evento do Lambda que usa a interface de rede, desative ou exclua o mapeamento da origem do evento.
  5. Para verificar se a interface de rede não está mais em uso, execute o Lambda ENI Finder novamente.

O Lambda exclui automaticamente a interface de rede quando as duas afirmações a seguir são verdadeiras:

  • A saída não lista outras funções ou versões de funções.
  • O mapeamento da origem do evento não está usando a interface de rede.

Informações relacionadas

How do I get more elastic network interfaces if I've reached the limit in an AWS Region?

AWS OFICIAL
AWS OFICIALAtualizada há 9 meses