Scopri come utilizzare il rilevamento dei AWS Cloud Map servizi con le query DNS e le chiamate API utilizzando AWS CLI - AWS Cloud Map

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Scopri come utilizzare il rilevamento dei AWS Cloud Map servizi con le query DNS e le chiamate API utilizzando AWS CLI

Questo tutorial dimostra come utilizzare il rilevamento dei AWS Cloud Map servizi utilizzando AWS Command Line Interface (CLI). Creerai un'architettura di microservizi con due servizi di backend: uno individuabile tramite query DNS e l'altro individuabile solo utilizzando l'API. AWS Cloud Map

Per un tutorial che include i passaggi della console, consulta. AWS Cloud Map Scopri come utilizzare il rilevamento dei AWS Cloud Map servizi con le query DNS e le chiamate API

Prerequisiti

I seguenti prerequisiti devono essere soddisfatti per completare correttamente il tutorial.

  • Prima di iniziare, completa i passaggi descritti in Configurazione per l'uso AWS Cloud Map.

  • Se non l'hai ancora installato AWS Command Line Interface, segui i passaggi indicati in Installazione o aggiornamento della versione più recente di AWS CLI per installarlo.

    Per eseguire i comandi nel tutorial, sono necessari un terminale a riga di comando o una shell (interprete di comandi). In Linux e macOS, utilizza la shell (interprete di comandi) e il gestore pacchetti preferiti.

    Nota

    Su Windows, alcuni comandi della CLI Bash utilizzati comunemente con Lambda (ad esempio, zip) non sono supportati dai terminali integrati del sistema operativo. Per ottenere una versione integrata su Windows di Ubuntu e Bash, installa il sottosistema Windows per Linux.

  • Il tutorial richiede un ambiente locale con il comando dig DNS lookup utility.

Crea un namespace AWS Cloud Map

Per prima cosa, creerai uno spazio dei nomi pubblico AWS Cloud Map . AWS Cloud Map creerà una zona ospitata su Route 53 con lo stesso nome, abilitando l'individuazione dei servizi tramite record DNS e chiamate API.

  1. Crea lo spazio dei nomi DNS pubblico:

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

    Il comando restituisce un ID operativo che è possibile utilizzare per verificare lo stato della creazione del namespace:

    { "OperationId": "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd" }
  2. Controllate lo stato dell'operazione per confermare che il namespace è stato creato correttamente:

    aws servicediscovery get-operation \ --operation-id gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd \ --region us-east-2
  3. Una volta completata l'operazione, ottieni l'ID del namespace:

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

    Questo comando restituisce l'ID dello spazio dei nomi, che ti servirà per i passaggi successivi:

    ns-abcd1234xmplefgh

Crea i servizi AWS Cloud Map

Ora, crea due servizi all'interno del tuo namespace. Il primo servizio sarà individuabile utilizzando chiamate DNS e API, mentre il secondo sarà individuabile solo tramite chiamate API.

  1. Crea il primo servizio con DNS discovery abilitato:

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

    Il comando restituisce i dettagli sul servizio creato:

    { "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. Crea il secondo servizio con il rilevamento solo tramite API:

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

    Il comando restituisce i dettagli sul servizio creato:

    { "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" } }

Registra le istanze AWS Cloud Map del servizio

Successivamente, registra le istanze di servizio per ciascuno dei tuoi servizi. Queste istanze rappresentano le risorse effettive che verranno scoperte.

  1. Registra la prima istanza con un IPv4 indirizzo per il rilevamento DNS:

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

    Il comando restituisce un ID operativo:

    { "OperationId": "4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd" }
  2. Controlla lo stato dell'operazione per confermare che l'istanza è stata registrata correttamente:

    aws servicediscovery get-operation \ --operation-id 4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd \ --region us-east-2
  3. Registra la seconda istanza con attributi personalizzati per l'individuazione delle API:

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

    Il comando restituisce un ID operativo:

    { "OperationId": "7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd" }
  4. Controlla lo stato dell'operazione per confermare che l'istanza è stata registrata correttamente:

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

Scopri le istanze AWS Cloud Map del servizio

Ora che hai creato e registrato le tue istanze di servizio, puoi verificare che tutto funzioni scoprendole utilizzando sia le query DNS che l'API. AWS Cloud Map

  1. Per prima cosa, ottieni l'ID della zona ospitata di Route 53:

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

    Questo restituisce l'ID della zona ospitata:

    /hostedzone/Z1234ABCDXMPLEFGH
  2. Ottieni i name server per la tua zona ospitata:

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

    Questo restituisce uno dei name server:

    ns-1234.awsdns-12.org
  3. Usa il dig comando per interrogare i record DNS per il tuo servizio pubblico:

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

    L'output dovrebbe mostrare l' IPv4 indirizzo associato al servizio:

    ;; ANSWER SECTION: public-service.cloudmap-tutorial.com. 300 IN A 192.168.2.1
  4. Usa il AWS CLI per scoprire l'istanza del servizio di backend:

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

    L'output mostra gli attributi associati al servizio:

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

Pulisci le risorse

Una volta completato il tutorial, ripulisci le risorse per evitare di incorrere in addebiti. AWS Cloud Map richiede di ripulirle in ordine inverso: prima le istanze del servizio, poi i servizi e infine lo spazio dei nomi.

  1. Annulla la registrazione della prima istanza del servizio:

    aws servicediscovery deregister-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --region us-east-2
  2. Annulla la registrazione della seconda istanza del servizio:

    aws servicediscovery deregister-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --region us-east-2
  3. Eliminare il servizio pubblico:

    aws servicediscovery delete-service \ --id srv-abcd1234xmplefgh \ --region us-east-2
  4. Elimina il servizio di backend:

    aws servicediscovery delete-service \ --id srv-ijkl5678xmplmnop \ --region us-east-2
  5. Elimina lo spazio dei nomi :

    aws servicediscovery delete-namespace \ --id ns-abcd1234xmplefgh \ --region us-east-2
  6. Verifica che la zona ospitata da Route 53 sia stata eliminata:

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