Como usar o AWS Batch?

5

Estou tentando usar o novo recurso do AWS Batch: link

Não consigo executar nem mesmo o trabalho em lote mais simples (usando a demonstração que é "echo hello world"). O trabalho continua ficando preso no estado executável.

Para tentar isolar o problema, estou usando todas as configurações padrão em uma nova conta da AWS.

Meu entendimento é que eu não deveria ter que iniciar nenhuma instância do EC2 manualmente para usar esse recurso, que o AWS Batch deveria fazer isso por mim. Parece estar aguardando uma instância do EC2 disponível para executar o trabalho, no entanto. Não deveria apenas iniciar uma instância do EC2 para executar o trabalho sozinho?

Obrigado antecipadamente.

    
por Michael Stella 18.01.2017 / 19:21

3 respostas

3

Percebi que, quando eu especificava uma definição de trabalho com 8000 MiB, uma instância seria gerada e só teria 7986MB, e meu trabalho ficaria parado no estado Runnable.

8000 MiB é igual a 8388.608MB, então parece que a instância que está sendo gerada não tem memória suficiente disponível para executar o trabalho e, portanto, trava.

Se eu criar uma definição de tarefa com 7000 MiB, meu trabalho não ficará mais preso no estado Runnable, pois ainda usará a mesma instância com 7986MB de memória.

    
por 13.04.2017 / 22:45
3

Existe um guia de resolução de problemas na documentação do Lote para resolução de problemas "Jobs Stuck in RUNNABLE Status". link

If your compute environment contains compute resources, but your jobs do not progress beyond the RUNNABLE status, then there is something preventing the jobs from actually being placed on a compute resource. Here are some common causes for this issue:

The awslogs log driver is not configured on your compute resources

AWS Batch jobs send their log information to CloudWatch Logs. To enable this, you must configure your compute resources to use the awslogs log driver. If you base your compute resource AMI off of the Amazon ECS-optimized AMI (or Amazon Linux), then this driver is registered by default with the ecs-init package. If you use a different base AMI, then you must ensure that the awslogs log driver is specified as an available log driver with the ECS_AVAILABLE_LOGGING_DRIVERS environment variable when the Amazon ECS container agent is started. For more information, see Compute Resource AMI Specification and Creating a Compute Resource AMI.

Insufficient resources

If your job definitions specify more CPU or memory resources than your compute resources can allocate, then your jobs will never be placed. For example, if your job specifies 4 GiB of memory, and your compute resources have less than that, then the job cannot be placed on those compute resources. In this case, you must reduce the specified memory in your job definition or add larger compute resources to your environment.

Amazon EC2 instance limit reached

The number of Amazon EC2 instances that your account can launch in an AWS region is determined by your EC2 instance limit. Certain instance types have a per-instance-type limit as well. For more information on your account's Amazon EC2 instance limits (including how to request a limit increase), see Amazon EC2 Service Limits in the Amazon EC2 User Guide for Linux Instances

Outros problemas muito comuns que eu vejo e que causam isso:

  1. Nenhuma rota para a internet
  2. CPU / memória na definição do trabalho é maior que as instâncias
  3. A instância não está registrada no cluster do ECS
  4. O agente está desconectado - link

Etapas adicionais de solução de problemas que você pode seguir:

  1. Iniciar a definição de tarefa do ECS associada manualmente em seu cluster
  2. SSH e tente executar o docker de dentro da instância do contêiner
  3. Curl ECS e pontos de extremidade em lote de dentro da instância do contêiner
  4. Remover restrições de CPU / memória na definição de trabalho
  5. Revise /etc/ecs/ecs.config
  6. Obtenha registros do ECS - link
por 13.07.2018 / 07:39
0

Hoje tive o mesmo problema. Eu resolvi esse problema fazendo o seguinte:

Abra VPCSubnets<YOUR SUBNET>Subnet ActionsModify Auto-assign IP Configuração.

Verifique Enable auto-assign public IPV4 address Recrie seu ambiente de computação de lotes da AWS.

Porque a instância do contêiner precisa de acesso à Internet. Assim, a instância do contêiner precisará de um IP público global.

    
por 04.07.2017 / 13:57