Fonctions d’AWS Batch 

Avec AWS Batch, vous pouvez simplement compresser le code pour vos tâches de traitement par lots, spécifier leurs dépendances et soumettre ces tâches à l'aide d'AWS Management Console, des interfaces de ligne de commande ou des kits SDK. AWS Batch vous permet de spécifier les paramètres d'exécution et les dépendances entre les tâches et facilite l'intégration dans de nombreux moteurs de flux de travail et de langages de calcul par lots populaires (par ex., Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow et AWS Step Functions). AWS Batch fournit et met à l'échelle de façon dynamique et efficace les ressources de calcul Amazon ECS, Amazon EKS et AWS Fargate avec une option qui permet d'exploiter les instances Spot basée sur les exigences de vos tâches. AWS Batch propose des files d'attente de tâches par défaut et des définitions d'environnements de calcul qui vous permettent de démarrer rapidement.

AWS Batch sur Amazon Elastic Kubernetes Service (EKS)

AWS Batch sur EKS gère la mise à l'échelle des nœuds Kubernetes et le placement des pods sur vos nœuds. Cela est possible car AWS Batch retient la gestion et l'orchestration qu'Amazon EKS offre pour les autres charges de travail et services. AWS Batch peut exécuter des tâches en tant que pods Kubernetes dans vos clusters EKS existants. Tout ce qu'il vous reste à faire, c'est de spécifier le processeur virtuel, la mémoire ou toute exigence en matière de GPU dont vos conteneurs ont besoin, les soumettre à une file d'attente liée à un environnement de calcul activé par cluster EKS. AWS Batch gère la mise en file d'attente, le suivi des dépendances, les nouvelles tentatives, les priorités et la soumission de pods dans la file d'attente d'une tâche. Que vous utilisiez des ressources EC2 ou EC2 Spot, Batch gère également l'approvisionnement en ressources de calcul dans votre environnement EKS. AWS Batch s'intègre à votre cluster EKS avec un nom de domaine distinct, ce qui veut dire que vous n'avez pas à vous soucier des interférences entre les tâches AWS Batch et vos processus existants. Batch s'occupe de gérer la capacité à votre place. Il peut retenir un groupe de nœuds à chaud, limiter la capacité à un certain niveau de processeur virtuel, mettre les nœud à l'échelle et exécuter des tâches à travers de nombreux clusters, ou simplement exécuter toutes vos tâches dans un cluster unique. Batch prend en charge les pods indépendants en tant qu'unité de travail principale mais peut également planifier vos tâches en agrégations, avec des matrices.

Mise en service et dimensionnement dynamiques des ressources de calcul

Lorsque vous utilisez Fargate ou Fargate Spot avec Batch, vous ne devez configurer que quelques concepts dans Batch (un CE, une file d’attente, une définition de tâche) et vous obtenez une file d’attente, un planificateur et une architecture de calcul complets sans avoir à gérer aucune infrastructure de calcul.

Si vous voulez des instances EC2, AWS Batch propose des environnements de calcul gérés qui mettent en service et dimensionnent de façon dynamique les ressources de calcul en fonction du volume et des besoins en ressources des tâches que vous avez soumises. Vous pouvez configurer vos environnements de calcul gérés AWS Batch en fonction des exigences, telles que le type d’instances EC2, les configurations de sous-réseau VPC, le nombre minimum et maximum de processeurs virtuel sur toutes les instances et le montant que vous êtes prêt à payer pour les instances Spot. Ce montant est exprimé en pourcentage du prix de l’instance à la demande.

