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.
Topics
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 enthalten
ecsInstanceRole, das deriam:PassRoleAktion 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 angeben müssen. Wenn Sie Ihren eigenen, nicht standardmäßigen Cluster erstellen, müssen Sie cluster_name--cluster für jeden Befehl angeben, den Sie mit diesem Cluster verwenden möchten. cluster_name
Erstellen Sie mit dem folgenden Befehl Ihren eigenen Cluster mit eindeutigem Namen:
aws ecs create-cluster --cluster-namemanaged-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://-Option. path_to_file.json
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 --clustermanaged-instances-cluster--service-namemanaged-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 --clustermanaged-instances-cluster--service-namemanaged-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-instancesCONTAINER_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-idsi-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.