Commencer à utiliser AWS Batch et Fargate à l'aide du AWS CLI - AWS Batch

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Commencer à utiliser AWS Batch et Fargate à l'aide du AWS CLI

Ce didacticiel explique comment configurer AWS Batch l' AWS Fargate orchestration et exécuter une simple tâche « Hello World » à l'aide du AWS Command Line Interface (AWS CLI). Vous apprendrez à créer des environnements informatiques, des files d'attente de tâches, des définitions de tâches et à soumettre des tâches à AWS Batch.

Conditions préalables

Avant de commencer ce didacticiel, assurez-vous de disposer des éléments suivants.

  1. Le AWS CLI. Si vous devez l’installer, suivez les instructions du Guide d’installation de l’AWS CLI. Vous pouvez également utiliser AWS CloudShell, ce qui inclut le AWS CLI.

  2. Vous avez configuré AWS CLI avec les informations d'identification appropriées. Si vous n’avez pas encore configuré vos informations d’identification, exécutez la commande aws configure.

  3. Connaissance de base des interfaces de ligne de commande et des concepts de conteneurisation.

  4. Comment AWS Batch fonctionne avec IAMpour créer et gérer AWS Batch des ressources, des rôles IAM et des ressources VPC dans votre. Compte AWS

  5. Un ID de sous-réseau et un ID de groupe de sécurité provenant d'un VPC de votre. Compte AWS Si vous n'avez pas de VPC, vous pouvez en créer un. Pour plus d'informations sur l'utilisation de AWS CLI pour récupérer ces ressources IDs, consultez describe-subnets et describe-security-groupsdans le AWS CLI manuel de référence des commandes.

Temps requis : environ 15 à 20 minutes pour terminer ce didacticiel.

Coût : ce didacticiel utilise les ressources de calcul de Fargate. Le coût estimé pour terminer ce didacticiel est inférieur à 0,01 USD, en supposant que vous suiviez les instructions de nettoyage pour supprimer les ressources immédiatement après l'avoir terminé. La tarification Fargate est basée sur les ressources vCPU et mémoire consommées, facturées à la seconde avec un minimum d'une minute. Pour obtenir des informations sur les prix actuels, consultez la section AWS Fargate sur les prix.

Création d'un rôle d'exécution IAM

AWS Batch nécessite un rôle d'exécution qui permet aux agents Amazon Elastic Container Service (Amazon ECS) de passer des AWS appels d'API en votre nom. Ce rôle est nécessaire pour que les tâches Fargate puissent extraire des images de conteneurs et écrire des journaux sur Amazon. CloudWatch

Création d'un document de politique de confiance

Tout d'abord, créez une politique de confiance qui permet au service des tâches Amazon ECS d'assumer ce rôle.

