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 ECS tâche Amazon pour le type de EC2 lancement avec AWS CLI
Les étapes suivantes vous aident à configurer un cluster, à enregistrer une définition de tâche, à exécuter une tâche et à réaliser d'autres scénarios courants sur Amazon ECS avec le AWS CLI. Utilisez la dernière version du AWS CLI. Pour savoir comment opérer une mise à niveau vers la dernière version, consultez Installation de AWS Command Line Interface.
Rubriques
- Prérequis
- Étape 1 : Créer un cluster
- Étape 2 : Lancer une instance avec Amazon ECS AMI
- É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 Command Line Interface.
-
Vous devez avoir suivi les étapes de Configurer pour utiliser Amazon ECS.
-
Votre AWS utilisateur dispose des autorisations requises spécifiées dans l'exemple Amazon ECS _ FullAccess IAM de politique.
-
Un groupe de sécurité VPC et vous avez été créé pour être utilisé. 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 Amazon ECS AMI
Vous devez disposer d'une instance de ECS conteneur Amazon 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 votre instance de conteneur, l'ECSagent Amazon enregistre l'instance auprès de 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
Une fois que vous avez obtenu l'ID ARN ou l'ID d'une instance de conteneur, vous pouvez utiliser la describe-container-instances commande pour obtenir des informations précieuses sur l'instance, telles que les ressources restantes et enregistrées CPU et les ressources de mémoire.
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'EC2instance 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 ECS cluster, 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 ECS de tâches Amazon.
{ "containerDefinitions": [ { "name": "sleep", "image": "busybox", "cpu": 10, "command": [ "sleep", "360" ], "memory": 10, "essential": true } ], "family": "sleep360" }
L'exemple ci-dessus JSON peut être transmis de deux AWS CLI manières : vous pouvez enregistrer la définition de la tâche JSON sous forme de fichier et la transmettre avec l'
option. Vous pouvez également éviter les guillemets JSON et transmettre les définitions de JSON conteneurs 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 JSON fichier pour les définitions de conteneurs :
aws ecs register-task-definition --cli-input-json
file://$HOME/tasks/sleep360.json
Pour utiliser une JSON chaîne pour les définitions de conteneurs :
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 utiliser l'ID de tâche ou le numéro complet ARN renvoyé par cette commande 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": []
}
]
}
]
}