Como resolvo o erro de execução do pipeline de criação de imagem “Não é possível inicializar o TOE” no Image Builder?
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.
- Abra o console do EC2 Image Builder.
- Escolha o pipeline de criação com falha.
- 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.
- Abra o console do AWS Systems Manager.
- No painel de navegação, escolha Automations (Automações).
- Selecione a automação associada ao ID de execução do SSM Automation.
- 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:
- Execute manualmente uma instância a partir da AMI básica especificada na fórmula da imagem.
- No arquivo /etc/fstab, remova a opção noexec da entrada associada ao diretório /tmp ou diretório de trabalho.
- Crie uma nova AMI a partir da instância para usar como AMI básica da fórmula da imagem.
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano