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
-
Erstellen einer Cluster-Konfiguration:
ecs-cli configure --cluster
ec2-tutorial
--regionus-east-1
--default-launch-type EC2 --config-nameec2-tutorial
-
Erstellen Sie ein Profil mithilfe Ihres Zugriffsschlüssels und geheimen Schlüssels:
ecs-cli configure profile --access-key
AWS_ACCESS_KEY_ID
--secret-keyAWS_SECRET_ACCESS_KEY
--profile-nameec2-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
-
Erstellen Sie einen Amazon-ECS-Service namens
backend
und einen privaten DNS-Namespace namenstutorial
innerhalb einer VPC. In diesem Beispiel verwendet die Aufgabe den Netzwerkmodusawsvpc
, so dass die Wertecontainer_name
undcontainer_port
nicht erforderlich sind.ecs-cli compose --project-name
backend
service up --private-dns-namespacetutorial
--vpcvpc-04deee8176dce7d7d
--enable-service-discoveryAusgabe:
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
-
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-namespacetutorial
--vpcvpc-04deee8176dce7d7d
--enable-service-discoveryAusgabe:
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
-
Ü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 Servicefrontend
unterfrontend.tutorial
und der Servicebackend
unterbackend.tutorial
gefunden werden. Da es sich um private DNS-Namespaces handelt, werden diese DNS-Namen nur innerhalb der angegebenen VPC aufgelöst. -
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-typeSRV
--dns-ttl120
--healthcheck-custom-config-failure-threshold2
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
-
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 rmINFO[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
-
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