Erfahren Sie, wie Sie AWS Cloud Map Service Discovery mit DNS-Abfragen und API-Aufrufen verwenden können, indem Sie AWS CLI - AWS Cloud Map

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 AWS Cloud Map Service Discovery mit DNS-Abfragen und API-Aufrufen verwenden können, indem Sie AWS CLI

Dieses Tutorial zeigt, wie Sie AWS Cloud Map Service Discovery mit der AWS Command Line Interface (CLI) verwenden. Sie erstellen eine Microservice-Architektur mit zwei Back-End-Diensten — einem, der mithilfe von DNS-Abfragen auffindbar ist, und einem anderen, der nur über die API auffindbar ist. AWS Cloud Map

Ein Tutorial, das Schritte für die AWS Cloud Map Konsole beinhaltet, finden Sie unter. Erfahren Sie, wie Sie AWS Cloud Map Service Discovery mit DNS-Abfragen und API-Aufrufen verwenden

Voraussetzungen

Die folgenden Voraussetzungen müssen erfüllt sein, um das Tutorial erfolgreich abschließen zu können.

  • Bevor Sie beginnen, führen Sie die Schritte in Zur Verwendung eingerichtet AWS Cloud Map aus.

  • Wenn Sie das noch nicht installiert haben AWS Command Line Interface, folgen Sie den Schritten unter Installieren oder Aktualisieren der neuesten Version von AWS CLI, um es zu installieren.

    Das Tutorial erfordert zum Ausführen von Befehlen ein Befehlszeilenterminal oder eine Shell. Verwenden Sie unter Linux und macOS Ihre bevorzugte Shell und Ihren bevorzugten Paketmanager.

    Anmerkung

    In Windows werden einige Bash-CLI-Befehle, die Sie häufig mit Lambda verwenden (z. B. zip), von den integrierten Terminals des Betriebssystems nicht unterstützt. Um eine in Windows integrierte Version von Ubuntu und Bash zu erhalten, installieren Sie das Windows-Subsystem für Linux.

  • Für das Tutorial ist eine lokale Umgebung mit dem Befehl dig DNS Lookup Utility erforderlich.

Erstellen Sie einen AWS Cloud Map Namespace

Zunächst erstellen Sie einen öffentlichen AWS Cloud Map Namespace. AWS Cloud Map erstellt eine Route 53-Hosting-Zone mit demselben Namen, wodurch die Diensterkennung sowohl über DNS-Einträge als auch über API-Aufrufe ermöglicht wird.

  1. Erstellen Sie den öffentlichen DNS-Namespace:

    aws servicediscovery create-public-dns-namespace \ --name cloudmap-tutorial.com \ --creator-request-id cloudmap-tutorial-request-1 \ --region us-east-2

    Der Befehl gibt eine Vorgangs-ID zurück, mit der Sie den Status der Namespace-Erstellung überprüfen können:

    { "OperationId": "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd" }
  2. Überprüfen Sie den Vorgangsstatus, um zu bestätigen, dass der Namespace erfolgreich erstellt wurde:

    aws servicediscovery get-operation \ --operation-id gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd \ --region us-east-2
  3. Sobald der Vorgang erfolgreich ist, rufen Sie die Namespace-ID ab:

    aws servicediscovery list-namespaces \ --region us-east-2 \ --query "Namespaces[?Name=='cloudmap-tutorial.com'].Id" \ --output text

    Dieser Befehl gibt die Namespace-ID zurück, die Sie für nachfolgende Schritte benötigen:

    ns-abcd1234xmplefgh

Erstellen Sie die Dienste AWS Cloud Map

Erstellen Sie jetzt zwei Dienste in Ihrem Namespace. Der erste Dienst wird sowohl über DNS- als auch über API-Aufrufe auffindbar sein, während der zweite nur über API-Aufrufe auffindbar sein wird.

  1. Erstellen Sie den ersten Dienst mit aktivierter DNS-Erkennung:

    aws servicediscovery create-service \ --name public-service \ --namespace-id ns-abcd1234xmplefgh \ --dns-config "RoutingPolicy=MULTIVALUE,DnsRecords=[{Type=A,TTL=300}]" \ --region us-east-2

    Der Befehl gibt Details zum erstellten Dienst zurück:

    { "Service": { "Id": "srv-abcd1234xmplefgh", "Arn": "arn:aws:servicediscovery:us-east-2:123456789012:service/srv-abcd1234xmplefgh", "Name": "public-service", "NamespaceId": "ns-abcd1234xmplefgh", "DnsConfig": { "NamespaceId": "ns-abcd1234xmplefgh", "RoutingPolicy": "MULTIVALUE", "DnsRecords": [ { "Type": "A", "TTL": 300 } ] }, "CreateDate": 1673613600.000, "CreatorRequestId": "public-service-request" } }
  2. Erstellen Sie den zweiten Dienst mit reiner API-Erkennung:

    aws servicediscovery create-service \ --name backend-service \ --namespace-id ns-abcd1234xmplefgh \ --type HTTP \ --region us-east-2

    Der Befehl gibt Details zum erstellten Dienst zurück:

    { "Service": { "Id": "srv-ijkl5678xmplmnop", "Arn": "arn:aws:servicediscovery:us-east-2:123456789012:service/srv-ijkl5678xmplmnop", "Name": "backend-service", "NamespaceId": "ns-abcd1234xmplefgh", "Type": "HTTP", "CreateDate": 1673613600.000, "CreatorRequestId": "backend-service-request" } }

