Este tutorial mostra como configurar e implementar uma amostra da API e o Extensible Service Proxy V2 (ESPv2) em execução em contentores Docker pré-criados em Managed Instance Group (MIGs) .
A API REST do exemplo de código é descrita através da especificação OpenAPI. O tutorial também mostra como criar uma chave da API e usá-la em pedidos à API.
Para uma vista geral do Cloud Endpoints, consulte os artigos Acerca dos Endpoints e Arquitetura dos Endpoints.
Objetivos
Use a seguinte lista de tarefas de alto nível à medida que avança no tutorial. Todas as tarefas são necessárias para enviar pedidos com êxito para a API.- Configure um Google Cloud projeto. Consulte a secção Antes de começar.
- Transfira o exemplo de código. Consulte o artigo Obter o código de exemplo.
- Configure o ficheiro
openapi.yaml, que é usado para configurar pontos finais. Consulte o artigo Configurar pontos finais. - Implemente a configuração do Endpoints para criar um serviço do Endpoints. Consulte o artigo Implementar a configuração dos Endpoints.
- Implemente a API e o ESPv2 no back-end do grupo de instâncias geridas (GIGs). Consulte o artigo Implementar o back-end da API.
- Envie um pedido para a API através de um endereço IP. Consulte o artigo Enviar uma solicitação através do endereço IP.
- Configure um registo de DNS para a API de exemplo. Consulte o artigo Configurar o DNS para pontos finais.
- Envie um pedido para a API através do nome de domínio totalmente qualificado. Consulte Enviar uma solicitação através do FQDN.
- Acompanhe a atividade da API. Consulte o artigo Acompanhamento da atividade da API.
- Evite incorrer em cobranças na sua conta Google Cloud . Consulte a secção Limpar.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização prevista,
use a calculadora de preços.
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
Antes de começar
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Tome nota do ID do projeto, uma vez que é necessário mais tarde.
-
Precisa de uma aplicação para enviar pedidos para a API de exemplo.
- Utilizadores do Linux e macOS: este tutorial oferece um exemplo de utilização do
curl, que normalmente vem pré-instalado no seu sistema operativo. Se não tiver ocurl, pode transferi-lo nacurlpágina de lançamentos e transferências. - Utilizadores do Windows: este tutorial fornece um exemplo com
Invoke-WebRequest, que é suportado no PowerShell 3.0 e posterior.
- Utilizadores do Linux e macOS: este tutorial oferece um exemplo de utilização do
- Transfira a CLI do Google Cloud.
-
Atualize a CLI gcloud e instale os componentes do Endpoints.
gcloud components update
-
Certifique-se de que a CLI do Google Cloud (
gcloud) está autorizada a aceder aos seus dados e serviços em Google Cloud: No novo separador do navegador apresentado, selecione uma conta.gcloud auth login
-
Defina o projeto predefinido para o ID do seu projeto.
gcloud config set project YOUR_PROJECT_ID
Substitua YOUR_PROJECT_ID pelo ID do seu projeto. Se tiver outros Google Cloud projetos e quiser usar
gcloudpara os gerir, consulte Gerir configurações da CLI gcloud.
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
Transferir o exemplo de código
Transfira o exemplo de código para o seu computador local.
Para clonar ou transferir a API de exemplo:
- Clone o repositório da app de exemplo para a sua máquina local:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
Em alternativa, transfira o exemplo como um ficheiro ZIP e extraia-o.
- Altere para o diretório que contém o código de exemplo:
cd java-docs-samples/endpoints/getting-started
Para clonar ou transferir a API de exemplo:
- Clone o repositório da app de exemplo para a sua máquina local:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
Em alternativa, transfira o exemplo como um ficheiro ZIP e extraia-o.
- Altere para o diretório que contém o código de exemplo:
cd python-docs-samples/endpoints/getting-started
Para clonar ou transferir a API de exemplo:
- Certifique-se de que a
variável de ambiente
GOPATHestá definida. - Clone o repositório da app de exemplo para a sua máquina local:
go get -d github.com/GoogleCloudPlatform/golang-samples/endpoints/getting-started
- Altere para o diretório que contém o código de exemplo:
cd $GOPATH/src/github.com/GoogleCloudPlatform/golang-samples/endpoints/getting-started
Para clonar ou transferir a API de exemplo:
- Clone o repositório da app de exemplo para a sua máquina local:
git clone https://github.com/GoogleCloudPlatform/php-docs-samples
Em alternativa, transfira o exemplo como um ficheiro ZIP e extraia-o.
- Altere para o diretório que contém o código de exemplo:
cd php-docs-samples/endpoints/getting-started
Para clonar ou transferir a API de exemplo:
- Clone o repositório da app de exemplo para a sua máquina local:
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples
Em alternativa, transfira o exemplo como um ficheiro ZIP e extraia-o.
- Altere para o diretório que contém o código de exemplo:
cd ruby-docs-samples/endpoints/getting-started
Para clonar ou transferir a API de exemplo:
- Clone o repositório da app de exemplo para a sua máquina local:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
Em alternativa, transfira o exemplo como um ficheiro ZIP e extraia-o.
- Altere para o diretório que contém o código de exemplo:
cd nodejs-docs-samples/endpoints/getting-started
Configurar pontos finais
Tem de ter um documento OpenAPI baseado no OpenAPI 2.0 ou no OpenAPI 3.x que descreva a superfície das suas apps e quaisquer requisitos de autenticação. Para saber mais, consulte o artigo Versões do OpenAPI suportadas.
Também tem de adicionar um campo específico da Google que contenha o URL de cada app para que o ESPv2 tenha as informações necessárias para invocar uma app. Se não conhece o OpenAPI, consulte a vista geral do OpenAPI para mais informações.
OpenAPI 2.0
Para configurar os Endpoints através de uma especificação OpenAPI 2.0, pode usar o ficheiro openapi.yaml disponível no diretório endpoints/getting-started do código de exemplo transferido.
O conteúdo da especificação OpenAPI 2.0 deve ser semelhante ao seguinte:
swagger: "2.0" info: description: "A simple Google Cloud Endpoints API example." title: "Endpoints Example" version: "1.0.0" host: "echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog" consumes: - "application/json" produces: - "application/json" schemes: # Uncomment the next line if you configure SSL for this API. # - "https" - "http" paths: /echo: post: description: "Echo back a given message." operationId: "echo" produces: - "application/json" responses: 200: description: "Echo" schema: $ref: "#/definitions/echoMessage" parameters: - description: "Message to echo" in: body name: message required: true schema: $ref: "#/definitions/echoMessage" security: - api_key: [] /auth/info/googlejwt: get: description: "Returns the requests' authentication information." operationId: "auth_info_google_jwt" produces: - "application/json" responses: 200: description: "Authenication info." schema: $ref: "#/definitions/authInfoResponse" security: - api_key: [] google_jwt: [] /auth/info/googleidtoken: get: description: "Returns the requests' authentication information." operationId: "authInfoGoogleIdToken" produces: - "application/json" responses: 200: description: "Authentication info." schema: $ref: "#/definitions/authInfoResponse" security: - api_key: [] google_id_token: [] definitions: echoMessage: type: "object" properties: message: type: "string" authInfoResponse: properties: id: type: "string" email: type: "string" securityDefinitions: # This section configures basic authentication with an API key. api_key: type: "apiKey" name: "key" in: "query" # This section configures authentication using Google API Service Accounts # to sign a json web token. This is mostly used for server-to-server # communication. google_jwt: authorizationUrl: "" flow: "implicit" type: "oauth2" # This must match the 'iss' field in the JWT. x-google-issuer: "jwt-client.endpoints.sample.google.com" # Update this with your service account's email address. x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/jwk/YOUR_SERVICE_ACCOUNT_EMAIL" # This must match the "aud" field in the JWT. You can add multiple # audiences to accept JWTs from multiple clients. x-google-audiences: "echo.endpoints.sample.google.com" # This section configures authentication using Google OAuth2 ID Tokens. # ID Tokens can be obtained using OAuth2 clients, and can be used to access # your API on behalf of a particular user. google_id_token: authorizationUrl: "" flow: "implicit" type: "oauth2" x-google-issuer: "https://accounts.google.com" x-google-jwks_uri: "https://www.googleapis.com/oauth2/v3/certs" # Your OAuth2 client's Client ID must be added here. You can add # multiple client IDs to accept tokens from multiple clients. x-google-audiences: "YOUR_CLIENT_ID"
OpenAPI 3.x
Para configurar os Endpoints através de uma especificação OpenAPI 3.x, pode substituir o conteúdo do ficheiro openapi.yaml disponível no diretório endpoints/getting-started do código de exemplo transferido:
- Abra o
openapi.yamlno editor de texto e substitua o conteúdo pelo seguinte:openapi: 3.0.4 info: description: "A simple Google Cloud Endpoints API example." title: "Endpoints Example" version: "1.0.0" servers: - url: "http://echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog" x-google-endpoint: {} paths: "/echo": post: description: "Echo back a given message." operationId: "echo" requestBody: description: "Message to echo" required: true content: "application/json": schema: $ref: "#/components/schemas/echoMessage" responses: '200': description: "Echo" content: "application/json": schema: $ref: "#/components/schemas/echoMessage" security: - api_key: [] "/auth/info/googlejwt": get: description: "Returns the requests' authentication information." operationId: "auth_info_google_jwt" responses: '200': description: "Authentication info." content: "application/json": schema: $ref: "#/components/schemas/authInfoResponse" security: - api_key: [] google_jwt: [] "/auth/info/googleidtoken": get: description: "Returns the requests' authentication information." operationId: "authInfoGoogleIdToken" responses: '200': description: "Authentication info." content: "application/json": schema: $ref: "#/components/schemas/authInfoResponse" security: - api_key: [] google_id_token: [] components: schemas: echoMessage: type: "object" properties: message: type: "string" authInfoResponse: properties: id: type: "string" email: type: "string" securitySchemes: api_key: type: "apiKey" name: "key" in: "query" google_jwt: type: "oauth2" flows: implicit: authorizationUrl: "" scopes: {} x-google-auth: issuer: "jwt-client.endpoints.sample.google.com" jwksUri: "https://www.googleapis.com/service_accounts/v1/jwk/YOUR_SERVICE_ACCOUNT_EMAIL" audiences: "echo.endpoints.sample.google.com" google_id_token: type: "oauth2" flows: implicit: authorizationUrl: "" scopes: {} x-google-auth: issuer: "https://accounts.google.com" jwksUri: "https://www.googleapis.com/oauth2/v3/certs" audiences: - "YOUR_CLIENT_ID"
- Guarde o novo conteúdo de
openapi.yaml.
Este tutorial usa uma extensão específica da Google à especificação OpenAPI que lhe permite configurar o nome do serviço. O método para especificar o nome do serviço depende da versão da especificação OpenAPI que está a usar.
OpenAPI 2.0
Use o campo host para especificar o nome do serviço:
host: echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog
Para configurar pontos finais:
- Abra o ficheiro
openapi.yaml. - No campo
host, substitua YOUR_PROJECT_ID pelo seu Google Cloud ID do projeto. - Guarde o ficheiro
openapi.yaml.
OpenAPI 3.x
Use o campo url no objeto servers para especificar o nome do serviço:
servers: - url: https://echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog x-google-endpoint: {}
Para configurar pontos finais:
- Abra o ficheiro
openapi.yaml. - Se o ficheiro
openapi.yamltiver um campohost, remova-o. - Adicione um objeto
servers, conforme mostrado. - No campo
url, substitua YOUR_PROJECT_ID pelo seu Google Cloud ID do projeto. - Guarde o ficheiro
openapi.yaml.
Depois de concluir todos os passos de configuração seguintes para poder enviar pedidos com êxito para a API de exemplo através de um endereço IP, consulte o artigo Configurar o DNS dos pontos finais para ver informações sobre como configurar echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog para ser o nome de domínio totalmente qualificado (FQDN).
Implementação da configuração dos pontos finais
Para implementar a configuração do Endpoints, use o comando gcloud endpoints
services deploy. Este comando usa a gestão de serviços
para criar um serviço gerido.
Para implementar a configuração dos Endpoints:
- Certifique-se de que está no diretório onde se encontra o ficheiro de configuração
openapi.yaml. - Carregue a configuração e crie um serviço gerido:
gcloud endpoints services deploy openapi.yaml
O comando gcloud chama a API Service Management para criar um serviço gerido com o nome especificado no campo host ou servers.url do ficheiro openapi.yaml.
A gestão de serviços configura o serviço de acordo com as definições no ficheiro openapi.yaml. Quando faz alterações a
openapi.yaml, tem de voltar a implementar o ficheiro para atualizar o serviço
Endpoints.
À medida que cria e configura o serviço, o Service Management
envia informações para o terminal. Pode ignorar com segurança os avisos sobre os caminhos no ficheiro openapi.yaml que não requerem uma chave da API.
Quando terminar de configurar o serviço, a gestão de serviços apresenta uma mensagem com o ID de configuração do serviço e o nome do serviço, semelhante ao seguinte:
Service Configuration [2017-02-13r0] uploaded for service [echo-api.endpoints.example-project-12345.cloud.goog]
No exemplo anterior, 2017-02-13r0 é o ID de configuração do serviço e echo-api.endpoints.example-project-12345.cloud.goog é o serviço Endpoints. O ID de configuração do serviço consiste numa
data/hora seguida de um número de revisão. Se implementar o ficheiro
openapi.yaml novamente no mesmo dia, o número
de revisão é incrementado no ID de configuração do serviço. Pode ver a configuração do serviço Endpoints na página Endpoints > Serviços na Google Cloud consola.
Se receber uma mensagem de erro, consulte o artigo Resolução de problemas da implementação da configuração de pontos finais.
A verificar os serviços necessários
No mínimo, os pontos finais e o ESP requerem a ativação dos seguintes serviços Google:| Nome | Título |
|---|---|
servicemanagement.googleapis.com |
Service Management API |
servicecontrol.googleapis.com |
Service Control API |
Na maioria dos casos, o comando gcloud endpoints services deploy ativa estes serviços obrigatórios. No entanto, o comando gcloud é concluído com êxito, mas não ativa os serviços necessários nas seguintes circunstâncias:
Se usou uma aplicação de terceiros, como o Terraform, e não incluiu estes serviços.
Implementou a configuração do Endpoints numGoogle Cloud projeto existente no qual estes serviços foram explicitamente desativados.
Use o seguinte comando para confirmar que os serviços necessários estão ativados:
gcloud services list
Se não vir os serviços necessários listados, ative-os:
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.comAtive também o serviço Endpoints:
gcloud services enable ENDPOINTS_SERVICE_NAME
Para determinar o ENDPOINTS_SERVICE_NAME, pode:
Após implementar a configuração do Endpoints, aceda à página Endpoints na Cloud Console. A lista de ENDPOINTS_SERVICE_NAME possíveis é apresentada na coluna Nome do serviço.
Para a OpenAPI, o ENDPOINTS_SERVICE_NAME é o que especificou no campo
hostda sua especificação OpenAPI. Para o gRPC, o ENDPOINTS_SERVICE_NAME é o que especificou no camponameda sua configuração de pontos finais gRPC.
Para mais informações sobre os comandos gcloud, consulte os
serviços gcloud.
Implementar o back-end da API
Crie um modelo de instância
Crie um modelo que vai usar para criar um grupo de instâncias de VM. Cada instância criada a partir do modelo inicia um ESPv2 e um servidor de aplicações de back-end.
Na Google Cloud consola, aceda à página Modelos de instâncias.
Clique em Criar modelo de instância.
Em Nome, introduza
load-balancing-espv2-template.Em Configuração da máquina, defina o Tipo de máquina como
e2-micro.Em Disco de arranque, defina a Imagem como
Container Optimized OS stable version.Em Firewall, selecione Permitir tráfego HTTP.
Clique em Gestão, segurança, discos, trabalhar em rede, arrendamento único para revelar as definições avançadas.
Clique no separador Gestão. Em Automatização, introduza o seguinte Script de arranque. Lembre-se de atualizar o ENDPOINTS_SERVICE_NAME.
sudo docker network create --driver bridge esp_net sudo docker run \ --detach \ --name=echo \ --net=esp_net \ gcr.io/google-samples/echo-python:1.0 sudo docker run \ --detach \ --name=esp \ --publish=80:9000 \ --net=esp_net \ gcr.io/endpoints-release/endpoints-runtime:2 \ --service=ENDPOINTS_SERVICE_NAME \ --rollout_strategy=managed \ --listener_port=9000 \ --healthz=/healthz \ --backend=echo:8080
O script obtém, instala e inicia o servidor de aplicações de eco e o servidor proxy ESPv2 no arranque da instância.
Clique em Criar.
Aguarde até que o modelo seja criado antes de continuar.
Crie um grupo de instâncias gerido regional
Para executar a aplicação, use o modelo de instância para criar um grupo de instâncias gerido regional:
Na Google Cloud consola, aceda à página Grupos de instâncias.
Clique em Criar grupo de instâncias.
Em Nome, introduza
load-balancing-espv2-group.Em Localização, selecione Várias zonas.
Em Região, selecione us-central1.
Clique no menu pendente Configurar zonas para revelar Zonas. Selecione as seguintes zonas:
- us-central1-b
- us-central1-c
- us-central1-f
Em Modelo de instância, selecione
load-balancing-espv2-template.Em Ajuste de escala automático, selecione Não ajustar a escala automaticamente.
Defina o Número de instâncias como
3.Em Redistribuição de instâncias, selecione Ativada.
Em Reparação automática e Verificação de estado, selecione Sem verificação de estado.
Clique em Criar. Esta ação redireciona novamente para a página Grupos de instâncias.
Crie um balanceador de carga
Esta secção explica os passos necessários para criar um balanceador de carga global que direcione o tráfego HTTP para o seu grupo de instâncias.Este equilibrador de carga usa um front-end para receber tráfego de entrada e um back-end para distribuir este tráfego a instâncias em bom estado. Uma vez que o equilibrador de carga é composto por vários componentes, esta tarefa está dividida em várias partes:
- Configuração do back-end
- Configuração da interface
- Reveja e finalize
Conclua todos os passos para criar o balanceador de carga.
Na Google Cloud consola, aceda à página Criar um balanceador de carga.
Na secção Balanceador de carga de aplicações (HTTP/S), clique em Iniciar configuração.
Em Acessível pela Internet ou apenas interno, selecione Da Internet para as minhas VMs. Em seguida, clique em Continuar.
Para o Nome do balanceador de carga, introduza
espv2-load-balancer.
Configuração do back-end
- No painel do lado esquerdo da página Criar Application Load Balancer externo global, clique em Configuração do back-end.
- Clique em Criar ou selecionar serviços de back-end e contentores de back-end para abrir um menu pendente. Clique em Serviços de back-end e, de seguida, em Criar um serviço de back-end.
- Na nova janela, para o Nome da aplicação de back-end, introduza
espv2-backend. - Defina Grupo de instâncias como
load-balancing-espv2-group. - Defina Transferir números como
80. Isto permite o tráfego HTTP entre o balanceador de carga e o grupo de instâncias. - Em Modo de equilíbrio, selecione Utilização.
- Clique em Concluído para criar o back-end.
Crie a verificação de funcionamento para o back-end do balanceador de carga:
- Em Verificação de funcionamento, selecione Criar uma verificação de funcionamento (ou Criar outra verificação de funcionamento) no menu pendente. É aberta uma nova janela.
- Na nova janela, em Nome, introduza
espv2-load-balancer-check. - Defina o Protocolo como HTTP.
- Em Porta, introduza
80. - Para este tutorial, defina o Caminho do pedido como
/healthz, que é um caminho que o ESPv2 está configurado para responder. Defina os seguintes critérios de estado:
- Defina o Intervalo de verificação para
3segundos. Isto define a quantidade de tempo desde o início de uma sondagem até ao início da seguinte. - Defina o Limite de tempo para
3segundos. Isto define o tempo que Google Cloud aguarda uma resposta a uma sondagem. O valor tem de ser inferior ou igual ao intervalo de verificação. - Defina o Limite saudável para
2sucessos consecutivos. Isto define o número de sondagens sequenciais que têm de ser bem-sucedidas para que a instância seja considerada em bom estado. - Defina o limite não saudável para
2falhas consecutivas. Este parâmetro define o número de sondagens sequenciais que têm de falhar para que a instância seja considerada não saudável.
- Defina o Intervalo de verificação para
Clique em Guardar e continuar para criar a verificação de estado.
Clique em Criar para criar o serviço de back-end.
Configuração da interface
- No painel do lado esquerdo da página Criar Application Load Balancer externo global, clique em Configuração do front-end.
- Na página Configuração do frontend, em Nome, introduza
espv2-ipv4-frontend. - Defina o Protocolo como
HTTP. - Defina a Porta para
80. - Clique em Concluído para criar o frontend.
Reveja e finalize
Valide as definições de equilíbrio de carga antes de criar o equilibrador de carga:
- No painel do lado esquerdo da página Criar Application Load Balancer externo global, clique em Rever e finalizar.
Na página Reveja e finalize, verifique as seguintes definições de back-end:
- O serviço de back-end está
espv2-backend. - O protocolo do ponto final é
HTTP. - A verificação de funcionamento está
espv2-load-balancer-check. - O grupo de instâncias está
load-balancing-espv2-group.
- O serviço de back-end está
Na mesma página, verifique se o Frontend usa um endereço IP com um Protocolo de
HTTP.
No painel esquerdo da página Criar Application Load Balancer externo global, clique em Criar para concluir a criação do balanceador de carga.
Pode ter de aguardar alguns minutos para que a criação do equilibrador de carga termine.
Depois de criar o balanceador de carga, encontre o endereço IP na página Balanceador de carga.
Enviar um pedido através de um endereço IP
Depois de a API de exemplo e o ESPv2 estarem em execução no back-end implementado, pode enviar pedidos para a API a partir da sua máquina local.
Crie uma chave da API e defina uma variável de ambiente
O código de exemplo requer uma chave da API. Para simplificar o pedido, defina uma variável de ambiente para a chave da API.
No mesmo Google Cloud projeto que usou para a sua API, crie uma chave da API na página de credenciais da API. Se quiser criar uma chave da API num Google Cloud projeto diferente, consulte o artigo Ativar uma API no seu Google Cloud projeto.
- Clique em Criar credenciais e, de seguida, selecione Chave de API.
- Copie a chave para a área de transferência.
- Clique em Fechar.
- No computador local, cole a chave da API para a atribuir a uma variável de ambiente:
- No Linux ou macOS:
export ENDPOINTS_KEY=AIza... - No Windows PowerShell:
$Env:ENDPOINTS_KEY="AIza..."
- No Linux ou macOS:
Envie o pedido
Linux ou Mac OS
Use curl para enviar um pedido HTTP através da variável de ambiente ENDPOINTS_KEY que definiu anteriormente. Substitua IP_ADDRESS pelo endereço IP externo da sua instância.
curl --request POST \ --header "content-type:application/json" \ --data '{"message":"hello world"}' \ "http://IP_ADDRESS:80/echo?key=${ENDPOINTS_KEY}"
Nos curl anteriores:
- A opção
--dataespecifica os dados a publicar na API. - A opção
--headerespecifica que os dados estão no formato JSON.
PowerShell
Use Invoke-WebRequest para enviar um pedido HTTP através da variável de ambiente ENDPOINTS_KEY
que definiu anteriormente. Substitua IP_ADDRESS pelo endereço IP externo da sua instância.
(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' ` -Headers @{"content-type"="application/json"} ` -URI "http://IP_ADDRESS:80/echo?key=$Env:ENDPOINTS_KEY").Content
No exemplo anterior, as duas primeiras linhas terminam com um acento grave. Quando colar o exemplo no PowerShell, certifique-se de que não existe um espaço após os acentos graves. Para obter informações sobre as opções usadas no pedido de exemplo, consulte Invoke-WebRequest na documentação da Microsoft.
App de terceiros
Pode usar uma aplicação de terceiros, como a extensão do navegador Chrome Postman, para enviar o pedido:
- Selecione
POSTcomo verbo HTTP. - Para o cabeçalho, selecione a chave
content-typee o valorapplication/json. - Para o corpo, introduza o seguinte:
{"message":"hello world"} -
No URL, use a chave da API real em vez da variável de ambiente.
Por exemplo:
http://192.0.2.0:80/echo?key=AIza...
A API devolve a mensagem que envia e responde com o seguinte:
{
"message": "hello world"
}
Se não recebeu uma resposta bem-sucedida, consulte o artigo Resolução de problemas de erros de resposta.
Acabou de implementar e testar uma API no Endpoints!
Configurar o DNS para pontos finais
Uma vez que o nome do serviço Endpoints para a API está no domínio .endpoints.YOUR_PROJECT_ID.cloud.goog, pode usá-lo como o nome de domínio totalmente qualificado (FQDN) fazendo uma pequena alteração de configuração no ficheiro openapi.yaml. Desta forma, pode
enviar pedidos para a API de exemplo através de
echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog
em vez do endereço IP.
Para configurar o DNS dos Endpoints:
OpenAPI 2.0
- Abra o ficheiro de configuração da OpenAPI,
openapi.yaml, e adicione a propriedadex-google-endpointsno nível superior do ficheiro (sem recuo nem aninhamento), conforme mostrado no seguinte fragmento:host: "echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog" x-google-endpoints: - name: "echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog" target: "IP_ADDRESS" - Na propriedade
name, substitua YOUR_PROJECT_ID pelo ID do seu projeto. - Na propriedade
target, substitua IP_ADDRESS pelo endereço IP que usou quando enviou um pedido para a API de exemplo. - Implemente o ficheiro de configuração OpenAPI atualizado na gestão de serviços:
gcloud endpoints services deploy openapi.yaml
OpenAPI 3.x
- Abra o ficheiro de configuração da OpenAPI,
openapi.yaml, e adicione a propriedadeservers.urlno nível superior do ficheiro (sem recuo nem aninhamento), conforme mostrado no seguinte fragmento:servers: - url: "echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog" x-google-endpoint: target: "IP_ADDRESS" - Na propriedade
name, substitua YOUR_PROJECT_ID pelo ID do seu projeto. - Na propriedade
target, substitua IP_ADDRESS pelo endereço IP que usou quando enviou um pedido para a API de exemplo. - Implemente o ficheiro de configuração OpenAPI atualizado na gestão de serviços:
gcloud endpoints services deploy openapi.yaml
Por exemplo, suponha que o ficheiro openapi.yaml tem a seguinte configuração:
OpenAPI 2.0
host: "echo-api.endpoints.example-project-12345.cloud.goog" x-google-endpoints: - name: "echo-api.endpoints.example-project-12345.cloud.goog" target: "192.0.2.1"
OpenAPI 3.x
servers:
- url: "echo-api.endpoints.example-project-12345.cloud.goog"
x-google-endpoint:
target: "192.0.2.1"Quando implementa o ficheiro openapi.yaml através do comando
gcloud anterior, a gestão de serviços cria um registo A de DNS,
echo-api.endpoints.my-project-id.cloud.goog, que é resolvido para o
endereço IP de destino, 192.0.2.1. A propagação da nova configuração de DNS pode demorar alguns minutos.
Configurar SSL
Para mais detalhes sobre como configurar o DNS e o SSL, consulte o artigo Ativar SSL para pontos finais.
Enviar um pedido através do FQDN
Agora que tem o registo DNS configurado para a API de exemplo, envie-lhe um pedido usando o FQDN (substitua YOUR_PROJECT_ID pelo ID do seu projeto) e a variável de ambiente ENDPOINTS_KEY definida anteriormente:
- No Linux ou no Mac OS:
curl --request POST \ --header "content-type:application/json" \ --data '{"message":"hello world"}' \ "http://echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog:80/echo?key=${ENDPOINTS_KEY}"
- No Windows PowerShell:
(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' -Headers @{"content-type"="application/json"} -URI "http://echo-api.endpoints.[YOUR_PROJECT_ID].cloud.goog:80/echo?key=$Env:ENDPOINTS_KEY").Content
Acompanhamento da atividade da API
Para acompanhar a atividade da API:
- Consulte os gráficos de atividade da sua API na página Endpoints > Serviços.
Aceda à página Serviços de pontos finais
Pode demorar alguns momentos até que o pedido se reflita nos gráficos. - Consulte os registos de pedidos da sua API na página do explorador de registos.
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.
Certifique-se de que a CLI gcloud (
gcloud) está autorizada a aceder aos seus dados e serviços em Google Cloud:gcloud auth loginIntroduza o seguinte para apresentar os IDs dos seus Google Cloud projetos:
gcloud projects listUsando o ID do projeto aplicável do passo anterior, defina o projeto predefinido Google Cloud para aquele em que a sua aplicação se encontra:
gcloud config set project [YOUR_PROJECT_ID]Obtenha o nome de todos os serviços geridos no seu Google Cloud projeto:
gcloud endpoints services listElimine o serviço na gestão de serviços. Substitua
SERVICE_NAMEpelo nome do serviço que quer remover.gcloud endpoints services delete SERVICE_NAME
A execução de
gcloud endpoints services deletenão elimina imediatamente o serviço gerido. A gestão de serviços desativa o serviço gerido durante 30 dias, o que lhe dá tempo para o restaurar, se precisar. Após 30 dias, a gestão de serviços elimina permanentemente o serviço gerido.Aceda à página Load Balancer.
Aceder ao balanceador de carga
Elimine o balanceador de carga
espv2-load-balancercom o serviço de back-endespv2-backende a verificação de funcionamentoespv2-load-balancer-check.Aceda à página Grupos de instâncias.
Eliminar
load-balancing-espv2-groupAceda à página Modelo de instância.
Eliminar
load-balancing-espv2-template.