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.
Découvrez comment intégrer Step Functions à Amazon ECS ou Fargate pour exécuter et gérer des tâches. Dans Amazon ECS, une tâche est l'unité de calcul fondamentale. Les tâches sont définies par une définition de tâche qui indique comment un conteneur Docker doit être exécuté, notamment l'image du conteneur, les limites de processeur et de mémoire, la configuration réseau et d'autres paramètres. Cette page répertorie les actions d'API Amazon ECS disponibles et fournit des instructions sur la façon de transmettre des données à une tâche Amazon ECS à l'aide de Step Functions.
Pour en savoir plus sur l'intégration aux AWS services dans Step Functions, consultez Intégration des services etTransmission de paramètres à une API de service dans Step Functions.
Principales fonctionnalités de l'intégration optimisée entre Amazon 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 : renvoie la réponse et n'échoue 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 optimisé 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 l'API de service native se trouve dans CamelCase, par exemple l'startSyncExecution
action d'API, vous spécifiez des paramètres PascalCase dans, tels que :. StateMachineArn
Transmission de données à une tâche Amazon ECS
Pour en savoir plus sur l'intégration aux AWS services dans Step Functions, consultez Intégration des services etTransmission de paramètres à une API de service dans Step Functions.
Vous pouvez l'utiliser overrides
pour remplacer la commande par défaut d'un conteneur et transmettre des données à vos tâches Amazon ECS. 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 tâche Amazon ECS 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 tâche Amazon ECS, 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
}
}
}
Politiques IAM pour appeler Amazon ECS/AWS Fargate
Les exemples de modèles suivants montrent comment AWS Step Functions générer des politiques IAM en fonction des ressources contenues dans la définition de votre machine d'état. Pour plus d’informations, consultez Comment Step Functions génère des politiques IAM 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 (Amazon ECS) lancées par Step Functions, malgré "*"
la politique IAM.
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"
]
}
]
}
Si vos tâches Amazon ECS 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 rôle CloudWatch Events IAM de l'entité appelante, qui est dans ce cas Step Functions.