Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Aprenda a utilizar la detección AWS Cloud Map de servicios con consultas de DNS y llamadas a la API mediante AWS CLI
En este tutorial se muestra cómo utilizar la detección de AWS Cloud Map servicios mediante la AWS Command Line Interface (CLI). Creará una arquitectura de microservicios con dos servicios de backend: uno que se puede detectar mediante consultas de DNS y otro que se puede detectar únicamente mediante la API. AWS Cloud Map
Para ver un tutorial que incluye los pasos de la AWS Cloud Map consola, consulte. Aprenda a utilizar la detección AWS Cloud Map de servicios con consultas de DNS y llamadas a la API
Requisitos previos
Se deben cumplir los siguientes requisitos previos para completar el tutorial correctamente.
-
Antes de comenzar, complete los pasos de Configurar para usar AWS Cloud Map.
-
Si aún no lo ha instalado AWS Command Line Interface, siga los pasos que se indican en Instalar o actualizar la última versión del AWS CLI para instalarlo.
El tutorial requiere un intérprete de comandos o un terminal de línea de comando para ejecutar los comandos. En Linux y macOS, use su administrador de intérprete de comandos y paquetes preferido.
nota
En Windows, algunos comandos de la CLI de Bash que se utilizan habitualmente con Lambda (por ejemplo,
zip
) no son compatibles con los terminales integrados del sistema operativo. Para obtener una versión de Ubuntu y Bash integrada con Windows, instale el subsistema de Windows para Linux. El tutorial requiere un entorno local con el comando de utilidad de búsqueda de
dig
DNS.
Crea un AWS Cloud Map espacio de nombres
En primer lugar, crearás un espacio de nombres público AWS Cloud Map . AWS Cloud Map creará una zona alojada en Route 53 con el mismo nombre, lo que permitirá la detección de servicios mediante registros de DNS y llamadas a la API.
-
Cree el espacio de nombres DNS público:
aws servicediscovery create-public-dns-namespace \ --name cloudmap-tutorial.com \ --creator-request-id cloudmap-tutorial-request-1 \ --region us-east-2
El comando devuelve un identificador de operación que puedes usar para comprobar el estado de la creación del espacio de nombres:
{ "OperationId": "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd" }
-
Compruebe el estado de la operación para confirmar que el espacio de nombres se creó correctamente:
aws servicediscovery get-operation \ --operation-id gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd \ --region us-east-2
-
Una vez que la operación se haya realizado correctamente, obtenga el ID del espacio de nombres:
aws servicediscovery list-namespaces \ --region us-east-2 \ --query "Namespaces[?Name=='cloudmap-tutorial.com'].Id" \ --output text
Este comando devuelve el ID del espacio de nombres, que necesitarás para los pasos siguientes:
ns-abcd1234xmplefgh
Crea los servicios AWS Cloud Map
Ahora, crea dos servicios dentro de tu espacio de nombres. El primer servicio se podrá detectar mediante llamadas al DNS y a la API, mientras que el segundo solo se podrá detectar mediante llamadas a la API.
-
Cree el primer servicio con la detección de DNS habilitada:
aws servicediscovery create-service \ --name public-service \ --namespace-id ns-abcd1234xmplefgh \ --dns-config "RoutingPolicy=MULTIVALUE,DnsRecords=[{Type=A,TTL=300}]" \ --region us-east-2
El comando devuelve detalles sobre el servicio creado:
{ "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" } }
-
Cree el segundo servicio con una detección exclusiva mediante API:
aws servicediscovery create-service \ --name backend-service \ --namespace-id ns-abcd1234xmplefgh \ --type HTTP \ --region us-east-2
El comando devuelve detalles sobre el servicio creado:
{ "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" } }
Registre las instancias AWS Cloud Map de servicio
A continuación, registre las instancias de servicio para cada uno de sus servicios. Estas instancias representan los recursos reales que se descubrirán.
-
Registre la primera instancia con una IPv4 dirección para la detección de DNS:
aws servicediscovery register-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --attributes AWS_INSTANCE_IPV4=192.168.2.1 \ --region us-east-2
El comando devuelve un identificador de operación:
{ "OperationId": "4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd" }
-
Comprueba el estado de la operación para confirmar que la instancia se registró correctamente:
aws servicediscovery get-operation \ --operation-id 4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd \ --region us-east-2
-
Registra la segunda instancia con atributos personalizados para la detección de la API:
aws servicediscovery register-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --attributes service-name=backend \ --region us-east-2
El comando devuelve un identificador de operación:
{ "OperationId": "7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd" }
-
Comprueba el estado de la operación para confirmar que la instancia se registró correctamente:
aws servicediscovery get-operation \ --operation-id 7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd \ --region us-east-2
Descubra las instancias AWS Cloud Map de servicio
Ahora que ha creado y registrado sus instancias de servicio, puede comprobar que todo funciona detectándolas mediante consultas de DNS y la AWS Cloud Map API.
-
Primero, obtén el ID de la zona hospedada de Route 53:
aws route53 list-hosted-zones-by-name \ --dns-name cloudmap-tutorial.com \ --query "HostedZones[0].Id" \ --output text
Esto devuelve el ID de la zona alojada:
/hostedzone/Z1234ABCDXMPLEFGH
-
Obtenga los servidores de nombres de su zona alojada:
aws route53 get-hosted-zone \ --id Z1234ABCDXMPLEFGH \ --query "DelegationSet.NameServers[0]" \ --output text
Esto devuelve uno de los servidores de nombres:
ns-1234.awsdns-12.org
-
Usa el
dig
comando para consultar los registros DNS de tu servicio público:dig @ns-1234.awsdns-12.org public-service.cloudmap-tutorial.com
El resultado debe mostrar la IPv4 dirección que asociaste a tu servicio:
;; ANSWER SECTION: public-service.cloudmap-tutorial.com. 300 IN A 192.168.2.1
-
Usa el AWS CLI para descubrir la instancia del servicio de backend:
aws servicediscovery discover-instances \ --namespace-name cloudmap-tutorial.com \ --service-name backend-service \ --region us-east-2
El resultado muestra los atributos que ha asociado al servicio:
{ "Instances": [ { "InstanceId": "second", "NamespaceName": "cloudmap-tutorial.com", "ServiceName": "backend-service", "HealthStatus": "UNKNOWN", "Attributes": { "service-name": "backend" } } ], "InstancesRevision": 71462688285136850 }
Limpie los recursos
Una vez que hayas completado el tutorial, limpia los recursos para evitar incurrir en cargos. AWS Cloud Map requiere que los limpies en orden inverso: primero las instancias de servicio, después los servicios y, por último, el espacio de nombres.
-
Anule el registro de la primera instancia de servicio:
aws servicediscovery deregister-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --region us-east-2
-
Anule el registro de la segunda instancia de servicio:
aws servicediscovery deregister-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --region us-east-2
-
Elimine el servicio público:
aws servicediscovery delete-service \ --id srv-abcd1234xmplefgh \ --region us-east-2
-
Elimine el servicio de backend:
aws servicediscovery delete-service \ --id srv-ijkl5678xmplmnop \ --region us-east-2
-
Elimine el espacio de nombres de :
aws servicediscovery delete-namespace \ --id ns-abcd1234xmplefgh \ --region us-east-2
-
Compruebe que se elimine la zona alojada de Route 53:
aws route53 list-hosted-zones-by-name \ --dns-name cloudmap-tutorial.com