Découvrez comment utiliser la découverte de AWS Cloud Map services avec des requêtes DNS et des appels d'API à l'aide du AWS CLI - AWS Cloud Map

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Découvrez comment utiliser la découverte de AWS Cloud Map services avec des requêtes DNS et des appels d'API à l'aide du AWS CLI

Ce didacticiel explique comment utiliser la découverte AWS Cloud Map de services à l'aide de la AWS Command Line Interface (CLI). Vous allez créer une architecture de microservices avec deux services principaux : l'un détectable à l'aide de requêtes DNS et l'autre à l'aide de l'API uniquement. AWS Cloud Map

Pour un didacticiel qui inclut les étapes AWS Cloud Map relatives à la console, voirDécouvrez comment utiliser la découverte AWS Cloud Map de services avec les requêtes DNS et les appels d'API.

Prérequis

Les conditions préalables suivantes doivent être remplies pour terminer le didacticiel avec succès.

  • Avant de commencer, complétez les étapes détaillées dans Configurer pour utiliser AWS Cloud Map.

  • Si vous ne l'avez pas encore installé AWS Command Line Interface, suivez les étapes décrites dans la section Installation ou mise à jour de la dernière version du AWS CLI pour l'installer.

    Ce tutoriel nécessite un terminal de ligne de commande ou un shell pour exécuter les commandes. Sous Linux et macOS, utilisez votre gestionnaire de shell et de package préféré.

    Note

    Sous Windows, certaines commandes CLI Bash que vous utilisez couramment avec Lambda (par exemple zip) ne sont pas prises en charge par les terminaux intégrés du système d’exploitation. Installez le sous-système Windows pour Linux afin d’obtenir une version intégrée à Windows d’Ubuntu et Bash.

  • Le didacticiel nécessite un environnement local avec la commande dig DNS lookup utility.

Création d'un espace AWS Cloud Map de noms

Vous allez d'abord créer un espace de AWS Cloud Map noms public. AWS Cloud Map créera une zone hébergée Route 53 portant le même nom, permettant la découverte de services par le biais d'enregistrements DNS et d'appels d'API.

  1. Créez l'espace de noms DNS public :

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

    La commande renvoie un ID d'opération que vous pouvez utiliser pour vérifier l'état de création de l'espace de noms :

    { "OperationId": "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd" }
  2. Vérifiez l'état de l'opération pour confirmer que l'espace de noms a bien été créé :

    aws servicediscovery get-operation \ --operation-id gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd \ --region us-east-2
  3. Une fois l'opération réussie, obtenez l'ID de l'espace de noms :

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

    Cette commande renvoie l'ID de l'espace de noms, dont vous aurez besoin pour les étapes suivantes :

    ns-abcd1234xmplefgh

Créez les AWS Cloud Map services

Créez maintenant deux services dans votre espace de noms. Le premier service sera détectable à l'aide d'appels DNS et d'API, tandis que le second sera détectable uniquement à l'aide d'appels d'API.

  1. Créez le premier service avec la découverte DNS activée :

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

    La commande renvoie des informations sur le service créé :

    { "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. Créez le deuxième service avec une fonction de découverte basée uniquement sur l'API :

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

    La commande renvoie des informations sur le service créé :

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

Enregistrez les instances AWS Cloud Map de service

Enregistrez ensuite des instances de service pour chacun de vos services. Ces instances représentent les ressources réelles qui seront découvertes.

  1. Enregistrez la première instance avec une IPv4 adresse pour la découverte du DNS :

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

    La commande renvoie un identifiant d'opération :

    { "OperationId": "4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd" }
  2. Vérifiez l'état du fonctionnement pour confirmer que l'instance a été correctement enregistrée :

    aws servicediscovery get-operation \ --operation-id 4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd \ --region us-east-2
  3. Enregistrez la deuxième instance avec des attributs personnalisés pour la découverte des API :

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

    La commande renvoie un identifiant d'opération :

    { "OperationId": "7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd" }
  4. Vérifiez l'état du fonctionnement pour confirmer que l'instance a été correctement enregistrée :

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

Découvrez les instances AWS Cloud Map de service

Maintenant que vous avez créé et enregistré vos instances de service, vous pouvez vérifier que tout fonctionne en les découvrant à l'aide de requêtes DNS et de l' AWS Cloud Map API.

  1. Tout d'abord, obtenez l'ID de zone hébergée Route 53 :

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

    Cela renvoie l'ID de zone hébergée :

    /hostedzone/Z1234ABCDXMPLEFGH
  2. Obtenez les serveurs de noms de votre zone hébergée :

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

    Cela renvoie l'un des serveurs de noms :

    ns-1234.awsdns-12.org
  3. Utilisez la dig commande pour interroger les enregistrements DNS de votre service public :

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

    La sortie doit afficher l' IPv4 adresse que vous avez associée à votre service :

    ;; ANSWER SECTION: public-service.cloudmap-tutorial.com. 300 IN A 192.168.2.1
  4. Utilisez le AWS CLI pour découvrir l'instance du service principal :

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

    La sortie affiche les attributs que vous avez associés au service :

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

Nettoyez les ressources

Une fois le didacticiel terminé, nettoyez les ressources pour éviter d'encourir des frais. AWS Cloud Map nécessite que vous les nettoyiez dans l'ordre inverse : les instances de service d'abord, puis les services et enfin l'espace de noms.

  1. Désenregistrez la première instance de service :

    aws servicediscovery deregister-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --region us-east-2
  2. Désenregistrez la deuxième instance de service :

    aws servicediscovery deregister-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --region us-east-2
  3. Supprimer le service public :

    aws servicediscovery delete-service \ --id srv-abcd1234xmplefgh \ --region us-east-2
  4. Supprimez le service principal :

    aws servicediscovery delete-service \ --id srv-ijkl5678xmplmnop \ --region us-east-2
  5. Supprimez l'espace de noms de la fonction  :

    aws servicediscovery delete-namespace \ --id ns-abcd1234xmplefgh \ --region us-east-2
  6. Vérifiez que la zone hébergée Route 53 est supprimée :

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