Erstellen einer ECS Amazon-Aufgabe für den EC2 Starttyp mit dem AWS CLI - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen einer ECS Amazon-Aufgabe für den EC2 Starttyp mit dem AWS CLI

Die folgenden Schritte helfen Ihnen dabei, einen Cluster einzurichten, eine Aufgabendefinition zu registrieren, eine Aufgabe auszuführen und andere gängige Szenarien in Amazon ECS mit dem durchzuführen AWS CLI. Verwenden Sie die neueste Version von AWS CLI. Weitere Informationen zur Aktualisierung auf die neueste Version finden Sie unter Installieren der AWS Command Line Interface.

Voraussetzungen

In diesem Tutorial wird davon ausgegangen, dass die folgenden Voraussetzungen erfüllt wurden:

Schritt 1: Erstellen eines Clusters

Standardmäßig erhält Ihr Konto beim Start Ihrer ersten Container-Instance einen Cluster default.

Anmerkung

Wenn Sie den bereitgestellten Cluster default verwenden, hat dies den Vorteil, dass Sie in den nachfolgenden Befehlen nicht die Option --cluster cluster_name angeben müssen. Wenn Sie Ihren eigenen, nicht standardmäßigen Cluster erstellen, müssen Sie --cluster cluster_name für jeden Befehl angeben, den Sie mit diesem Cluster verwenden möchten.

Erstellen Sie mit dem folgenden Befehl Ihren eigenen Cluster mit eindeutigem Namen:

aws ecs create-cluster --cluster-name MyCluster

Ausgabe:

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

Schritt 2: Starten Sie eine Instance mit Amazon ECS AMI

Sie müssen eine ECS Amazon-Container-Instance in Ihrem Cluster haben, bevor Sie Aufgaben darauf ausführen können. Wenn es in Ihrem Cluster keine Container-Instances gibt, beachten Sie die Informationen im Abschnitt Starten einer Amazon ECS Linux-Container-Instance.

Schritt 3: Auflisten von Container-Instances

Innerhalb weniger Minuten nach dem Start Ihrer Container-Instance registriert der ECS Amazon-Agent die Instance bei Ihrem Standard-Cluster. Die Container-Instances in einem Cluster können mit dem folgenden Befehl aufgelistet werden:

aws ecs list-container-instances --cluster default

Ausgabe:

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

Schritt 4: Beschreiben Ihrer Container-Instance

Nachdem Sie die ARN Oder-ID einer Container-Instance erhalten haben, können Sie den describe-container-instances Befehl verwenden, um wertvolle Informationen über die Instance abzurufen, z. B. verbleibende CPU und registrierte Ressourcen sowie Speicherressourcen.

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

Ausgabe:

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

Sie finden die EC2 Amazon-Instance-ID, mit der Sie die Instance überwachen können, auch in der EC2 Amazon-Konsole oder mit dem aws ec2 describe-instances --instance-id instance_id Befehl.

Schritt 5: Registrieren einer Aufgabendefinition

Bevor Sie eine Aufgabe auf Ihrem ECS Cluster ausführen können, müssen Sie eine Aufgabendefinition registrieren. Aufgabendefinitionen sind Listen zusammengefasster Container. Im folgenden Beispiel sehen Sie eine einfache Aufgabendefinition, die ein busybox-Image aus dem Docker-Hub verwendet und sich einfach 360 Sekunden im Ruhezustand befindet. Weitere Informationen zu den verfügbaren Parametern für die Aufgabendefinition finden Sie im Abschnitt ECSAmazon-Aufgabendefinitionen.

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

Das obige Beispiel JSON kann auf zwei Arten AWS CLI an die übergeben werden: Sie können die Aufgabendefinition JSON als Datei speichern und sie mit der --cli-input-json file://path_to_file.json Option übergeben. Oder Sie können die Anführungszeichen in der umgehen JSON und die JSON Containerdefinitionen wie im folgenden Beispiel in der Befehlszeile übergeben. Wenn Sie die Containerdefinitionen in der Befehlszeile übergeben möchten, müssen Sie in dem Befehl zusätzlich einen Parameter --family angeben, damit mehrere Versionen Ihrer Aufgabendefinition miteinander verbunden bleiben.

Um eine JSON Datei für Containerdefinitionen zu verwenden:

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

Um eine JSON Zeichenfolge für Containerdefinitionen zu verwenden:

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

Der Befehl register-task-definition gibt nach Abschluss der Registrierung eine Beschreibung der Aufgabendefinition zurück.

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

Schritt 6: Auflisten der Aufgabendefinitionen

Sie können die Aufgabendefinitionen für Ihr Konto jederzeit mit dem Befehl list-task-definitions auflisten. In der Ausgabe dieses Befehls werden die Werte family und revision angezeigt, die Sie beim Aufruf von run-task oder start-task gemeinsam verwenden können.

aws ecs list-task-definitions

Ausgabe:

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

Schritt 7: Ausführen einer Task

Nachdem Sie eine Aufgabe für Ihr Konto registriert und eine für Ihren Cluster registrierte Container-Instance gestartet haben, können Sie die registrierte Aufgabe in Ihrem Cluster ausführen. In diesem Beispiel stellen Sie eine einzelne Instance der Aufgabendefinition sleep360:1 in Ihren Standardcluster.

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

Ausgabe:

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

Schritt 8: Auflisten der Aufgaben

Listen Sie die Aufgaben für Ihren Cluster auf. Die im vorherigen Abschnitt ausgeführte Aufgabe müsste angezeigt werden. Sie können die Aufgaben-ID oder die vollständige IDARN, die von diesem Befehl zurückgegeben wird, verwenden, um die Aufgabe später zu beschreiben.

aws ecs list-tasks --cluster default

Ausgabe:

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

Schritt 9: Beschreibung der gerade ausgeführten Aufgabe

Beschreiben Sie die Aufgabe und verwenden Sie dazu die zuvor abgerufene Aufgaben-ID, um weitere Informationen über die Aufgabe zu erhalten.

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

Ausgabe:

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