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.
Création d'une tâche Amazon ECS pour le type de EC2 lancement avec AWS CLI
Les étapes suivantes vous aideront à configurer un cluster, enregistrer une définition de tâche, exécuter une tâche et effectuer d'autres scénarios courants dans Amazon ECS avec la AWS CLI. Utilisez la dernière version du AWS CLI. Pour plus d'informations sur la mise à niveau vers la dernière version, voir Installation ou mise à jour vers la dernière version du AWS CLI.
Rubriques
- Prérequis
- Étape 1 : Créer un cluster
- Étape 2 : Lancer une instance avec l'AMI Amazon ECS
- Étape 3 : Répertorier les instances de conteneur
- Étape 4 : Décrire votre instance de conteneur
- Étape 5 : Enregistrer une définition de tâche
- Étape 6 : Répertorier les définitions de tâche
- Étape 7 : Exécuter une tâche
- Étape 8 : Répertorier les tâches
- Étape 9 : Décrire la tâche en cours d'exécution
Prérequis
Le didacticiel suppose de remplir les prérequis suivants :
-
La dernière version du AWS CLI est installée et configurée. Pour plus d'informations sur l'installation ou la mise à niveau de votre AWS CLI AWS CLI.
-
Vous devez avoir suivi les étapes de Configurer l'utilisation d'Amazon ECS.
-
Votre AWS utilisateur dispose des autorisations requises spécifiées dans l'exemple de politique Amazon ECS_ FullAccess IAM.
-
Vous avez un créé un VPC et un groupe de sécurité prêts à être utilisés. Pour de plus amples informations, veuillez consulter Créer un Virtual Private Cloud.
-
(Facultatif) AWS CloudShell est un outil qui fournit aux clients une ligne de commande sans avoir à créer leur propre EC2 instance. Pour plus d'informations, voir Qu'est-ce que c'est AWS CloudShell ? dans le guide de AWS CloudShell l'utilisateur.
Étape 1 : Créer un cluster
Par défaut, votre compte reçoit un cluster default
lorsque vous lancez votre première instance de conteneur.
Note
L'utilisation du cluster default
qui vous est fourni présente l'avantage que vous n'avez pas besoin de spécifier l'option --cluster
dans les commandes suivantes. Si vous créez votre propre cluster, sans valeur par défaut, vous devez spécifier cluster_name
--cluster
pour chaque commande que vous prévoyez d'utiliser avec ce cluster.cluster_name
Créez votre propre cluster avec un nom unique à l'aide de la commande suivante :
aws ecs create-cluster --cluster-name
MyCluster
Sortie :
{
"cluster": {
"clusterName": "MyCluster",
"status": "ACTIVE",
"clusterArn": "arn:aws:ecs:region
:aws_account_id
:cluster/MyCluster"
}
}
Étape 2 : Lancer une instance avec l'AMI Amazon ECS
Vous devez disposer d'une instance de conteneur Amazon ECS dans votre cluster avant de pouvoir y exécuter des tâches. Si vous ne disposez pas d'instances de conteneur dans votre cluster, consultez Lancement d'une instance de conteneur Amazon ECS Linux pour plus d'informations.
Étape 3 : Répertorier les instances de conteneur
Quelques minutes après le lancement de l'instance de conteneur, l'agent Amazon ECS enregistre l'instance avec votre cluster par défaut. Vous pouvez afficher les instances de conteneur d'un cluster en exécutant la commande suivante :
aws ecs list-container-instances --cluster
default
Sortie :
{
"containerInstanceArns": [
"arn:aws:ecs:us-east-1:aws_account_id
:container-instance/container_instance_ID
"
]
}
Étape 4 : Décrire votre instance de conteneur
Après avoir obtenu l'ARN ou l'ID d'une instance de conteneur, vous pouvez utiliser la commande describe-container-instances pour obtenir des informations importantes sur l'instance, comme les ressources UC et de mémoire restantes et enregistrées.
aws ecs describe-container-instances --cluster
default
--container-instancescontainer_instance_ID
Sortie :
{
"failures": [],
"containerInstances": [
{
"status": "ACTIVE",
"registeredResources": [
{
"integerValue": 1024,
"longValue": 0,
"type": "INTEGER",
"name": "CPU",
"doubleValue": 0.0
},
{
"integerValue": 995,
"longValue": 0,
"type": "INTEGER",
"name": "MEMORY",
"doubleValue": 0.0
},
{
"name": "PORTS",
"longValue": 0,
"doubleValue": 0.0,
"stringSetValue": [
"22",
"2376",
"2375",
"51678"
],
"type": "STRINGSET",
"integerValue": 0
},
{
"name": "PORTS_UDP",
"longValue": 0,
"doubleValue": 0.0,
"stringSetValue": [],
"type": "STRINGSET",
"integerValue": 0
}
],
"ec2InstanceId": "instance_id
",
"agentConnected": true,
"containerInstanceArn": "arn:aws:ecs:us-west-2:aws_account_id
:container-instance/container_instance_ID
",
"pendingTasksCount": 0,
"remainingResources": [
{
"integerValue": 1024,
"longValue": 0,
"type": "INTEGER",
"name": "CPU",
"doubleValue": 0.0
},
{
"integerValue": 995,
"longValue": 0,
"type": "INTEGER",
"name": "MEMORY",
"doubleValue": 0.0
},
{
"name": "PORTS",
"longValue": 0,
"doubleValue": 0.0,
"stringSetValue": [
"22",
"2376",
"2375",
"51678"
],
"type": "STRINGSET",
"integerValue": 0
},
{
"name": "PORTS_UDP",
"longValue": 0,
"doubleValue": 0.0,
"stringSetValue": [],
"type": "STRINGSET",
"integerValue": 0
}
],
"runningTasksCount": 0,
"attributes": [
{
"name": "com.amazonaws.ecs.capability.privileged-container"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.17"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
},
{
"name": "com.amazonaws.ecs.capability.logging-driver.json-file"
},
{
"name": "com.amazonaws.ecs.capability.logging-driver.syslog"
}
],
"versionInfo": {
"agentVersion": "1.5.0",
"agentHash": "b197edd",
"dockerVersion": "DockerVersion: 1.7.1"
}
}
]
}
Vous pouvez également trouver l'ID d' EC2 instance Amazon que vous pouvez utiliser pour surveiller l'instance dans la EC2 console Amazon ou à l'aide de la aws ec2 describe-instances --instance-id
instance_id
commande.
Étape 5 : Enregistrer une définition de tâche
Avant de pouvoir exécuter une tâche sur votre cluster ECS, vous devez enregistrer une définition de tâche. Les définitions de tâches sont des listes de conteneurs regroupés ensemble. L'exemple suivant est une définition de tâche simple qui utilise une image busybox
de Docker Hub et qui reste simplement en veille pendant 360 secondes. Pour plus d'informations sur les paramètres de définition des tâches disponibles, consultez Définitions de tâche Amazon ECS.
{ "containerDefinitions": [ { "name": "sleep", "image": "busybox", "cpu": 10, "command": [ "sleep", "360" ], "memory": 10, "essential": true } ], "family": "sleep360" }
L'exemple JSON ci-dessus peut être transmis AWS CLI au de deux manières : vous pouvez enregistrer la définition de tâche JSON sous forme de fichier et la transmettre avec l'
option. Vous pouvez également utiliser un caractère d'échappement pour les guillemets dans le fichier JSON et transmettre les définitions de conteneur JSON sur la ligne de commande comme dans l'exemple ci-dessous. Si vous choisissez de transmettre les définitions de conteneur sur la ligne de commande, votre commande nécessite également un paramètre --cli-input-json
file://path_to_file.json
--family
qui permet de conserver plusieurs versions de votre définition de tâche associées les unes aux autres.
Pour utiliser un fichier JSON pour les définitions de conteneur :
aws ecs register-task-definition --cli-input-json
file://$HOME/tasks/sleep360.json
Pour utiliser une chaîne JSON pour les définitions de conteneur :
aws ecs register-task-definition --family
sleep360
--container-definitions"[{\"name\":\"sleep\",\"image\":\"busybox\",\"cpu\":10,\"command\":[\"sleep\",\"360\"],\"memory\":10,\"essential\":true}]"
La commande register-task-definition renvoie une description de la définition de tâche une fois l'enregistrement terminé.
{
"taskDefinition": {
"volumes": [],
"taskDefinitionArn": "arn:aws:ec2:us-east-1:aws_account_id
:task-definition/sleep360:1",
"containerDefinitions": [
{
"environment": [],
"name": "sleep",
"mountPoints": [],
"image": "busybox",
"cpu": 10,
"portMappings": [],
"command": [
"sleep",
"360"
],
"memory": 10,
"essential": true,
"volumesFrom": []
}
],
"family": "sleep360",
"revision": 1
}
}
Étape 6 : Répertorier les définitions de tâche
Vous pouvez répertorier les définitions de tâches de votre compte à tout moment à l'aide de la commande list-task-definitions. La sortie de cette commande affiche les valeurs family
et revision
que vous pouvez utiliser ensemble lorsque vous appelez run-task ou start-task.
aws ecs list-task-definitions
Sortie :
{
"taskDefinitionArns": [
"arn:aws:ec2:us-east-1:aws_account_id
:task-definition/sleep300:1",
"arn:aws:ec2:us-east-1:aws_account_id
:task-definition/sleep300:2",
"arn:aws:ec2:us-east-1:aws_account_id
:task-definition/sleep360:1",
"arn:aws:ec2:us-east-1:aws_account_id
:task-definition/wordpress:3",
"arn:aws:ec2:us-east-1:aws_account_id
:task-definition/wordpress:4",
"arn:aws:ec2:us-east-1:aws_account_id
:task-definition/wordpress:5",
"arn:aws:ec2:us-east-1:aws_account_id
:task-definition/wordpress:6"
]
}
Étape 7 : Exécuter une tâche
Une fois que vous avez enregistré une tâche pour votre compte et que vous avez lancé une instance de conteneur qui est enregistrée sur votre cluster, vous pouvez exécuter la tâche enregistrée dans votre cluster. Pour cet exemple, vous placez une seule instance de la définition de tâche sleep360:1
dans votre cluster par défaut.
aws ecs run-task --cluster
default
--task-definitionsleep360:1
--count1
Sortie :
{
"tasks": [
{
"taskArn": "arn:aws:ecs:us-east-1:aws_account_id
:task/task_ID
",
"overrides": {
"containerOverrides": [
{
"name": "sleep"
}
]
},
"lastStatus": "PENDING",
"containerInstanceArn": "arn:aws:ecs:us-east-1:aws_account_id
:container-instance/container_instance_ID
",
"clusterArn": "arn:aws:ecs:us-east-1:aws_account_id
:cluster/default",
"desiredStatus": "RUNNING",
"taskDefinitionArn": "arn:aws:ecs:us-east-1:aws_account_id
:task-definition/sleep360:1",
"containers": [
{
"containerArn": "arn:aws:ecs:us-east-1:aws_account_id
:container/container_ID
",
"taskArn": "arn:aws:ecs:us-east-1:aws_account_id
:task/task_ID
",
"lastStatus": "PENDING",
"name": "sleep"
}
]
}
]
}
Étape 8 : Répertorier les tâches
Affichez les tâches de votre cluster. Vous devez voir la tâche que vous avez exécutée dans la section précédente. Vous pouvez noter l'ID de la tâche ou l'ARN complet qui est renvoyé par cette commande et l'utiliser pour décrire la tâche ultérieurement.
aws ecs list-tasks --cluster
default
Sortie :
{
"taskArns": [
"arn:aws:ecs:us-east-1:aws_account_id
:task/task_ID
"
]
}
Étape 9 : Décrire la tâche en cours d'exécution
Décrivez la tâche à l'aide de l'ID de tâche récupérée précédemment afin d'obtenir plus d'informations sur la tâche.
aws ecs describe-tasks --cluster
default
--tasktask_ID
Sortie :
{
"failures": [],
"tasks": [
{
"taskArn": "arn:aws:ecs:us-east-1:aws_account_id
:task/task_ID
",
"overrides": {
"containerOverrides": [
{
"name": "sleep"
}
]
},
"lastStatus": "RUNNING",
"containerInstanceArn": "arn:aws:ecs:us-east-1:aws_account_id
:container-instance/container_instance_ID
",
"clusterArn": "arn:aws:ecs:us-east-1:aws_account_id
:cluster/default",
"desiredStatus": "RUNNING",
"taskDefinitionArn": "arn:aws:ecs:us-east-1:aws_account_id
:task-definition/sleep360:1",
"containers": [
{
"containerArn": "arn:aws:ecs:us-east-1:aws_account_id
:container/container_ID
",
"taskArn": "arn:aws:ecs:us-east-1:aws_account_id
:task/task_ID
",
"lastStatus": "RUNNING",
"name": "sleep",
"networkBindings": []
}
]
}
]
}