Como encerro ou reconstruo meu ambiente do Elastic Beanstalk quando ocorre falha na exclusão do AWSEBSecurityGroup?
Quando eu encerro ou reconstruo meu ambiente AWS Elastic Beanstalk, recebo o seguinte erro: “Stack deletion failed: The following resource(s) failed to delete: [AWSEBSecurityGroup].”
Breve descrição
O AWSebSecurityGroup é um grupo de segurança do Amazon Elastic Compute Cloud (Amazon EC2) que a pilha subjacente do AWS CloudFormation cria por meio do Elastic Beanstalk. Quando uma interface de rede elástica ou um grupo de segurança criado fora do seu ambiente Elastic Beanstalk usa o AWSEBSecurityGroup, o ambiente falha quando você o encerra ou o reconstrói.
Observação: para gerenciar os recursos que o Elastic Beanstalk cria, é uma prática recomendada usar uma das seguintes opções: o console do Elastic Beanstalk, Elastic Beanstalk Command Line Interface (EB CLI) ou AWS Command Line Interface (AWS CLI). Se você receber erros ao executar comandos da AWS CLI, consulte Solucionar erros da AWS CLI. Além disso, verifique se está usando a versão mais recente da AWS CLI.
Resolução
Para resolver esse problema, realize uma das seguintes tarefas:
- Use o console do AWS CloudFormation ou a AWS CLI para excluir a pilha do CloudFormation que o ambiente do Elastic Beanstalk criou. Em seguida, encerre ou reconstrua o ambiente do Elastic Beanstalk.
- Remova os objetos dependentes do seu grupo de segurança do Elastic Beanstalk. Em seguida, encerre ou reconstrua o ambiente do Elastic Beanstalk.
Observação: nos seguintes comandos da AWS CLI, insira os valores para o nome da pilha, nome do ambiente, região da AWS e outras variáveis específicas do ambiente.
Exclua a pilha do console do CloudFormation
Importante: se o seu ambiente Elastic Beanstalk tiver um banco de dados integrado do Amazon Relational Database Service (Amazon RDS), primeiro desacople a instância de banco de dados Amazon RDS.
É possível usar o console do CloudFormation ou a AWS CLI para excluir a pilha.
Console do CloudFormation
- Abra o console do CloudFormation.
- Na página Pilhas, escolha a pilha que falhou na exclusão.
Observação: a coluna Status da sua pilha mostra DELETE_FAILED. - Escolha Excluir.
- Na janela pop-up Excluir pilha, escolha AWSebSecurityGroup e, em seguida, escolha Excluir.
Importante: certifique-se de excluir o grupo de segurança. O AWSEBSecurityGroup não é excluído automaticamente quando você exclui a pilha. Se o encerramento do ambiente falhar devido a outro recurso dependente, primeiro escolha o recurso apropriado no estado DELETE_FAILED na janela pop-up Excluir pilha. Em seguida, selecione Excluir. - Encerre ou reconstrua o ambiente do Elastic Beanstalk.
AWS CLI
-
Para excluir a pilha do CloudFormation, execute o comando describe-network-interface-attribute:
aws cloudformation delete-stack --stack-name awseb-e-ztrauxujck-stack --retain-resources "AWSEBSecurityGroup" --region us-east-1 -
Para encerrar o ambiente do Elastic Beanstalk, execute o comando terminate-environment:
aws elasticbeanstalk terminate-environment --environment-name my-env --region us-east-1 -
Para reconstruir o ambiente do Elastic Beanstalk, execute o comando rebuild-environment:
aws elasticbeanstalk rebuild-environment --environment-name my-env --region us-east-1
Encontre e remova os objetos dependentes do grupo de segurança do Elastic Beanstalk
Para encontrar a interface de rede dependente ou um grupo de segurança dependente que não permite excluir o AWSEBSecurityGroup, conclua as etapas a seguir. É possível usar a AWS CLI ou o console do Amazon EC2.
Console do Amazon EC2
- Obtenha o ID do grupo de segurança do AWSEBSecurityGroup a partir da mensagem de erro no stream de eventos do Elastic Beanstalk.
- Abra o console do Amazon EC2.
- No painel de navegação, selecione Grupos de segurança. Em seguida, escolha o ID do AWSEBSecurityGroup.
- Escolha Ações e, em seguida, escolha Excluir grupo de segurança para encontrar as dependências no AWSEBSecurityGroup.
- Na janela pop-up Excluir grupos de segurança, conclua as seguintes etapas:
Escolha Exibir sua instância associada.
Escolha Ações, em seguida, escolha Rede.
Escolha Alterar grupo de segurança.
Desmarque as caixas de seleção AWSebSecurityGroup ID e Atribuir grupos de segurança. - Na janela pop-up Excluir grupos de segurança, escolha Exibir seus grupos de segurança de referência.
- Para remover a associação do ID do AWSEBSecurityGroup, escolha Ações e, em seguida, escolha Editar regras de entrada ou Editar regras de saída.
- Encerre ou reconstrua o ambiente do Elastic Beanstalk.
AWS CLI
-
Obtenha o ID do grupo de segurança do AWSEBSecurityGroup a partir da mensagem de erro no stream de eventos do Elastic Beanstalk.
-
Na pasta .ebextensions, crie um arquivo de configuração com base no exemplo a seguir:
#!/bin/bash SecurityGroupID=$1 Region=$2 DependentENI=$(aws ec2 describe-network-interfaces --filters Name=group-id,Values=[$SecurityGroupID] --region $Region | jq '.NetworkInterfaces[].NetworkInterfaceId') DependentSGingress=$(aws ec2 describe-security-groups --filters Name=ip-permission.group-id,Values=[$SecurityGroupID] --region $Region | jq '.SecurityGroups[] .GroupId') DependentSGegress=$(aws ec2 describe-security-groups --filters Name=egress.ip-permission.group-id,Values=[$SecurityGroupID] --region $Region | jq '.SecurityGroups[] .GroupId') echo "The dependent ENI is $DependentENI" echo "The security group id with a dependency in ingress rule : $DependentSGingress" echo "The security group id with a dependency in egress rule : $DependentSGegress" -
Salve o script bash como sg_dependency.sh.
-
Instale o utilitário jq no site jq.
-
Para obter o ID da interface de rede e o ID do grupo de segurança, execute o seguinte comando:
./sg_dependency.sh sg-111aaa22 us-east-1Observação: substitua sg-111aaa22 pelo seu ID AWSEBSecurityGroup. Substitua us-east-1 pela sua região da AWS.
-
Para encontrar os grupos de segurança que estão anexados ao ID da interface de rede, execute o comando describe-network-interface-attribute:
aws ec2 describe-network-interface-attribute --network-interface-id eni-1099d901 --attribute groupSet -
Para desanexar a ID do AWSebSecurityGroup, execute o comando modify-network-interface-attribute:
aws ec2 modify-network-interface-attribute --network-interface-id eni-1099d901 --groups sg-030644d6c95b6470a sg-d34a33a8 sg-059c081ab30c3e38e sg-0e4eabc747368e6c9Importante: no comando anterior, não inclua o ID do AWSEBSecurityGroup. Inclua outros IDs do grupo de segurança para permanecer conectado à interface de rede. Se você incluir o ID AWSEBSecurityGroup no serviço da AWS que criou a interface de rede, a saída do comando retornará o seguinte erro: “An error occurred (AuthFailure) when calling the ModifyNetworkInterfaceAttribute operation: You don't have permission to access the specified resource”.
-
Execute o comando describe-security-groups para listar todas as regras de entrada e saída do grupo de segurança dependente.
-
Execute o comando revoke-security-group-ingress ou revoke-security-group-egress com base na saída da etapa 7.
Exemplo: se a ID do AWSebSecurityGroup for sg-111aaa22 e a saída da etapa 8 tiver essa ID do grupo de segurança nas regras de entrada, execute o seguinte comando:aws ec2 revoke-security-group-ingress --group-id sg-0018a2fbdcd5797ea --ip-permissions '\[{"PrefixListIds":\[\],"FromPort":0,"IpRanges":\[\],"ToPort":65535,"IpProtocol":"tcp","UserIdGroupPairs":\[{"UserId":"123456789102","GroupId":"sg-111aaa22"}\],"Ipv6Ranges":\[\]}\]'Observação: o ID do usuário é o ID da conta da AWS.
-
Para encerrar o ambiente do Elastic Beanstalk, execute o comando terminate-environment:
aws elasticbeanstalk terminate-environment --environment-name my-env --region us-east-1
- Para reconstruir o ambiente do Elastic Beanstalk, execute o comando rebuild-environment:
aws elasticbeanstalk rebuild-environment --environment-name my-env --region us-east-1
Informações relacionadas
- Tópicos
- Compute
- Idioma
- Português

Conteúdo relevante
- feita há 10 meses
- feita há um ano