Lernprogramm: Erstellen eines Amazon-ECS-Service, der Service Discovery mithilfe der Amazon ECS-CLI verwendet - Amazon ECS

Lernprogramm: Erstellen eines Amazon-ECS-Service, der Service Discovery mithilfe der Amazon ECS-CLI verwendet

Dieses Tutorial zeigt eine einfache exemplarische Vorgehensweise zum Erstellen eines Amazon-ECS-Services, der für die Verwendung von Service Discovery konfiguriert ist. Viele der Konfigurationswerte von Service Discovery können entweder mit der ECS-Parameterdatei oder über Flags angegeben werden. Wenn Flags verwendet werden, haben sie Vorrang vor der ECS-Parameterdatei, sollten beide vorhanden sein. Bei Verwendung der Amazon ECS-CLI wird der Name des Compose-Projekts als Name für Ihren ECS-Service verwendet.

Voraussetzungen

Es wird davon ausgegangen, dass Sie die folgenden Voraussetzungen erfüllen, bevor Sie fortfahren:

  • Richten Sie ein AWS-Konto ein.

  • Installieren der Amazon ECS-CLI. Weitere Informationen finden Sie unter Installieren der Amazon ECS-CLI.

  • Erstellen Sie eine VPC. Weitere Informationen finden Sie unter Erstellen einer Virtual Private Cloud.

  • Optional: AWS CloudShell ist ein Tool, das Kunden eine Befehlszeile bietet, ohne eine eigene EC2-Instance erstellen zu müssen. Weitere Informationen finden Sie unter Was ist AWS CloudShell? im AWS CloudShell-Benutzerhandbuch.

Konfigurieren der Amazon ECS-CLI

Sie können dieses Tutorial erst starten, nachdem Sie die Amazon ECS-CLI installiert und konfiguriert haben. Weitere Informationen finden Sie unter Installieren der Amazon ECS-CLI.

Die Amazon ECS-CLI benötigt Anmeldeinformationen, um API-Anfragen für Sie zu machen. Sie kann Anmeldeinformationen aus Umgebungsvariablen, einem AWS-Profil oder einem Amazon ECS-Profil abrufen. Weitere Informationen finden Sie unter Konfigurieren der Amazon ECS-CLI.

Erstellen einer Amazon ECS-CLI-Konfiguration

  1. Erstellen einer Cluster-Konfiguration:

    ecs-cli configure --cluster ec2-tutorial --region us-east-1 --default-launch-type EC2 --config-name ec2-tutorial
  2. Erstellen Sie ein Profil mithilfe Ihres Zugriffsschlüssels und geheimen Schlüssels:

    ecs-cli configure profile --access-key AWS_ACCESS_KEY_ID --secret-key AWS_SECRET_ACCESS_KEY --profile-name ec2-tutorial
    Anmerkung

    Wenn dies das erste Mal ist, dass Sie die Amazon ECS CLI konfigurieren, werden diese Konfigurationen als Standard gekennzeichnet. Wenn Sie die Amazon ECS-CLI nicht zum ersten Mal konfigurieren, lesen Sie die Amazon ECS-Befehlszeilenreferenz im Amazon Elastic Container Service-Entwicklerhandbuch, um dies als Standardkonfiguration und -Profil festzulegen.

Erstellen eines Amazon-ECS-Service, der für die Verwendung von Service Discovery konfiguriert ist

Erstellen Sie mit den folgenden Schritten einen Amazon-ECS-Service, der für die Verwendung von Service Discovery mit der Amazon ECS-CLI konfiguriert ist.

