As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Saiba como usar a descoberta AWS Cloud Map de serviços com consultas de DNS e chamadas de API usando o AWS CLI
Este tutorial demonstra como usar a descoberta AWS Cloud Map de serviços usando a AWS Command Line Interface (CLI). Você criará uma arquitetura de microsserviços com dois serviços de back-end — um detectável usando consultas de DNS e outro detectável usando somente a API. AWS Cloud Map
Para obter um tutorial que inclui etapas AWS Cloud Map do console, consulteSaiba como usar a descoberta AWS Cloud Map de serviços com consultas de DNS e chamadas de API.
Pré-requisitos
Os pré-requisitos a seguir devem ser atendidos para concluir o tutorial com êxito.
-
Antes de começar, conclua as etapas em Configurado para usar AWS Cloud Map.
-
Se você ainda não instalou o AWS Command Line Interface, siga as etapas em Instalando ou atualizando a versão mais recente do AWS CLI para instalá-lo.
O tutorial requer um terminal de linha de comando ou um shell para executar os comandos. No Linux e no macOS, use o gerenciador de pacotes e de shell de sua preferência.
nota
No Windows, alguns comandos da CLI do Bash que você costuma usar com o Lambda (como
zip) não são compatíveis com os terminais integrados do sistema operacional. Para obter uma versão do Ubuntu com o Bash integrada no Windows, instale o Subsistema do Windows para Linux. O tutorial requer um ambiente local com o comando
digDNS lookup utility.
Crie um AWS Cloud Map namespace
Primeiro, você criará um AWS Cloud Map namespace público. AWS Cloud Map criará uma zona hospedada do Route 53 com o mesmo nome, permitindo a descoberta de serviços por meio de registros DNS e chamadas de API.
-
Crie o namespace DNS público:
aws servicediscovery create-public-dns-namespace \ --name cloudmap-tutorial.com \ --creator-request-id cloudmap-tutorial-request-1 \ --region us-east-2O comando retorna um ID de operação que você pode usar para verificar o status da criação do namespace:
{ "OperationId": "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd" } -
Verifique o status da operação para confirmar que o namespace foi criado com sucesso:
aws servicediscovery get-operation \ --operation-id gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd \ --region us-east-2 -
Quando a operação for bem-sucedida, obtenha o ID do namespace:
aws servicediscovery list-namespaces \ --region us-east-2 \ --query "Namespaces[?Name=='cloudmap-tutorial.com'].Id" \ --output textEsse comando retorna o ID do namespace, que você precisará para as etapas subsequentes:
ns-abcd1234xmplefgh
Crie os AWS Cloud Map serviços
Agora, crie dois serviços em seu namespace. O primeiro serviço poderá ser descoberto usando chamadas de DNS e de API, enquanto o segundo poderá ser descoberto usando somente chamadas de API.
-
Crie o primeiro serviço com a descoberta de DNS ativada:
aws servicediscovery create-service \ --name public-service \ --namespace-id ns-abcd1234xmplefgh \ --dns-config "RoutingPolicy=MULTIVALUE,DnsRecords=[{Type=A,TTL=300}]" \ --region us-east-2O comando retorna detalhes sobre o serviço criado:
{ "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" } } -
Crie o segundo serviço com a descoberta somente de API:
aws servicediscovery create-service \ --name backend-service \ --namespace-id ns-abcd1234xmplefgh \ --type HTTP \ --region us-east-2O comando retorna detalhes sobre o serviço criado:
{ "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 as instâncias do AWS Cloud Map serviço
Em seguida, registre as instâncias de serviço para cada um dos seus serviços. Essas instâncias representam os recursos reais que serão descobertos.
-
Registre a primeira instância com um IPv4 endereço para descoberta de DNS:
aws servicediscovery register-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --attributes AWS_INSTANCE_IPV4=192.168.2.1 \ --region us-east-2O comando retorna um ID de operação:
{ "OperationId": "4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd" } -
Verifique o status da operação para confirmar que a instância foi registrada com sucesso:
aws servicediscovery get-operation \ --operation-id 4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd \ --region us-east-2 -
Registre a segunda instância com atributos personalizados para descoberta da API:
aws servicediscovery register-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --attributes service-name=backend \ --region us-east-2O comando retorna um ID de operação:
{ "OperationId": "7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd" } -
Verifique o status da operação para confirmar que a instância foi registrada com sucesso:
aws servicediscovery get-operation \ --operation-id 7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd \ --region us-east-2
Descubra as instâncias AWS Cloud Map de serviço
Agora que você criou e registrou suas instâncias de serviço, pode verificar se tudo está funcionando descobrindo-as usando as consultas de DNS e a API. AWS Cloud Map
-
Primeiro, obtenha o ID da zona hospedada do Route 53:
aws route53 list-hosted-zones-by-name \ --dns-name cloudmap-tutorial.com \ --query "HostedZones[0].Id" \ --output textIsso retorna o ID da zona hospedada:
/hostedzone/Z1234ABCDXMPLEFGH -
Obtenha os servidores de nomes para sua zona hospedada:
aws route53 get-hosted-zone \ --id Z1234ABCDXMPLEFGH \ --query "DelegationSet.NameServers[0]" \ --output textIsso retorna um dos servidores de nomes:
ns-1234.awsdns-12.org -
Use o
digcomando para consultar os registros DNS do seu serviço público:dig @ns-1234.awsdns-12.org public-service.cloudmap-tutorial.comA saída deve exibir o IPv4 endereço que você associou ao seu serviço:
;; ANSWER SECTION: public-service.cloudmap-tutorial.com. 300 IN A 192.168.2.1 -
Use o AWS CLI para descobrir a instância do serviço de back-end:
aws servicediscovery discover-instances \ --namespace-name cloudmap-tutorial.com \ --service-name backend-service \ --region us-east-2A saída exibe os atributos que você associou ao serviço:
{ "Instances": [ { "InstanceId": "second", "NamespaceName": "cloudmap-tutorial.com", "ServiceName": "backend-service", "HealthStatus": "UNKNOWN", "Attributes": { "service-name": "backend" } } ], "InstancesRevision": 71462688285136850 }
Limpe os recursos
Depois de concluir o tutorial, limpe os recursos para evitar cobranças. AWS Cloud Map exige que você os limpe na ordem inversa: primeiro as instâncias de serviço, depois os serviços e, finalmente, o namespace.
-
Cancele o registro da primeira instância de serviço:
aws servicediscovery deregister-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --region us-east-2 -
Cancele o registro da segunda instância de serviço:
aws servicediscovery deregister-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --region us-east-2 -
Exclua o serviço público:
aws servicediscovery delete-service \ --id srv-abcd1234xmplefgh \ --region us-east-2 -
Exclua o serviço de back-end:
aws servicediscovery delete-service \ --id srv-ijkl5678xmplmnop \ --region us-east-2 -
Exclua o namespace de :
aws servicediscovery delete-namespace \ --id ns-abcd1234xmplefgh \ --region us-east-2 -
Verifique se a zona hospedada do Route 53 foi excluída:
aws route53 list-hosted-zones-by-name \ --dns-name cloudmap-tutorial.com