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.
Rubriques
Conditions préalables
Avant de commencer ce didacticiel, assurez-vous de disposer des éléments suivants.
-
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.
-
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. -
Connaissance de base des interfaces de ligne de commande et des concepts de conteneurisation.
-
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
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-groups dans 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 --jobs1509xmpl-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
Étapes suivantes
Maintenant que vous avez terminé ce didacticiel, vous pouvez découvrir des AWS Batch fonctionnalités plus avancées :
-
Files d'attente pour les jobs— En savoir plus sur la planification des files d'attente et la gestion des priorités
-
Définitions des emplois— Explorez les configurations avancées de définition des tâches, notamment les variables d'environnement, les volumes et les stratégies de nouvelle tentative
-
Environnements informatiques pour AWS Batch— Comprendre les différents types d'environnements informatiques et les options de mise à l'échelle
-
Tâches parallèles sur plusieurs nœuds— Exécute des tâches qui s'étendent sur plusieurs nœuds de calcul
-
Tâches liées à— Soumettez efficacement un grand nombre de tâches similaires
-
Les meilleures pratiques pour AWS Batch— Apprenez les techniques d'optimisation des charges de travail de production