Creazione di un'ECSattività Amazon per il tipo di EC2 lancio con AWS CLI - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di un'ECSattività Amazon per il tipo di EC2 lancio con AWS CLI

La procedura seguente illustra come configurare un cluster, registrare una definizione dei processi, eseguire un processo e come eseguire altri scenari comuni in Amazon ECS con la AWS CLI. Usa la versione più recente di AWS CLI. Per ulteriori informazioni sull'aggiornamento all'ultima versione, consulta Installazione o aggiornamento della versione più recente della AWS CLI.

Prerequisiti

Questo tutorial presuppone che siano stati soddisfatti i prerequisiti seguenti:

Fase 1: creare un cluster

All'avvio della prima istanza di container, di default l'account riceve il cluster default.

Nota

Utilizzare il cluster default offre il vantaggio di non dover specificare l'opzione --cluster cluster_name nei comandi successivi. Se crei un cluster diverso da quello predefinito, devi specificare ì--cluster cluster_name per ogni comando che prevedi di usare con tale cluster.

Crea il tuo cluster con un nome univoco con il comando seguente:

aws ecs create-cluster --cluster-name MyCluster

Output:

{ "cluster": { "clusterName": "MyCluster", "status": "ACTIVE", "clusterArn": "arn:aws:ecs:region:aws_account_id:cluster/MyCluster" } }

Fase 2: Avvio di un'istanza con Amazon ECS AMI

Devi disporre di un'istanza di ECS container Amazon nel cluster prima di potervi eseguire operazioni. Se non disponi di istanze di container nel cluster, consulta Avvio di un'istanza di container Amazon ECS Linux per ulteriori informazioni.

Fase 3: Elenca le istanze di container

Entro pochi minuti dall'avvio dell'istanza di container, l'ECSagente Amazon registra quest'ultima nel cluster predefinito. Per visualizzare l'elenco delle istanze di container in un cluster, esegui questo comando:

aws ecs list-container-instances --cluster default

Output:

{ "containerInstanceArns": [ "arn:aws:ecs:us-east-1:aws_account_id:container-instance/container_instance_ID" ] }

Fase 4: Descrivi la tua istanza di container

Dopo aver ottenuto l'ID ARN o di un'istanza del contenitore, puoi utilizzare il describe-container-instances comando per ottenere informazioni preziose sull'istanza, come le risorse rimanenti e registrate CPU e le risorse di memoria.

aws ecs describe-container-instances --cluster default --container-instances container_instance_ID

Output:

{ "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" } } ] }

Puoi anche trovare l'ID dell'EC2istanza Amazon che puoi utilizzare per monitorare l'istanza nella EC2 console Amazon o con il aws ec2 describe-instances --instance-id instance_id comando.

Fase 5: Registra una definizione di attività

Prima di eseguire un'attività nel ECS cluster, devi registrare una definizione di attività. Le definizioni di attività sono elenchi di container raggruppati. L'esempio seguente illustra una semplice definizione di attività che utilizza un'immagine busybox da Docker Hub ed entra semplicemente in sospensione per 360 secondi. Per ulteriori informazioni sui parametri disponibili per la definizione di attività, consulta Definizioni dei ECS processi di Amazon.

{ "containerDefinitions": [ { "name": "sleep", "image": "busybox", "cpu": 10, "command": [ "sleep", "360" ], "memory": 10, "essential": true } ], "family": "sleep360" }

L'esempio precedente JSON può essere passato a AWS CLI in due modi: è possibile salvare la definizione dell'attività JSON come file e passarla con l'--cli-input-json file://path_to_file.jsonopzione. In alternativa, è possibile evitare le virgolette JSON e passare le definizioni dei JSON contenitori sulla riga di comando, come nell'esempio seguente. Se scegli di trasmettere le definizioni del container nella riga di comando, è necessario aggiungere al comando il parametro --family utilizzato per mantenere la reciproca associazione tra più versioni della definizione di attività.

Per utilizzare un JSON file per le definizioni dei contenitori:

aws ecs register-task-definition --cli-input-json file://$HOME/tasks/sleep360.json

Per utilizzare una JSON stringa per le definizioni dei contenitori:

aws ecs register-task-definition --family sleep360 --container-definitions "[{\"name\":\"sleep\",\"image\":\"busybox\",\"cpu\":10,\"command\":[\"sleep\",\"360\"],\"memory\":10,\"essential\":true}]"

Il comando register-task-definition restituisce una descrizione della definizione di attività una volta completata la registrazione.

{ "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 } }

Fase 6: Elenca le definizioni di attività

Puoi sempre ottenere un elenco delle definizioni di attività per il tuo account tramite il comando list-task-definitions. Il risultato restituito dal comando mostra i valori family e revision che puoi utilizzare insieme nelle chiamate run-task o start-task.

aws ecs list-task-definitions

Output:

{ "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" ] }

Fase 7: Esegui un'attività

Dopo aver registrato un'attività per il tuo account e aver avviato un'istanza di container registrata nel cluster, puoi eseguire l'attività registrata in tale cluster. In questo esempio, una singola istanza della definizione di attività sleep360:1 viene posizionata nel tuo cluster predefinito.

aws ecs run-task --cluster default --task-definition sleep360:1 --count 1

Output:

{ "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" } ] } ] }

Fase 8: Elenca le attività

Ottieni un elenco delle attività per il tuo cluster. Verrà visualizzata l'attività eseguita nella sezione precedente. È possibile prendere l'ID dell'attività o il valore completo ARN restituito da questo comando e utilizzarlo per descrivere l'attività in un secondo momento.

aws ecs list-tasks --cluster default

Output:

{ "taskArns": [ "arn:aws:ecs:us-east-1:aws_account_id:task/task_ID" ] }

Fase 9: Descrivi l'attività in esecuzione

Per ottenere ulteriori informazioni sulle attività, descrivi l'attività utilizzando l'ID recuperato in precedenza.

aws ecs describe-tasks --cluster default --task task_ID

Output:

{ "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": [] } ] } ] }