Vous pouvez également mettre en service et gérer vos propres ressources de calcul dans des environnements de calcul non gérés AWS Batch si vous devez utiliser, pour vos instances EC2, des configurations différentes de celles proposées par les environnements de calcul gérés AWS Batch (par ex., de plus grands volumes EBS ou un autre système d'exploitation). Il vous suffit de mettre en service des instances EC2 qui incluent l'agent Amazon ECS et d'exécuter des versions prises en charge de Linux et Docker. AWS Batch exécute alors les tâches de traitement par lots sur les instances EC2 que vous mettez en service.

AWS Batch avec Fargate

AWS Batch avec les ressources Fargate vous permet d’obtenir une architecture entièrement sans serveur pour vos tâches par lot. Avec Fargate, chaque tâche reçoit la quantité de processeurs et de mémoire dont elle a besoin (au sein des références Fargate autorisées). Ainsi, les ressources ne perdent pas de temps et il n'est pas nécessaire d'attendre le démarrage de l'instance EC2.

Si vous utilisez actuellement Batch, Fargate vous offre une couche de séparation supplémentaire des instances EC2. Il n’est pas nécessaire de gérer ou de corriger des AMI. Lorsque vous soumettez vos tâches compatibles avec Fargate à Batch, vous n'avez plus à vous soucier de la maintenance de ces deux services si vous avez des charges de travail qui s'exécutent sur EC2 et d'autres charges de travail qui s'exécutent sur Fargate.

AWS fournit un planificateur natif cloud complet avec une file d’attente gérée et la capacité de spécifier les priorités, tentatives, dépendances, délais d’expiration, etc. Batch gère les envois vers Fargate et le cycle de vie de vos tâches pour que vous n’ayez pas à le faire.

De plus, Fargate offre des avantages en termes de sécurité sans effort supplémentaire (par ex., SOX, conformité PCI), ainsi que l'isolement entre les ressources de calcul de chaque tâche.

Prise en charge des charges de travail HPC étroitement liées

AWS Batch prend en charge les tâches parallèles à plusieurs nœuds pour vous permettre d'exécuter des tâches uniques couvrant plusieurs instances EC2. Vous pouvez utiliser AWS Batch pour exécuter aisément et efficacement des charges de travail telles que des applications HPC (High Performance Computing) à grande échelle et étroitement liées ou une formation de modèle GPU distribuée. AWS Batch prend également en charge Elastic Fabric Adapter, une interface réseau qui permet d'exécuter des applications qui nécessitent de hauts niveaux de communication entre les nœuds à l'échelle sur AWS. 

Définitions précises des tâches et modélisation simplifiée des dépendances entre les tâches

AWS Batch vous permet de spécifier des besoins en ressources, tels que les vCPU et la mémoire, les rôles AWS Identity and Access Management(IAM), les points de montage de volume, les propriétés de conteneur et les variables d'environnement, pour définir le mode d'exécution des tâches. AWS Batch exécute vos tâches sous la forme d'applications conteneurisées lancées sur Amazon ECS. Batch vous permet également de définir des dépendances entre différentes tâches. Par exemple, votre tâche de traitement par lots peut être composée de trois étapes de traitement différentes auxquelles sont associés divers besoins en ressources. Grâce aux dépendances, vous pouvez créer trois tâches comportant des besoins en ressources différents, chaque tâche successive dépendant de la tâche précédente.

Planification des tâches en fonction des priorités

AWS Batch vous permet de configurer plusieurs files d'attente avec différents niveaux de priorité. Les tâches de traitement par lots sont stockées dans les requêtes jusqu'à ce que les ressources de calcul nécessaires à leur exécution soient disponibles. Le planificateur AWS Batch détermine quand, où et comment exécuter les tâches qui ont été soumises à une file d'attente en fonction des besoins en ressources de chaque tâche. Le planificateur évalue la priorité de chaque file d'attente et exécute les tâches dans l'ordre de priorité sur des ressources de calcul optimales (par ex., des instances optimisées pour la mémoire ou le processeur), à condition que les tâches ne possèdent aucune dépendance en suspens.

Prise en charge de la planification GPU

La planification GPU vous permet de préciser le nombre et le type d’accélérateurs dont vos tâches ont besoin en tant que variables d’entrée de définition des tâches sur AWS Batch. AWS Batch mettra à l'échelle les instances appropriées pour vos tâches en fonction du nombre de GPU requis et isolera les accélérateurs selon les besoins de chaque tâche, seuls les conteneurs peuvent donc y accéder.

AWS Batch peut être intégré à des moteurs de flux de travail et langages commerciaux et open source tels que Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow et AWS Step Functions, ce qui vous permet d'utiliser des langages de flux de travail que vous connaissez pour modéliser vos pipelines de calcul par lots.

Intégration avec les modèles de lancement EC2

AWS Batch prend désormais en charge les modèles de lancement EC2. Vous pouvez ainsi concevoir des modèles personnalisés pour vos ressources de calcul et permettre à Batch de dimensionner des instances en fonction de ces paramètres. Vous pouvez, entre autres, définir vos modèles de lancement EC2 pour ajouter des volumes de stockage, spécifier des interfaces réseau ou configurer des autorisations. Les modèles de lacement EC2 réduisent le nombre d'étapes requises pour la configuration d'un environnement Batch en capturant les paramètres de lancement au sein d'une ressource.

Stratégies d'allocation flexibles

AWS Batch permet aux clients de choisir trois méthodes d'allocation des ressources de calcul. Ces stratégies permettent aux clients de prendre en compte le débit ainsi que le tarif lorsqu'ils décident de la façon dont AWS Batch doit mettre à l'échelle les instances en leur nom.

Best Fit : AWS Batch sélectionne un type d'instance qui correspond le mieux aux besoins des tâches, avec une préférence pour le type d'instance le moins coûteux. Si des instances supplémentaires du type d'instance sélectionné ne sont pas disponibles, AWS Batch attendra que les instances supplémentaires soient disponibles. S'il n'y a pas assez d'instances disponibles, ou si l'utilisateur atteint les limites du service Amazon EC2, les tâches supplémentaires ne seront pas exécutées tant que les tâches en cours ne seront pas terminées. Cette stratégie d'allocation permet de maintenir les coûts à un niveau plus raisonnable, mais peut limiter la mise à l'échelle.

Best Fit Progressive : AWS Batch sélectionnera des types d'instance supplémentaires dont la taille est suffisamment importante pour répondre aux exigences des tâches dans la file d'attente, avec une préférence pour les types d'instance au coût par vCPU plus faible. Si des instances supplémentaires des types d'instance sélectionnés précédemment ne sont pas disponibles, AWS Batch sélectionnera de nouveaux types d'instance.

Spot Capacity Optimized : AWS Batch sélectionnera un ou plusieurs types d'instance dont la taille est suffisamment importante pour répondre aux exigences des tâches en attente, avec une préférence pour les types d'instance qui sont moins susceptibles d'être interrompus. Cette stratégie d'allocation est uniquement disponible pour les ressources de calcul d'instances Spot.

Surveillance et journalisation intégrées

AWS Batch affiche des métriques opérationnelles clés pour vos tâches de traitement par lots dans AWS Management Console. Vous pouvez consulter les métriques liées aux capacités de calcul, ainsi que les tâches en cours d'exécution, en attente et terminées. Les journaux de vos tâches (par ex., STDERR et STDOUT) sont disponibles dans AWS Management Console et sont également écrits dans Amazon CloudWatch Logs.

Contrôle précis des accès

AWS Batch utilise IAM pour contrôler et surveiller les ressources AWS auxquelles peuvent accéder vos tâches, telles que les tables Amazon DynamoDB. Grâce à IAM, vous pouvez également définir des stratégies pour différents utilisateurs dans votre organisation. Par exemple, les administrateurs peuvent se voir accorder des autorisations d'accès complet à une opération d'API AWS Batch, les développeurs peuvent disposer d'autorisations limitées pour la configuration d'environnements de calcul et l'enregistrement de tâches, et les utilisateurs finaux peuvent être limités aux autorisations nécessaires pour soumettre et supprimer des tâches.

En savoir plus sur la tarification d’AWS Batch

Visiter la page de tarification
Prêt à concevoir ?
Démarrer avec AWS Batch
D'autres questions ?
Contactez-nous