Exécutez des tâches Amazon ECS ou Fargate avec Step Functions - AWS Step Functions

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.

Exécutez des tâches Amazon ECS ou Fargate avec Step Functions

Découvrez comment intégrer Step Functions à Amazon ECS ou Fargate pour exécuter et gérer des tâches. Sur AmazonECS, une tâche est l'unité fondamentale du calcul. Les tâches sont définies par une définition de tâche qui indique comment un conteneur Docker doit être exécuté, y compris l'image du conteneur, CPU les limites de mémoire, la configuration réseau et d'autres paramètres. Cette page répertorie les ECS API actions Amazon disponibles et fournit des instructions sur la manière de transmettre des données à une ECS tâche Amazon à l'aide de Step Functions.

Pour en savoir plus sur l'intégration avec AWS services dans Step Functions, voir Intégration des services et. Transmission de paramètres à un service API dans Step Functions

Principales fonctionnalités de l'intégration optimisée entre Amazon et ECS Fargate
  • Le modèle Exécuter une tâche (.sync) d'intégration est pris en charge.

  • ecs:runTaskpeut renvoyer une réponse HTTP 200, mais avoir un Failures champ non vide comme suit :

    • Demande de réponse : renvoyez la réponse et n'échouez pas à la tâche. Cela revient à ne pas optimiser.

    • Exécuter un Job ou un jeton de tâche : si un Failures champ non vide est détecté, la tâche échoue avec une AmazonECS.Unknown erreur.

Amazon ECS /Fargate pris en charge APIs

Paramètres dans Step Functions sont exprimés en PascalCase

Même si le service natif API est activécamelCase, par exemple l'APIactionstartSyncExecution, vous spécifiez des paramètres dans PascalCase, tels que :StateMachineArn.

Transmission de données à une ECS tâche Amazon

Pour en savoir plus sur l'intégration avec AWS services dans Step Functions, voir Intégration des services et. Transmission de paramètres à un service API dans Step Functions

Vous pouvez l'utiliser overrides pour remplacer la commande par défaut d'un conteneur et transmettre des données à vos ECS tâches Amazon. Consultez ContainerOverride. Dans l'exemple, nous avons utilisé JsonPath pour transmettre des valeurs Task de l'entrée à l'Taskétat.

Ce qui suit inclut un Task état qui exécute une ECS tâche Amazon et attend qu'elle soit terminée.

{ "StartAt": "Run an ECS Task and wait for it to complete", "States": { "Run an ECS Task and wait for it to complete": { "Type": "Task", "Resource": "arn:aws:states:::ecs:runTask.sync", "Parameters": { "Cluster": "cluster-arn", "TaskDefinition": "job-id", "Overrides": { "ContainerOverrides": [ { "Name": "container-name", "Command.$": "$.commands" } ] } }, "End": true } } }

La ligne "Command.$": "$.commands" dans ContainerOverrides passe les commandes de l'entrée d'état au conteneur.

Pour l'exemple précédent, chacune des commandes sera passée comme un remplacement de conteneur si l'entrée de l'exécution est la suivante :

{ "commands": [ "test command 1", "test command 2", "test command 3" ] }

Ce qui suit inclut un Task état qui exécute une ECS tâche Amazon, puis attend que le jeton de tâche soit renvoyé. Consultez Attendre un rappel avec un jeton de tâche.

{ "StartAt":"Manage ECS task", "States":{ "Manage ECS task":{ "Type":"Task", "Resource":"arn:aws:states:::ecs:runTask.waitForTaskToken", "Parameters":{ "LaunchType":"FARGATE", "Cluster":"cluster-arn", "TaskDefinition":"job-id", "Overrides":{ "ContainerOverrides":[ { "Name":"container-name", "Environment":[ { "Name":"TASK_TOKEN_ENV_VARIABLE", "Value.$":"$$.Task.Token" } ] } ] } }, "End":true } } }

IAMpolitiques relatives aux appels à AmazonECS/AWS Fargate

Les exemples de modèles suivants montrent comment AWS Step Functions génère IAM des politiques basées sur les ressources contenues dans la définition de votre machine à états. Pour plus d’informations, consultez Comment Step Functions génère IAM des politiques pour les services intégrés et Découvrez les modèles d'intégration des services dans Step Functions.

Comme la valeur de n'TaskIdest pas connue tant que la tâche n'est pas soumise, Step Functions crée une "Resource": "*" politique plus privilégiée.

Note

Vous ne pouvez arrêter que les tâches Amazon Elastic Container Service (AmazonECS) lancées par Step Functions, malgré cette "*" IAM politique.

Run a Job (.sync)

Ressources statiques

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:[[region]]: [[accountId]]:task-definition/[[taskDefinition]]:[[revisionNumber]]" ] }, { "Effect": "Allow", "Action": [ "ecs:StopTask", "ecs:DescribeTasks" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:[[region]]: [[accountId]]:rule/StepFunctionsGetEventsForECSTaskRule" ] } ] }

Ressources dynamiques

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask", "ecs:StopTask", "ecs:DescribeTasks" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:[[region]]: [[accountId]]:rule/StepFunctionsGetEventsForECSTaskRule" ] } ] }
Request Response and Callback (.waitForTaskToken)

Ressources statiques

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:[[region]]: [[accountId]]:task-definition/[[taskDefinition]]:[[revisionNumber]]" ] } ] }

Ressources dynamiques

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": "*" } ] }

Si vos ECS tâches Amazon planifiées nécessitent l'utilisation d'un rôle d'exécution de tâche, d'un rôle de tâche ou d'un remplacement de rôle de tâche, vous devez ajouter des iam:PassRole autorisations pour chaque rôle d'exécution de tâche, rôle de tâche ou remplacement de rôle de tâche au IAM rôle CloudWatch Events de l'entité appelante, qui est dans ce cas Step Functions.