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?

6 minuto de leitura
0

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

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos