Erfahren Sie, wie Sie eine Aufgabe für Amazon ECS Managed Instances erstellen können 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.

Erfahren Sie, wie Sie eine Aufgabe für Amazon ECS Managed Instances erstellen können mit dem AWS CLI

Mithilfe der folgenden Schritte können Sie mit der AWS CLI einen Cluster einrichten, einen Kapazitätsanbieter erstellen, eine Aufgabendefinition registrieren, eine Linux-Aufgabe ausführen sowie andere allgemeine Szenarien in Amazon ECS mit Amazon ECS Managed Instances umsetzen. Verwenden Sie die neuesten Version der AWS CLI. Weitere Informationen zur Aktualisierung auf die neueste Version finden Sie unter Installieren oder Aktualisieren auf die neueste Version der AWS CLI.

Anmerkung

Sie können Dual-Stack-Service-Endpunkte verwenden, um mit Amazon ECS über die AWS AWS CLI SDKs, und die Amazon ECS-API sowohl über als auch IPv4 zu interagieren. IPv6 Weitere Informationen finden Sie unter Verwenden von Dual-Stack-Endpunkten in Amazon ECS.

Voraussetzungen

Führen Sie die folgenden Schritte aus, bevor Sie mit dem Tutorial beginnen:

  • Sie haben die Schritte unter Einrichten mit Amazon ECS durchgeführt.

  • Die neueste Version von AWS CLI ist installiert und konfiguriert. Weitere Informationen zur Installation oder Aktualisierung von finden Sie unter Installation oder Aktualisierung auf die neueste Version der AWS CLI im AWS Command Line Interface Benutzerhandbuch. AWS CLI

  • Die Schritte in Einrichtung für die Verwendung von Amazon ECS wurden ausgeführt.

  • Sie haben die erforderlichen IAM-Rollen für Amazon ECS Managed Instances. Dies umfasst:

    • Rolle „Infrastruktur“ — Ermöglicht Amazon ECS, in Ihrem Namen AWS Dienste zur Verwaltung der Infrastruktur von Amazon ECS Managed Instances zu kontaktieren.

      Weitere Informationen finden Sie unter IAM-Rolle für die Amazon ECS-Infrastruktur.

    • Instance-Profil – Stellt Berechtigungen für den Amazon-ECS-Container-Agent und den Docker-Daemon bereit, die auf verwalteten Instances ausgeführt werden.

      Der Name der Instance-Rolle muss ein Präfix enthaltenecsInstanceRole, das der iam:PassRole Aktion in der Infrastrukturrolle entspricht.

      Weitere Informationen finden Sie unter Instance-Profil von Amazon ECS Managed Instances.

  • Sie haben eine VPC und die zu verwendende Sicherheitsgruppe erstellt. In diesem Tutorial wird ein Container-Image verwendet, das in Amazon ECR Public gehostet wird, sodass Ihre Instances über Internetzugang verfügen muss. Um Ihren Instances eine Route zum Internet zu geben, verwenden Sie eine der folgenden Optionen.

    • Verwenden Sie ein privates Subnetz mit einem NAT-Gateway, das über eine Elastic IP-Adresse verfügt.

    • Verwenden Sie ein öffentliches Subnetz und weisen Sie den Instances eine öffentliche IP-Adresse zu.

    Weitere Informationen finden Sie unter Erstellen einer Virtual Private Cloud.

    Informationen zu Sicherheitsgruppen und Regeln finden Sie unter Standardsicherheitsgruppen für Sie VPCs und Beispielregeln im Amazon Virtual Private Cloud Cloud-Benutzerhandbuch.

  • (Optional) AWS CloudShell ist ein Tool, das Kunden eine Befehlszeile bietet, ohne dass sie ihre eigene EC2 Instance erstellen müssen. Weitere Informationen finden Sie unter Was ist AWS CloudShell? im AWS CloudShell Benutzerhandbuch.

Schritt 1: Erstellen eines Clusters

Ihr Konto erhält standardmäßig ein default Cluster.

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 managed-instances-cluster

Ausgabe:

{ "cluster": { "status": "ACTIVE", "defaultCapacityProviderStrategy": [], "statistics": [], "capacityProviders": [], "tags": [], "clusterName": "managed-instances-cluster", "settings": [ { "name": "containerInsights", "value": "disabled" } ], "registeredContainerInstancesCount": 0, "pendingTasksCount": 0, "runningTasksCount": 0, "activeServicesCount": 0, "clusterArn": "arn:aws:ecs:region:aws_account_id:cluster/managed-instances-cluster" } }

Schritt 2: Erstellen eines Kapazitätsanbieters für Amazon ECS Managed Instances

Bevor Sie Aufgaben mithilfe von Amazon ECS Managed Instances ausführen können, müssen Sie einen Kapazitätsanbieter erstellen, der die Infrastrukturkonfiguration definiert. Der Kapazitätsanbieter legt die IAM-Rollen, die Netzwerkkonfiguration und andere Einstellungen für Ihre verwalteten Instances fest.

Erstellen Sie eine JSON-Datei mit Ihrer Kapazitätsanbieter-Konfiguration. Ersetzen Sie die Platzhalterwerte durch Ihre tatsächlichen Ressourcen-IDs:

{ "name": "managed-instances-cp", "cluster": "managed-instances-cluster", "managedInstancesProvider": { "infrastructureRoleArn": "arn:aws:iam::aws_account_id:role/ecsInfrastructureRole", "instanceLaunchTemplate": { "ec2InstanceProfileArn": "arn:aws:iam::aws_account_id:instance-profile/ecsInstanceRole", "networkConfiguration": { "subnets": [ "subnet-abcdef01234567890", "subnet-1234567890abcdef0" ], "securityGroups": [ "sg-0123456789abcdef0" ] }, "storageConfiguration": { "storageSizeGiB": 100 }, "monitoring": "basic" } } }

Speichern Sie diese Konfiguration unter managed-instances-cp.json und erstellen Sie den Kapazitätsanbieter:

aws ecs create-capacity-provider --cli-input-json file://managed-instances-cp.json

Der Befehl gibt eine Beschreibung des Kapazitätsanbieters zurück, nachdem er seine Erstellung abgeschlossen hat.

Schritt 3: Konfigurieren der standardmäßigen Kapazitätsanbieter-Strategie für den Cluster

Aktualisieren Sie den Cluster so, dass er den Kapazitätsanbieter von Amazon ECS Managed Instances als standardmäßige Kapazitätsanbieter-Strategie verwendet. Dadurch können Aufgaben und Services automatisch Amazon ECS Managed Instances verwenden, ohne den Kapazitätsanbieter explizit angeben zu müssen.

Erstellen Sie eine JSON-Datei mit der Kapazitätsanbieter-Konfiguration für den Cluster:

{ "cluster": "managed-instances-cluster", "capacityProviders": [ "managed-instances-cp" ], "defaultCapacityProviderStrategy": [ { "capacityProvider": "managed-instances-cp", "weight": 1 } ] }

Speichern Sie diese Konfiguration unter cluster-cp-strategy.json und aktualisieren Sie den Cluster:

aws ecs put-cluster-capacity-providers --cli-input-json file://cluster-cp-strategy.json

Schritt 4: Anmelden einer Linux-Aufgabendefinition

Bevor Sie auf Ihrem Cluster eine Aufgabe ausführen können, müssen Sie eine Aufgabendefinition registrieren. Aufgabendefinitionen sind Listen zusammengefasster Container. Das folgende Beispiel ist eine einfache Aufgabendefinition, die eine PHP-Web-App mit dem httpd-Container-Image erstellt, das auf Docker Hub gehostet wird. Weitere Informationen zu den verfügbaren Parametern für die Aufgabendefinition finden Sie im Abschnitt Amazon-ECS-Aufgabendefinitionsparameter für Fargate.

{ "family": "sample-managed-instances", "networkMode": "awsvpc", "containerDefinitions": [ { "name": "managed-instances-app", "image": "public.ecr.aws/docker/library/httpd:latest", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ], "essential": true, "entryPoint": [ "sh", "-c" ], "command": [ "/bin/sh -c \"echo '<html><head><title>Amazon ECS Sample App</title><style>body {margin-top: 40px; background-color: #333;} </style></head><body><div style=color:white;text-align:center><h1>Amazon ECS Sample App</h1><h2>Congratulations!</h2><p>Your application is now running on a container in Amazon ECS using Amazon ECS Managed Instances.</p></div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ] } ], "requiresCompatibilities": [ "MANAGED_INSTANCES" ], "cpu": "256", "memory": "512" }

Speichern Sie die JSON-Datei der Aufgabendefinition als Datei und übergeben Sie sie zusammen mit der --cli-input-json file://path_to_file.json-Option.

Verwendung einer JSON-Datei für Containerdefinitionen:

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

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

Schritt 5: 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:ecs:region:aws_account_id:task-definition/sample-managed-instances:1" ] }

Schritt 6: Erstellen eines Services

Nachdem Sie eine Aufgabe für Ihr Konto registriert haben, können Sie einen Service für die registrierte Aufgabe in Ihrem Cluster erstellen. In diesem Beispiel erstellen Sie einen Service mit einer Instance der sample-managed-instances:1-Aufgabendefinition, die in Ihrem Cluster ausgeführt wird. Die Aufgabe erfordert eine Route zum Internet, daher gibt es zwei Möglichkeiten, dies zu erreichen. Eine Möglichkeit besteht darin, ein privates Subnetz zu verwenden, das mit einem NAT-Gateway mit einer Elastic IP-Adresse in einem öffentlichen Subnetz konfiguriert ist. Eine andere Möglichkeit besteht darin, ein öffentliches Subnetz zu verwenden und Ihrer Aufgabe eine öffentliche IP-Adresse zuzuweisen. Wir stellen beide Beispiele unten zur Verfügung.

Beispiel mit einem privaten Subnetz.

aws ecs create-service --cluster managed-instances-cluster --service-name managed-instances-service --task-definition sample-managed-instances:1 --desired-count 1 --network-configuration "awsvpcConfiguration={subnets=[subnet-abcd1234],securityGroups=[sg-abcd1234]}"

Beispiel mit einem öffentlichen Subnetz.

aws ecs create-service --cluster managed-instances-cluster --service-name managed-instances-service --task-definition sample-managed-instances:1 --desired-count 1 --network-configuration "awsvpcConfiguration={subnets=[subnet-abcd1234],securityGroups=[sg-abcd1234],assignPublicIp=ENABLED}"

Der create-service-Befehl gibt eine Beschreibung des Services zurück, nachdem er seine Erstellung abgeschlossen hat.

Schritt 7: Dienste auflisten

Listet die Services für Ihren Cluster auf. Der im vorherigen Abschnitt erstellte Service müsste angezeigt werden. Sie können den Servicenamen oder den vollständigen ARN, die/der von diesem Befehl zurückgegeben wird, später zur Beschreibung des Service verwenden.

aws ecs list-services --cluster managed-instances-cluster

Ausgabe:

{ "serviceArns": [ "arn:aws:ecs:region:aws_account_id:service/managed-instances-cluster/managed-instances-service" ] }

Schritt 8: Beschreibung des gerade ausgeführten Service

Beschreibt Sie den Service unter Verwendung des zuvor abgerufenen Servicenamen, um weitere Informationen über die Aufgabe zu erhalten.

aws ecs describe-services --cluster managed-instances-cluster --services managed-instances-service

Wenn dies erfolgreich ist, wird eine Beschreibung der Servicefehler und Services zurückgegeben. Im Abschnitt services finden Sie beispielsweise Informationen zu Bereitstellungen, z. B. ob Aufgaben den Status ausgeführt oder ausstehend haben. Möglicherweise finden Sie auch Informationen zur Aufgabendefinition, zur Netzwerkkonfiguration und zu Ereignissen mit Zeitstempeln. Im Abschnitt „Fehler“ finden Sie Informationen zu Fehlern (falls vorhanden), die mit dem Aufruf verbunden sind.

Die Ausgabe zeigt, dass der Service den Kapazitätsanbieter Amazon ECS Managed Instances verwendet:

{ "services": [ { "capacityProviderStrategy": [ { "capacityProvider": "managed-instances-cp", "weight": 1, "base": 0 } ], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-abcd1234" ], "securityGroups": [ "sg-abcd1234" ], "assignPublicIp": "ENABLED" } }, "enableECSManagedTags": false, "loadBalancers": [], "deploymentController": { "type": "ECS" }, "desiredCount": 1, "clusterArn": "arn:aws:ecs:region:aws_account_id:cluster/managed-instances-cluster", "serviceArn": "arn:aws:ecs:region:aws_account_id:service/managed-instances-service", "serviceName": "managed-instances-service", "taskDefinition": "arn:aws:ecs:region:aws_account_id:task-definition/sample-managed-instances:1" } ], "failures": [] }

Schritt 9: Testen

Um Ihre Bereitstellung zu testen, müssen Sie die öffentliche IP-Adresse der verwalteten Instance ermitteln, auf der Ihre Aufgabe ausgeführt wird.

Die Testaufgabe wurde über ein öffentliches Subnetz bereitgestellt

Rufen Sie zunächst den ARN der Aufgabe von Ihrem Service ab:

aws ecs list-tasks --cluster managed-instances-cluster --service managed-instances-service

Die Ausgabe enthält den ARN der Aufgabe.

{ "taskArns": [ "arn:aws:ecs:region:aws_account_id:task/managed-instances-cluster/EXAMPLE" ] }

Beschreiben Sie die Aufgabe, den ARN der Container-Instance abzurufen. Verwenden Sie den ARN der Aufgabe für den tasks-Parameter.

aws ecs describe-tasks --cluster managed-instances-cluster --tasks arn:aws:ecs:region:aws_account_id:task/managed-instances-cluster/EXAMPLE

Die Ausgabe zeigt, dass die Aufgabe in Amazon ECS Managed Instances ausgeführt wird und beinhaltet den ARN der Container-Instance:

{ "tasks": [ { "launchType": "MANAGED_INSTANCES", "capacityProviderName": "managed-instances-cp", "containerInstanceArn": "arn:aws:ecs:region:aws_account_id:container-instance/managed-instances-cluster/CONTAINER_INSTANCE_ID", "taskArn": "arn:aws:ecs:region:aws_account_id:task/managed-instances-cluster/EXAMPLE", "taskDefinitionArn": "arn:aws:ecs:region:aws_account_id:task-definition/sample-managed-instances:1" } ] }

Beschreiben Sie die Container-Instance, um die EC2 Instanz-ID zu erhalten:

aws ecs describe-container-instances --cluster managed-instances-cluster --container-instances CONTAINER_INSTANCE_ID

Die Ausgabe enthält die EC2 Instanz-ID:

{ "containerInstances": [ { "ec2InstanceId": "i-1234567890abcdef0", "capacityProviderName": "managed-instances-cp", "containerInstanceArn": "arn:aws:ecs:region:aws_account_id:container-instance/managed-instances-cluster/CONTAINER_INSTANCE_ID" } ] }

Beschreiben Sie die EC2 Instanz, um die öffentliche IP-Adresse abzurufen:

aws ec2 describe-instances --instance-ids i-1234567890abcdef0

Die öffentliche IP-Adresse befindet sich in der Ausgabe.

{ "Reservations": [ { "Instances": [ { "PublicIpAddress": "198.51.100.2", "InstanceId": "i-1234567890abcdef0" } ] } ] }

Geben Sie die öffentliche IP-Adresse in Ihren Webbrowser ein. Sie sehen eine Webseite, die die Amazon-ECS-Beispielsanwendung anzeigt, die in Amazon ECS Managed Instances ausgeführt wird.

Die Testaufgabe wurde über ein privates Subnetz bereitgestellt

Für Aufgaben, die in privaten Subnetzen bereitgestellt werden, können Sie Amazon ECS Exec verwenden, um eine Verbindung zum Container herzustellen und die Bereitstellung von der Instance aus zu testen. Gehen Sie wie oben beschrieben vor, um den Task-ARN abzurufen, und verwenden Sie dann ECS Exec:

aws ecs execute-command --cluster managed-instances-cluster \ --task arn:aws:ecs:region:aws_account_id:task/managed-instances-cluster/EXAMPLE \ --container managed-instances-app \ --interactive \ --command "/bin/sh"

Nachdem die interaktive Shell ausgeführt wurde, können Sie den Webserver testen:

curl localhost

Sie sollten das HTML-Äquivalent der Amazon-ECS-Beispielanwendungs-Webseite sehen.

Schritt 10: Aufräumen

Wenn Sie mit diesem Tutorial fertig sind, sollten Sie die zugehörigen Ressourcen bereinigen, um zu vermeiden, dass Gebühren für ungenutzte Ressourcen anfallen.

Löschen Sie den -Service:

aws ecs delete-service --cluster managed-instances-cluster --service managed-instances-service --force

Warten Sie, bis der Service gelöscht und alle Aufgaben angehalten sind, und löschen Sie dann den Kapazitätsanbieter:

aws ecs delete-capacity-provider --capacity-provider managed-instances-cp

Löschen Sie den -Cluster:

aws ecs delete-cluster --cluster managed-instances-cluster
Anmerkung

Die verwalteten Instances werden automatisch beendet, wenn der Kapazitätsanbieter gelöscht wird. Sie müssen die EC2 Instanzen nicht manuell beenden.