Por que meu pipeline de criação de imagem está falhando com o erro de tempo limite da etapa esgotado enquanto a etapa está verificando a disponibilidade do Systems Manager Agent nas instâncias de destino no Image Builder?
Minha criação de imagem atinge o tempo limite no Amazon Elastic Compute Cloud (Amazon EC2) Image Builder. Em seguida, ela retorna a mensagem de falha que informa que o tempo limite da etapa foi esgotado enquanto a etapa verificava a disponibilidade do SSM Agent nas instâncias de destino. Como resolvo isso?
Breve descrição
O EC2 Image Builder usa o AWS Systems Manager Automation para criar imagens personalizadas. Certifique-se de que a instância do Amazon EC2 usada para criar imagens e executar testes tenha acesso ao serviço AWS Systems Manager.
A mensagem de erro que informa que o tempo limite da etapa foi esgotado enquanto a etapa verificava a disponibilidade do SSM Agent nas instâncias de destino pode ocorrer pelos seguintes motivos:
- A instância de compilação ou teste não pode acessar endpoints do Systems Manager. Para resolver esse problema, verifique as regras de entrada e saída do seu grupo de segurança e da lista de controle de acesso à rede (ACL da rede).
- O perfil da instância não tem as permissões necessárias. Para resolver esse problema, verifique se o perfil da instância tem as políticas corretas anexadas.
- A instância não consegue acessar o Instance Metadata Service (IMDS). Para resolver esse problema, verifique se a instância consegue acessar o IMDS.
- O AWS Systems Manager Agent (SSM Agent) não está instalado na imagem base.
Resolução
Verificar as regras de saída e entrada para o grupo de segurança e ACL de rede
Se a sua instância de compilação ou teste não consegur acessar os endpoints do Systems Manager, verifique o seguinte:
- Seu grupo de segurança tem saída aberta para a porta 443.
- A ACL de rede tem entrada aberta para portas efêmeras (1024 a 65535) e saída aberta para a porta 443.
Para compilações de sub-rede pública:
- A sub-rede deve ter a opção Enable auto-assign public IPv4 address (Habilitar atribuição automática de endereço IPv4 público) ativada.
- A tabela de rotas deve ter um gateway da Internet conectado.
Para compilações de sub-rede privada:
- A tabela de rotas deve ter um gateway ou instância NAT ou endpoints do AWS PrivateLink para o Systems Manager (ssm, ssmmessages, ec2messages) e o Image Builder. Se o registro em log estiver ativado, a tabela de rotas também deverá ter endpoints para o Amazon Simple Storage Service (Amazon S3) ou o Amazon CloudWatch.
- O grupo de segurança do endpoint da Amazon Virtual Private Cloud (Amazon VPC) deve permitir tráfego de entrada na porta 443 para o CIDR da VPC.
Verificar se o perfil de instância tem as políticas corretas
O perfil de instância é a função do AWS Identity and Access Management (IAM) definida na configuração da infraestrutura. Se ele não tiver as permissões necessárias, a compilação falhará. O perfil de instância deve ter as seguintes políticas gerenciadas anexadas para ter permissão para criar imagens:
- EC2InstanceProfileForImageBuilder
- EC2InstanceProfileForImageBuilderECRContainerBuilds (para imagens do Docker)
- AmazonSSMManagedInstanceCore
Você também pode criar políticas personalizadas que tenham permissões semelhantes às políticas gerenciadas anteriores.
Observação: verifique a política de confiança da função para garantir que ec2.amazonaws.com tenha permissão para assumir a função.
Verificar se a instância pode acessar o IMDS
O IMDS é usado para acessar metadados de uma instância em execução. Se a sua instância não conseguir acessar o IMDS, a compilação falhará. Verifique se o firewall do seu sistema operacional (SO) permite o tráfego 169.254.169.254 na porta 80, para que a instância possa acessar o IMDS.
Execute o seguinte comando para testar a conectividade:
$ telnet 169.254.169.254 80
Se você estiver usando um proxy, configure o SSM Agent para trabalhar com ele. Para Linux, consulte Configurar o SSM Agent para usar um proxy (Linux). Para o Microsoft Windows, consulte Configurar o SSM Agent para usar um proxy para instâncias do Windows Server.
Verificar se o SSM Agent está instalado na imagem base
As instâncias que o Image Builder utiliza para criar imagens e executar testes devem ter o Systems Manager Agent instalado.
Linux
Para instâncias Linux do Amazon EC2 que não têm o SSM Agent, o Image Builder instala o SSM Agent na instância de compilação por padrão. No entanto, se você fornecer dados do usuário na fórmula, também deverá ter certeza de que o SSM Agent esteja instalado na imagem base. Ou instale o SSM Agent com a entrada de dados do usuário.
Windows
O Image Builder não instala o SSM Agent nas instâncias de compilação do Amazon EC2 para Windows Server. Para verificar se o SSM Agent está pré-instalado na imagem base, execute uma instância do EC2 usando essa imagem base. Em seguida, execute o seguinte comando no PowerShell:
Get-Service AmazonSSMAgent
Se o SSM Agent não estiver pré-instalado na sua imagem base, você deverá iniciar uma instância a partir da sua imagem de origem. Em seguida, instale manualmente o SSM Agent na instância do EC2 e, em seguida, crie uma nova imagem base a partir da sua instância.
Desativar a opção “Terminate instance on failure” (Encerrar instância em caso de falha)
Se as resoluções anteriores não solucionarem o problema:
1. Abra o console do EC2 Image Builder.
2. Em Infrastructure configuration (Configuração de infraestrutura), habilite a opção Terminate instance on failure (Encerrar instância em caso de falha) e execute o pipeline novamente.
3. Conecte-se à instância e execute os seguintes comandos para verificar a conexão com os endpoints do Systems Manager:
Instância Linux
$ curl -v https://ssm.region.amazonaws.com
$ curl -v https://ec2messages.region.amazonaws.com
$ curl -v https://ssmmessages.region.amazonaws.com
Instância Windows
Test-NetConnection ssm.region.amazonaws.com -port 443
Test-NetConnection ec2messages.region.amazonaws.com -port 443
Test-NetConnection ssmmessages.region.amazonaws.com -port 443
Observação: substitua region pela sua região da AWS.
4. Use os seguintes caminhos para verificar se há falhas ou erros nos logs do SSM:
Linux
- /var/log/amazon/ssm/amazon-ssm-agent.log
- /var/log/amazon/ssm/errors.log
Windows
- %PROGRAMDATA%\Amazon\SSM\Logs\amazon-ssm-agent.log
- %PROGRAMDATA%\Amazon\SSM\Logs\errors.log
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos