Quero solucionar uma tarefa interrompida do Windows em um cluster do Amazon Elastic Container Service (Amazon ECS).
Resolução
Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Para solucionar problemas de uma tarefa interrompida, use o Console de Gerenciamento da AWS ou a AWS CLI para visualizar os erros da tarefa interrompida. Ou use DescribeTasks para obter informações sobre a tarefa interrompida.
Importante: só é possível acessar as informações que DescribeTasks obtém sobre as tarefas interrompidas dentro de 1 hora após a falha da tarefa. Para reter esses dados por mais tempo, use o modelo do AWS CloudFormation de amazon-ecs-stopped-tasks-cwlogs no site do GitHub. Com esse modelo, capture os Amazon CloudWatch Logs que o Amazon EventBridge gera quando uma tarefa é interrompida.
Conclua as etapas de solução de problemas a seguir para o erro que você recebe.
Erros comuns de tarefas interrompidas
Para solucionar erros comuns de tarefas interrompidas, como problemas de verificação de integridade de instâncias de contêineres, consulte Por que minha tarefa do Amazon ECS foi interrompida?.
Se você receber um erro CannotPullContainerError: API, consulte Como posso resolver o erro do Amazon Elastic Container Registry (Amazon ECR) “CannotPullContainerError: API error” no Amazon ECS?.
Se você receber um erro OutOfMemory, consulte Como soluciono erros OutOfMemory no Amazon ECS?.
Erro “Nenhum fornecedor válido na cadeia”
Se sua instância não tiver ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE definido, você receberá um erro semelhante a “CannotStartContainerError: Resposta de erro do daemon: falha ao inicializar o driver de registro em log: falha ao criar o fluxo de logs do CloudWatch: NoCredentialProviders: nenhum provedor válido na cadeia”.
Para resolver esse problema, certifique-se de definir ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE na instância de contêiner. Exemplo de sintaxe do PowerShell:
<powershell>
[Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine")
Initialize-ECSAgent -Cluster cluster-name -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]'
</powershell>
Observação: substitua cluster-name pelo nome do seu cluster.
Erro “O sistema operacional do contêiner não corresponde ao sistema operacional do host”
Se o sistema operacional (SO) host não corresponder ao sistema operacional de imagem base da instância de contêiner do Windows, você receberá um erro semelhante a “CannotStartContainerError: ResourceInitializationError: falha ao criar uma nova tarefa de runtime do contêiner: falha ao criar a tarefa shim: hcs::CreateComputeSystem abcdxyz: O sistema operacional do contêiner não corresponde ao sistema operacional do host”.
Para resolver esse problema, verifique se o host AWS Fargate ou Amazon Elastic Compute Cloud (Amazon EC2) usa o mesmo sistema operacional da instância de contêiner.
Erro “Não é possível assumir o perfil”
Se a instância de contêiner não puder assumir o perfil do AWS Identity and Access Management (AWS IAM), você receberá um erro semelhante a "Não é possível assumir o perfil ‘arn:aws:iam::abcdefxyz123:role/yyyyyyyy’.
Execute o comando a seguir para garantir que você defina a opção -EnableTaskIAMRole no script de dados do usuário:
<powershell>
Import-Module ECSTools
Initialize-ECSAgent -Cluster 'windows' -EnableTaskIAMRole
</powershell>
Certifique-se de atender aos requisitos de configuração da instância do Windows.
Informações relacionadas
Processo de bootstrap de instâncias de contêiner Windows do Amazon ECS para transmitir dados