So erstellen Sie einen Amazon-ECS-Service, der für die Verwendung von Service Discovery konfiguriert ist

  1. Erstellen Sie einen Amazon-ECS-Service namens backend und einen privaten DNS-Namespace namens tutorial innerhalb einer VPC. In diesem Beispiel verwendet die Aufgabe den Netzwerkmodus awsvpc, so dass die Werte container_name und container_port nicht erforderlich sind.

    ecs-cli compose --project-name backend service up --private-dns-namespace tutorial --vpc vpc-04deee8176dce7d7d --enable-service-discovery

    Ausgabe:

    INFO[0001] Using ECS task definition                     TaskDefinition="backend:1"
    INFO[0002] Waiting for the private DNS namespace to be created...
    INFO[0002] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
    WARN[0033] Defaulting DNS Type to A because network mode was awsvpc
    INFO[0033] Waiting for the Service Discovery Service to be created...
    INFO[0034] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
    INFO[0065] Created an ECS service                        service=backend taskDefinition="backend:1"
    INFO[0066] Updated ECS service successfully              desiredCount=1 serviceName=backend
    INFO[0081] (service backend) has started 1 tasks: (task 824b5a76-8f9c-4beb-a64b-6904e320630e).  timestamp="2018-09-12 00:00:26 +0000 UTC"
    INFO[0157] Service status                                desiredCount=1 runningCount=1 serviceName=backend
    INFO[0157] ECS Service has reached a stable state        desiredCount=1 runningCount=1 serviceName=backend
  2. Erstellen Sie einen anderen Service namens frontend im gleichen privaten DNS-Namespace. Da der Namespace bereits existiert, verwendet ihn die Amazon ECS-CLI, anstatt einen neuen anzulegen.

    ecs-cli compose --project-name frontend service up --private-dns-namespace tutorial --vpc vpc-04deee8176dce7d7d --enable-service-discovery

    Ausgabe:

    INFO[0001] Using ECS task definition                     TaskDefinition="frontend:1"
    INFO[0002] Using existing namespace ns-kvhnzhb5vxplfmls
    WARN[0033] Defaulting DNS Type to A because network mode was awsvpc
    INFO[0033] Waiting for the Service Discovery Service to be created...
    INFO[0034] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
    INFO[0065] Created an ECS service                        service=frontend taskDefinition="frontend:1"
    INFO[0066] Updated ECS service successfully              desiredCount=1 serviceName=frontend
    INFO[0081] (service frontend) has started 1 tasks: (task 824b5a76-8f9c-4beb-a64b-6904e320630e).  timestamp="2018-09-12 00:00:26 +0000 UTC"
    INFO[0157] Service status                                desiredCount=1 runningCount=1 serviceName=frontend
    INFO[0157] ECS Service has reached a stable state        desiredCount=1 runningCount=1 serviceName=frontend
  3. Überprüfen Sie, ob die beiden Dienste in der Lage sind, sich innerhalb der VPC über DNS gegenseitig zu erkennen. Der DNS-Hostname verwendet das folgende Format: <service_discovery_service_name>.<service_discovery_namespace>. Für dieses Beispiel kann der Service frontend unter frontend.tutorial und der Service backend unter backend.tutorial gefunden werden. Da es sich um private DNS-Namespaces handelt, werden diese DNS-Namen nur innerhalb der angegebenen VPC aufgelöst.

  4. Um die Einstellungen der Service Discovery zu aktualisieren, aktualisieren Sie die Einstellungen für den frontend-Service. Die Werte, die aktualisiert werden können, sind die DNS-TTL und der Wert für die Fehlergrenze der benutzerdefinierten Konfiguration der Zustandsprüfung.

    ecs-cli compose --project-name frontend service up --update-service-discovery --dns-type SRV --dns-ttl 120 --healthcheck-custom-config-failure-threshold 2

    Ausgabe:

    INFO[0001] Using ECS task definition                     TaskDefinition="frontend:1"
    INFO[0001] Updated ECS service successfully              desiredCount=1 serviceName=frontend
    INFO[0001] Service status                                desiredCount=1 runningCount=1 serviceName=frontend
    INFO[0001] ECS Service has reached a stable state        desiredCount=1 runningCount=1 serviceName=frontend
    INFO[0002] Waiting for your Service Discovery resources to be updated...
    INFO[0002] Cloudformation stack status                   stackStatus=UPDATE_IN_PROGRESS
  5. Für eine Bereinigung, löschen Sie den Amazon-ECS-Service und die Service Discovery-Ressourcen. Wenn der Service frontend gelöscht wird, entfernt die Amazon ECS-CLI automatisch auch den zugehörigen Service Discovery-Service.

    ecs-cli compose --project-name frontend service rm
    INFO[0000] Updated ECS service successfully              desiredCount=0 serviceName=frontend
    INFO[0001] Service status                                desiredCount=0 runningCount=1 serviceName=frontend
    INFO[0016] Service status                                desiredCount=0 runningCount=0 serviceName=frontend
    INFO[0016] (service frontend) has stopped 1 running tasks: (task 824b5a76-8f9c-4beb-a64b-6904e320630e).  timestamp="2018-09-12 00:37:25 +0000 UTC"
    INFO[0016] ECS Service has reached a stable state        desiredCount=0 runningCount=0 serviceName=frontend
    INFO[0016] Deleted ECS service                           service=frontend
    INFO[0016] ECS Service has reached a stable state        desiredCount=0 runningCount=0 serviceName=frontend
    INFO[0027] Waiting for your Service Discovery Service resource to be deleted...
    INFO[0027] Cloudformation stack status                   stackStatus=DELETE_IN_PROGRESS
  6. Um die Bereinigung abzuschließen, löschen Sie den Service backend zusammen mit dem privaten DNS-Namespace, der damit erstellt wurde. Die Amazon ECS-CLI verknüpft den AWS CloudFormation-Stack für den privaten DNS-Namespace mit dem Amazon-ECS-Service, für den er erstellt wurde. Beim Löschen des Services wird auch der Namespace gelöscht.

    ecs-cli compose --project-name backend service rm --delete-namespace