¿Cómo utilizar AWS Batch?

¿Cómo utilizar AWS Batch?

Estoy intentando utilizar la nueva función AWS Batch:https://aws.amazon.com/batch/

No puedo ejecutar ni siquiera el trabajo por lotes más simple (usando la demostración que es "echo hello world"). El trabajo sigue atascado en el estado ejecutable.

Para intentar aislar el problema, estoy usando todas las configuraciones predeterminadas en una cuenta nueva de AWS.

Tengo entendido que no debería tener que iniciar ninguna instancia EC2 manualmente para utilizar esta función, sino que AWS Batch debería hacerlo por mí. Sin embargo, parece estar esperando que haya una instancia EC2 disponible para ejecutar el trabajo. ¿No debería simplemente iniciar una instancia EC2 para ejecutar el trabajo por sí solo?

Gracias de antemano.

Respuesta1

Me di cuenta de que cuando especificaba una definición de trabajo con 8000 MiB, se activaba una instancia que solo tenía 7986 MB y mi trabajo se quedaba atascado en el estado Ejecutable.

8000 MiB equivale a 8388,608 MB, por lo que parece que la instancia que se está activando no tiene suficiente memoria disponible para ejecutar el trabajo y, por lo tanto, se bloquea.

Si creo una definición de trabajo con 7000 MiB, mi trabajo ya no se atasca en el estado Ejecutable, ya que todavía usa la misma instancia con 7986 MB de memoria.

Respuesta2

Hay una guía de solución de problemas en la documentación de Batch para solucionar problemas de "Trabajos atascados en estado RUNNABLE". https://docs.aws.amazon.com/batch/latest/userguide/troubleshooting.html#job_stuck_in_runnable

Si su entorno informático contiene recursos informáticos, pero sus trabajos no avanzan más allá del estado RUNNABLE, entonces hay algo que impide que los trabajos se coloquen realmente en un recurso informático. A continuación se muestran algunas causas comunes de este problema:

El controlador de registro awslogs no está configurado en sus recursos informáticos

Los trabajos de AWS Batch envían su información de registro a CloudWatch Logs. Para habilitar esto, debe configurar sus recursos informáticos para utilizar el controlador de registro awslogs. Si basa su AMI de recursos informáticos en la AMI optimizada para Amazon ECS (o Amazon Linux), este controlador se registra de forma predeterminada con el paquete ecs-init. Si utiliza una AMI base diferente, debe asegurarse de que el controlador de registro awslogs esté especificado como un controlador de registro disponible con la variable de entorno ECS_AVAILABLE_LOGGING_DRIVERS cuando se inicia el agente de contenedor de Amazon ECS. Para obtener más información, consulte Especificación de la AMI de recursos informáticos y Creación de una AMI de recursos informáticos.

Recursos insuficientes

Si las definiciones de sus trabajos especifican más recursos de CPU o memoria de los que sus recursos informáticos pueden asignar, sus trabajos nunca se colocarán. Por ejemplo, si su trabajo especifica 4 GiB de memoria y sus recursos informáticos tienen menos que eso, entonces el trabajo no se puede colocar en esos recursos informáticos. En este caso, debe reducir la memoria especificada en su definición de trabajo o agregar mayores recursos informáticos a su entorno.

Se alcanzó el límite de instancias de Amazon EC2

La cantidad de instancias Amazon EC2 que su cuenta puede iniciar en una región de AWS está determinada por su límite de instancias EC2. Ciertos tipos de instancia también tienen un límite por tipo de instancia. Para obtener más información sobre los límites de instancias de Amazon EC2 de su cuenta (incluido cómo solicitar un aumento de límite), consulte Límites del servicio de Amazon EC2 en la Guía del usuario de Amazon EC2 para instancias de Linux.

Otros problemas muy comunes que veo que causan esto serían:

  1. No hay ruta a internet
  2. CPU/Memoria en la definición del trabajo es mayor que las instancias
  3. La instancia no está registrada con el clúster ECS
  4. El agente está desconectado -https://aws.amazon.com/premiumsupport/knowledge-center/ecs-agent-disconnected/

Pasos adicionales para la solución de problemas que puede seguir:

  1. Inicie manualmente la definición de tarea de ECS asociada en su clúster
  2. SSH e intente ejecutar Docker desde dentro de la instancia del contenedor
  3. Curl ECS y puntos finales de lote desde dentro de la instancia del contenedor
  4. Eliminar restricciones de CPU/memoria en la definición de trabajo
  5. Revisar /etc/ecs/ecs.config
  6. Obtener registros de ECS -https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-logs-collector.html

Respuesta3

Hoy tuve el mismo problema. Resolví este problema haciendo lo siguiente:

Abrir VPCSubnets<YOUR SUBNET>Subnet ActionsModify Auto-assign IPConfiguración.

Marque Enable auto-assign public IPV4 address Recrea su entorno informático por lotes de AWS.

Porque la instancia del contenedor necesita acceso a Internet. Por lo tanto, la instancia del contenedor necesitará una IP pública global.

información relacionada