Como resolvo o erro de execução do pipeline de criação de imagem “Não é possível inicializar o TOE” no Image Builder?

Data da última atualização: 25/07/2022

A execução do pipeline de criação da minha imagem falha com o erro “Não é possível inicializar o TOE” no EC2 Image Builder. Como resolvo isso?

Breve descrição

Na fase de criação de um pipeline de criação de imagem, a instância de compilação do Amazon Elastic Compute Cloud (Amazon EC2) instala e executa o script de bootstrap do AWS Task Orchestrator and Executor (AWS TOE) bootstrap.sh. Se a instância de compilação do Amazon EC2 não puder instalar ou executar o script de bootstrap, você receberá um erro no console do EC2 Image Builder.

Exemplo de mensagem de erro:

SSM execution '7729e837-22d4-49dd-bb60-cc2c835a2625' failed for image arn: 'arn:aws:imagebuilder:us-west-2:account-ID:image/test/1.0.0/1' with 
status= 'Failed' in state = 'BUILDING' and failure message = 'Unable to bootstrap TOE'

O Image Builder usa o AWS Systems Manager Automation para criar imagens personalizadas. A automação geralmente falha na etapa RunBuildScriptsWithLogging ou RunBuildScriptsWithoutLogging.

A seguir estão os motivos comuns das falhas de script de bootstrap:

  • A instância de compilação do EC2 não tem acesso ao Amazon Simple Storage Service (Amazon S3).
  • A imagem de máquina da Amazon (AMI) base é reforçada pelo CIS e o diretório /tmp padrão é montado com noexec.

Resolução

Para solucionar o problema, use o ID de execução do SSM Automation da mensagem de erro.

  1. Abra o console do EC2 Image Builder.
  2. Escolha o pipeline de criação com falha.
  3. Observe o ID de execução do SSM Automation na mensagem de erro. O ID da mensagem de erro do exemplo anterior é 7729e837-22d4-49dd-bb60-cc2c835a2625.
  4. Abra o console do AWS Systems Manager.
  5. No painel de navegação, escolha Automations (Automações).
  6. Selecione a automação associada ao ID de execução do SSM Automation.
  7. Escolha o ID da etapa RunBuildScriptsWithoutLogging para obter mais detalhes sobre a falha do script de bootstrap.

A instância de compilação não tem acesso ao Amazon S3

Durante a etapa RunBuildScriptsWithoutLogging, você recebe a seguinte mensagem de erro com O arquivo ou diretório não existe:

{"Status":"Failed","ResponseCode":1,"Output":"Waiting for Cloud-init to initialize ...
Cloud-init fails to initialize ... waiting another 5 minutes for the instance to stabilize
/var/lib/amazon/ssm/i-0ad513xxxxxxx/document/orchestration/bb0d8b53-994f-4c47-8297-e852a484501d/awsrunShellScript/0.awsrunShellScript/_script.sh: 
line 49: /tmp/imagebuilder/TaskOrchestratorAndExecutor/bootstrap.sh: No such file or directory
{\"failureMessage\":\"Unable to bootstrap TOE\"}

O erro anterior significa que o arquivo bootstrap.sh não existe na instância de compilação. Esse erro ocorre quando a instância de compilação está em uma sub-rede privada e não consegue fazer download do script de bootstrap do AWS TOE.

Para resolver esse problema, verifique se o endpoint de gateway do Amazon S3 com.amazonaws.region.s3 está na mesma Amazon Virtual Private Cloud (Amazon VPC) que a configuração de infraestrutura do pipeline. Se o endpoint estiver na mesma Amazon VPC, verifique se ele está associado à tabela de rotas correta. O endpoint deve estar associado à tabela de rotas usada pela sub-rede especificada na configuração da infraestrutura.

Além disso, verifique se o grupo de segurança conectado à instância de compilação permite conectividade HTTPS de saída (porta 443) com o endereço IP público do S3. A instância de compilação deve permitir conectividade HTTPS de saída para fazer download do script de bootstrap pelo bucket do Image Builder S3. Verifique o intervalo de endereços IP públicos do S3 que corresponde à região da AWS do pipeline.

Observação: os endpoints de interface do Amazon S3 não são compatíveis com o recurso de DNS privado. Para obter mais informações, consulte Access an AWS service using an interface VPC endpoint.

Além disso, certifique-se de que a política do endpoint permita a ação GetObjects do bucket ec2imagebuilder-toe-REGION-prod do Image Builder S3. A política tem acesso total por padrão.

O diretório /tmp é montado com noexec (aplicável somente para compilação do Linux AMI).

Durante a etapa RunBuildScriptsWithoutLogging, você recebe a seguinte mensagem de erro com Permissão negada:

{"Status":"Failed","ResponseCode":1,"Output":"Waiting for Cloud-init to initialize ...
/var/lib/amazon/ssm/i-0ad513xxxxxxx/document/orchestration/634699d5-3b04-4152-aab3-33d6981524cd/awsrunShellScript/0.awsrunShellScript/_script.sh:
line 49: /tmp/imagebuilder/TaskOrchestratorAndExecutor/bootstrap.sh: Permission denied
{\"failureMessage\":\"Unable to bootstrap TOE\"}

O erro anterior significa que a instância de compilação não pode executar o script bootstrap.sh devido a problemas de permissões do sistema operacional. Esse erro ocorre quando o diretório /tmp padrão é montado com a opção noexec. A opção de montagem noexec impede a execução de binários no sistema de arquivos montado.

Para verificar se o diretório /tmp está montado com noexec, inicie uma instância de teste a partir da AMI básica especificada na fórmula da imagem.

Execute o seguinte comando:

sudo mount | grep -E '/tmp.*noexec'

Resultado:

dev/xvdf on /tmp type ext4 (rw,noexec,relatime,data=ordered)

A saída anterior confirma que o diretório /tmp está montado como noexec. Para resolver esse problema, altere o diretório de trabalho na fórmula da imagem ou remova a opção noexec do diretório na AMI básica.

Para modificar o parâmetro do diretório de trabalho na fórmula da imagem, crie uma nova versão de receita da imagem. Em seguida, edite o pipeline para usar a nova versão. Certifique-se de que o novo diretório já esteja na AMI e não esteja configurado para montagem com a opção noexec.

Para remover a opção noexec do diretório /tmp:

  1. Execute manualmente uma instância a partir da AMI básica especificada na fórmula da imagem.
  2. No arquivo /etc/fstab, remova a opção noexec da entrada associada ao diretório /tmp ou diretório de trabalho.
  3. Crie uma nova AMI a partir da instância para usar como AMI básica da fórmula da imagem.

Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?