Registrieren Sie die AWS Cloud Map Dienstinstanzen

Als Nächstes registrieren Sie Dienstinstanzen für jeden Ihrer Dienste. Diese Instanzen stellen die tatsächlichen Ressourcen dar, die entdeckt werden.

  1. Registrieren Sie die erste Instanz mit einer IPv4 Adresse für die DNS-Erkennung:

    aws servicediscovery register-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --attributes AWS_INSTANCE_IPV4=192.168.2.1 \ --region us-east-2

    Der Befehl gibt eine Vorgangs-ID zurück:

    { "OperationId": "4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd" }
  2. Überprüfen Sie den Betriebsstatus, um zu bestätigen, dass die Instanz erfolgreich registriert wurde:

    aws servicediscovery get-operation \ --operation-id 4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd \ --region us-east-2
  3. Registrieren Sie die zweite Instanz mit benutzerdefinierten Attributen für die API-Erkennung:

    aws servicediscovery register-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --attributes service-name=backend \ --region us-east-2

    Der Befehl gibt eine Vorgangs-ID zurück:

    { "OperationId": "7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd" }
  4. Überprüfen Sie den Betriebsstatus, um zu bestätigen, dass die Instanz erfolgreich registriert wurde:

    aws servicediscovery get-operation \ --operation-id 7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd \ --region us-east-2

Entdecken Sie die AWS Cloud Map Dienstinstanzen

Nachdem Sie Ihre Dienstinstanzen erstellt und registriert haben, können Sie überprüfen, ob alles funktioniert, indem Sie sie sowohl mithilfe von DNS-Abfragen als auch mithilfe der AWS Cloud Map API ermitteln.

  1. Rufen Sie zunächst die ID der gehosteten Route 53-Zone ab:

    aws route53 list-hosted-zones-by-name \ --dns-name cloudmap-tutorial.com \ --query "HostedZones[0].Id" \ --output text

    Dies gibt die ID der gehosteten Zone zurück:

    /hostedzone/Z1234ABCDXMPLEFGH
  2. Rufen Sie die Nameserver für Ihre gehostete Zone ab:

    aws route53 get-hosted-zone \ --id Z1234ABCDXMPLEFGH \ --query "DelegationSet.NameServers[0]" \ --output text

    Dies gibt einen der Nameserver zurück:

    ns-1234.awsdns-12.org
  3. Verwenden Sie den dig Befehl, um die DNS-Einträge für Ihren öffentlichen Dienst abzufragen:

    dig @ns-1234.awsdns-12.org public-service.cloudmap-tutorial.com

    In der Ausgabe sollte die IPv4 Adresse angezeigt werden, die Sie mit Ihrem Dienst verknüpft haben:

    ;; ANSWER SECTION: public-service.cloudmap-tutorial.com. 300 IN A 192.168.2.1
  4. Verwenden Sie den AWS CLI , um die Back-End-Dienstinstanz zu ermitteln:

    aws servicediscovery discover-instances \ --namespace-name cloudmap-tutorial.com \ --service-name backend-service \ --region us-east-2

    In der Ausgabe werden die Attribute angezeigt, die Sie dem Service zugeordnet haben:

    { "Instances": [ { "InstanceId": "second", "NamespaceName": "cloudmap-tutorial.com", "ServiceName": "backend-service", "HealthStatus": "UNKNOWN", "Attributes": { "service-name": "backend" } } ], "InstancesRevision": 71462688285136850 }

Bereinigen Sie die Ressourcen

Wenn Sie das Tutorial abgeschlossen haben, bereinigen Sie die Ressourcen, um Gebühren zu vermeiden. AWS Cloud Map erfordert, dass Sie sie in umgekehrter Reihenfolge bereinigen: zuerst die Dienstinstanzen, dann die Dienste und schließlich den Namespace.

  1. Die erste Dienstinstanz deregistrieren:

    aws servicediscovery deregister-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --region us-east-2
  2. Die zweite Dienstinstanz deregistrieren:

    aws servicediscovery deregister-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --region us-east-2
  3. Löschen Sie den öffentlichen Dienst:

    aws servicediscovery delete-service \ --id srv-abcd1234xmplefgh \ --region us-east-2
  4. Löschen Sie den Backend-Dienst:

    aws servicediscovery delete-service \ --id srv-ijkl5678xmplmnop \ --region us-east-2
  5. Löschen Sie den -Namespace:

    aws servicediscovery delete-namespace \ --id ns-abcd1234xmplefgh \ --region us-east-2
  6. Stellen Sie sicher, dass die von Route 53 gehostete Zone gelöscht wurde:

    aws route53 list-hosted-zones-by-name \ --dns-name cloudmap-tutorial.com