Saiba como usar a descoberta AWS Cloud Map de serviços com consultas de DNS e chamadas de API usando o AWS CLI - AWS Cloud Map

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 dig DNS 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.

  1. 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-2

    O comando retorna um ID de operação que você pode usar para verificar o status da criação do namespace:

    { "OperationId": "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd" }
  2. 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
  3. 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 text

    Esse 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.

  1. 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-2

    O 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" } }
  2. 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-2

    O 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.

  1. 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-2

    O comando retorna um ID de operação:

    { "OperationId": "4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd" }
  2. 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
  3. 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-2

    O comando retorna um ID de operação:

    { "OperationId": "7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd" }
  4. 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

  1. 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 text

    Isso retorna o ID da zona hospedada:

    /hostedzone/Z1234ABCDXMPLEFGH
  2. Obtenha os servidores de nomes para sua zona hospedada:

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

    Isso retorna um dos servidores de nomes:

    ns-1234.awsdns-12.org
  3. Use o dig comando para consultar os registros DNS do seu serviço público:

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

    A 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
  4. 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-2

    A 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.

  1. 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
  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
  3. Exclua o serviço público:

    aws servicediscovery delete-service \ --id srv-abcd1234xmplefgh \ --region us-east-2
  4. Exclua o serviço de back-end:

    aws servicediscovery delete-service \ --id srv-ijkl5678xmplmnop \ --region us-east-2
  5. Exclua o namespace de :

    aws servicediscovery delete-namespace \ --id ns-abcd1234xmplefgh \ --region us-east-2
  6. Verifique se a zona hospedada do Route 53 foi excluída:

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