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 Linuxafin 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.
-
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" }
-
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
-
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.
-
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" } }
-
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.
-
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" }
-
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
-
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" }
-
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.
-
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
-
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
-
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
-
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.
-
Désenregistrez la première instance de service :
aws servicediscovery deregister-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --region us-east-2
-
Désenregistrez la deuxième instance de service :
aws servicediscovery deregister-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --region us-east-2
-
Supprimer le service public :
aws servicediscovery delete-service \ --id srv-abcd1234xmplefgh \ --region us-east-2
-
Supprimez le service principal :
aws servicediscovery delete-service \ --id srv-ijkl5678xmplmnop \ --region us-east-2
-
Supprimez l'espace de noms de la fonction :
aws servicediscovery delete-namespace \ --id ns-abcd1234xmplefgh \ --region us-east-2
-
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