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:runTask
peut renvoyer une réponse HTTP 200, mais avoir unFailures
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 uneAmazonECS.Unknown
erreur.
Amazon ECS /Fargate pris en charge APIs
-
RunTask
démarre une nouvelle tâche à l'aide de la définition de tâche spécifiée.
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'TaskId
est 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.
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.