cat > batch-execution-role-trust-policy.json << EOF { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF

Création du rôle d'exécution

La commande suivante crée un rôle IAM nommé à BatchEcsTaskExecutionRoleTutorial l'aide de la politique de confiance que vous venez de créer.

aws iam create-role \ --role-name BatchEcsTaskExecutionRoleTutorial \ --assume-role-policy-document file://batch-execution-role-trust-policy.json

Joindre la politique requise

Joignez la politique AWS gérée qui fournit les autorisations nécessaires à l'exécution des tâches Amazon ECS.

aws iam attach-role-policy \ --role-name BatchEcsTaskExecutionRoleTutorial \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy

Le rôle est maintenant prêt à être utilisé AWS Batch pour l'exécution de tâches Fargate.

Création d'un environnement informatique

Un environnement de calcul définit les ressources de calcul sur lesquelles vos tâches par lots seront exécutées. Dans le cadre de ce didacticiel, vous allez créer un environnement informatique Fargate géré qui provisionne et adapte automatiquement les ressources en fonction des exigences du poste.

Création de l'environnement informatique

La commande suivante crée un environnement de calcul Fargate. Remplacez l'exemple de sous-réseau et de groupe de sécurité par IDs les vôtres, conformément auConditions préalables.

aws batch create-compute-environment \ --compute-environment-name my-fargate-compute-env \ --type MANAGED \ --state ENABLED \ --compute-resources type=FARGATE,maxvCpus=128,subnets=subnet-a123456b,securityGroupIds=sg-a12b3456

Ce qui suit montre à quoi ressemble le résultat lorsque la commande est exécutée avec succès.

{ "computeEnvironmentName": "my-fargate-compute-env", "computeEnvironmentArn": "arn:aws:batch:us-west-2:123456789012:compute-environment/my-fargate-compute-env" }

Attendez que l'environnement informatique soit prêt

Vérifiez l'état de votre environnement informatique pour vous assurer qu'il est prêt avant de continuer.

aws batch describe-compute-environments \ --compute-environments my-fargate-compute-env \ --query 'computeEnvironments[0].status'
"VALID"

Lorsque le statut s'afficheVALID, votre environnement informatique est prêt à accepter des tâches.

Création d'une file d'attente de tâches

Une file d'attente de tâches stocke les tâches soumises jusqu'à ce que le AWS Batch planificateur les exécute sur les ressources de votre environnement informatique. Les tâches sont traitées par ordre de priorité dans la file d'attente.

Création de la file d'attente des tâches

La commande suivante crée une file d'attente de tâches de priorité 900 qui utilise votre environnement informatique Fargate.

aws batch create-job-queue \ --job-queue-name my-fargate-job-queue \ --state ENABLED \ --priority 900 \ --compute-environment-order order=1,computeEnvironment=my-fargate-compute-env

Ce qui suit montre à quoi ressemble le résultat lorsque la commande est exécutée avec succès.

{ "jobQueueName": "my-fargate-job-queue", "jobQueueArn": "arn:aws:batch:us-west-2:123456789012:job-queue/my-fargate-job-queue" }

Vérifiez que la file d'attente des tâches est prête

Vérifiez que votre file d'attente est en bon ENABLED état et prête à accepter des offres d'emploi.

aws batch describe-job-queues \ --job-queues my-fargate-job-queue \ --query 'jobQueues[0].state' "ENABLED"

Créer une définition de tâche

Une définition de tâche indique la manière dont les tâches doivent être exécutées, y compris l'image Docker à utiliser, les besoins en ressources et d'autres paramètres. Pour Fargate, vous utiliserez les besoins en ressources plutôt que les paramètres traditionnels de vCPU et de mémoire.

Création de la définition de tâche

La commande suivante crée une définition de tâche qui exécute une simple commande « hello world » à l'aide de l'image du conteneur busybox. 123456789012Remplacez-le par votre Compte AWS identifiant actuel et remplacez l'exemple Région AWS par le vôtre.

aws batch register-job-definition \ --job-definition-name my-fargate-job-def \ --type container \ --platform-capabilities FARGATE \ --container-properties '{ "image": "busybox", "resourceRequirements": [ {"type": "VCPU", "value": "0.25"}, {"type": "MEMORY", "value": "512"} ], "command": ["echo", "hello world"], "networkConfiguration": { "assignPublicIp": "ENABLED" }, "executionRoleArn": "arn:aws:iam::123456789012:role/BatchEcsTaskExecutionRoleTutorial" }, { "jobDefinitionName": "my-fargate-job-def", "jobDefinitionArn": "arn:aws:batch:us-west-2:123456789012:job-definition/my-fargate-job-def:1", "revision": 1 }'

La définition de la tâche spécifie 0,25 vCPU et 512 Mo de mémoire, qui sont les ressources minimales pour une tâche Fargate. Le assignPublicIp paramètre est activé afin que le conteneur puisse extraire l'image Busybox depuis Docker Hub.

Soumettre et suivre une offre d'emploi

Maintenant que vous disposez de tous les composants nécessaires, vous pouvez ajouter une tâche à votre file d'attente et suivre sa progression.

Soumettre une offre d'emploi

La commande suivante soumet une tâche à votre file d'attente à l'aide de la définition de tâche que vous avez créée.

aws batch submit-job \ --job-name my-hello-world-job \ --job-queue my-fargate-job-queue \ --job-definition my-fargate-job-def

Ce qui suit montre à quoi ressemble le résultat lorsque la commande est exécutée avec succès.

{ "jobArn": "arn:aws:batch:us-west-2:123456789012:job/my-hello-world-job", "jobName": "my-hello-world-job", "jobId": "1509xmpl-4224-4da6-9ba9-1d1acc96431a" }

Notez les informations jobId renvoyées dans la réponse, car vous les utiliserez pour suivre la progression de la tâche.

Surveiller le statut du travail

Utilisez l'identifiant de la tâche pour vérifier le statut de votre tâche. La tâche progressera dans plusieurs états :SUBMITTED,PENDING,RUNNABLE,STARTING,RUNNING, et enfin SUCCEEDED ouFAILED.

aws batch describe-jobs --jobs 1509xmpl-4224-4da6-9ba9-1d1acc96431a

Ce qui suit montre à quoi ressemble le résultat lorsque la commande est exécutée avec succès.

{ "jobs": [ { "jobArn": "arn:aws:batch:us-west-2:123456789012:job/my-hello-world-job", "jobName": "my-hello-world-job", "jobId": "1509xmpl-4224-4da6-9ba9-1d1acc96431a", "jobQueue": "arn:aws:batch:us-west-2:123456789012:job-queue/my-fargate-job-queue", "status": "SUCCEEDED", "createdAt": 1705161908000, "jobDefinition": "arn:aws:batch:us-west-2:123456789012:job-definition/my-fargate-job-def:1" } ] }

Lorsque le statut s'afficheSUCCEEDED, votre travail est terminé avec succès.

Afficher le résultat de la tâche

Une fois votre tâche terminée, vous pouvez consulter ses résultats dans Amazon CloudWatch Logs.

Obtenez le nom du flux de log

Tout d'abord, récupérez le nom du flux de journal à partir des détails de la tâche. Remplacez l'exemple d'identifiant de tâche par le vôtre.

aws batch describe-jobs --jobs 1509xmpl-4224-4da6-9ba9-1d1acc96431a \ --query 'jobs[0].attempts[0].containers[0].logStreamName' \ --output text
my-fargate-job-def/default/1509xmpl-4224-4da6-9ba9-1d1acc96431a

Afficher les journaux des tâches

Utilisez le nom du flux de journal pour récupérer le résultat de la tâche à partir de CloudWatch Logs.

aws logs get-log-events \ --log-group-name /aws/batch/job \ --log-stream-name my-fargate-job-def/default/1509xmpl-4224-4da6-9ba9-1d1acc96431a \ --query 'events[*].message' \ --output text

Le résultat indique « Bonjour tout le monde », confirmant que votre tâche a été exécutée correctement.

nettoyer des ressources ;

Pour éviter les frais récurrents, nettoyez les ressources que vous avez créées dans ce didacticiel. Vous devez supprimer les ressources dans le bon ordre en raison des dépendances.

Désactiver et supprimer la file d'attente des tâches

Tout d'abord, désactivez la file d'attente des tâches, puis supprimez-la.

aws batch update-job-queue \ --job-queue my-fargate-job-queue \ --state DISABLED
aws batch delete-job-queue \ --job-queue my-fargate-job-queue

Désactiver et supprimer l'environnement informatique

Une fois la file d'attente des tâches supprimée, désactivez et supprimez l'environnement informatique.

aws batch update-compute-environment \ --compute-environment my-fargate-compute-env \ --state DISABLED
aws batch delete-compute-environment \ --compute-environment my-fargate-compute-env

Nettoyez le rôle IAM

Supprimez la pièce jointe à la politique et supprimez le rôle IAM.

aws iam detach-role-policy \ --role-name BatchEcsTaskExecutionRoleTutorial \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
aws iam delete-role \ --role-name BatchEcsTaskExecutionRoleTutorial

Supprimer les fichiers temporaires

Supprimez le fichier de politique de confiance que vous avez créé.

rm batch-execution-role-trust-policy.json

Toutes les ressources ont été nettoyées avec succès.

Passage en production

Ce didacticiel est conçu pour vous aider à comprendre comment AWS Batch fonctionne Fargate. Pour les déploiements en production, tenez compte des exigences supplémentaires suivantes :

Considérations relatives à la sécurité :
  • Créez des groupes de sécurité dédiés avec un accès minimal requis au lieu d'utiliser des groupes de sécurité par défaut

  • Utiliser des sous-réseaux privés avec NAT Gateway au lieu de l'attribution d'une adresse IP publique pour les conteneurs

  • Stockez les images de conteneurs dans Amazon ECR au lieu d'utiliser des référentiels publics

  • Implémenter des points de terminaison VPC pour les communications de AWS service afin d'éviter le trafic Internet

Considérations relatives à l'architecture :
  • Déployez sur plusieurs zones de disponibilité pour une haute disponibilité

  • Mettre en œuvre des stratégies de relance des tâches et des files d'attente lettre morte pour la gestion des erreurs

  • Utilisez plusieurs files d'attente de tâches avec des priorités différentes pour la gestion de la charge de travail

  • Configurer des politiques de dimensionnement automatique en fonction de la profondeur de la file d'attente et de l'utilisation des ressources

  • Mettre en œuvre la surveillance et les alertes en cas d'échec des tâches et d'utilisation des ressources

Considérations opérationnelles :
  • Configuration de CloudWatch tableaux de bord et d'alarmes pour la surveillance

  • Mettre en œuvre une journalisation et des pistes d'audit appropriées

  • Utiliser CloudFormation ou l'infrastructure AWS CDK for sous forme de code

  • Mettre en place des procédures de sauvegarde et de reprise après sinistre

Pour obtenir des conseils complets sur les architectures prêtes pour la production, consultez le AWS Well-Architected Framework et les meilleures pratiques en matière de sécurité.AWS

Étapes suivantes

Maintenant que vous avez terminé ce didacticiel, vous pouvez découvrir des AWS Batch fonctionnalités plus avancées :