Este tutorial mostra como configurar e implementar uma API .NET Core de exemplo e o Extensible Service Proxy (ESP) em execução numa instância no ambiente flexível do App Engine. A API REST do código de exemplo é 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, instale o software necessário e crie uma aplicação do App Engine. Consulte a secção Antes de começar.
- Transfira o exemplo de código. Consulte o artigo Obter o exemplo de código.
- Configure o ficheiro
openapi-appengine.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 de exemplo e o ESP no App Engine. Consulte o artigo Implementar o back-end da API.
- Envie um pedido para a API. Consulte o artigo Enviar um pedido para a API.
- 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 projetada,
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
- 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. 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.
-
Este tutorial requer o SDK.NET Core 2.x, que pode usar com qualquer editor de texto. Embora não seja necessário um ambiente de programação integrado (IDE),
para maior comodidade, recomendamos que use um dos
seguintes IDEs:
- Visual Studio Code, que é executado no macOS, Linux e Windows. Se usar o Visual Studio Code, também tem de instalar o .NET Core 2.x.
- Visual Studio 2017 para Windows, que inclui o .NET Core 2.x. Se usar o Visual Studio 2017, recomendamos que use o plug-in Google Cloud Tools for Visual Studio, que integra a implementação do App Engine no IDE.
- Visual Studio para Mac, que inclui o .NET Core 2.x.
Precisa de uma aplicação para enviar pedidos para a API de exemplo. Este tutorial fornece um exemplo com o
Invoke-WebRequest
, que é suportado no PowerShell 3.0 e posterior.- 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 Google Cloud projeto. Se tiver outros Google Cloud projetos e quiser usar
gcloud
para os gerir, consulte o artigo Gerir configurações da CLI gcloud. - Selecione a região onde quer criar a sua aplicação do App Engine. Execute o seguinte comando para obter uma lista de regiões:
gcloud app regions list
- Crie uma aplicação do App Engine.
Substitua YOUR_PROJECT_ID pelo ID do seu Google Cloud
projeto e
YOUR_REGION pela região na qual quer que a
aplicação do App Engine seja criada.
gcloud app create \ --project=YOUR_PROJECT_ID \ --region=YOUR_REGION
Obter o exemplo de código
Para transferir a API de exemplo:
Transfira o código de exemplo como um ficheiro ZIP.
Extraia o ficheiro ZIP e altere para o diretório
dotnet-docs-samples-master\endpoints\getting-started
.Abra
GettingStarted.sln
com o Visual Studio ou use o seu editor favorito para editar os ficheiros no diretórioendpoints\getting-started\src\IO.Swagger
.
Configurar pontos finais
O exemplo de código inclui o ficheiro de configuração da OpenAPI,
openapi-appengine.yaml
, que se baseia na
especificação da OpenAPI v2.0.
- No diretório de código de exemplo, abra o
openapi-appengine.yaml
ficheiro de configuração.Tenha em conta o seguinte:
- O exemplo de configuração apresenta as linhas junto ao campo
host
que tem de modificar. Para implementaropenapi-appengine.yaml
nos Endpoints, é necessário o documento OpenAPI completo. - O exemplo
openapi-appengine.yaml
contém uma secção para configurar a autenticação que não é necessária para este tutorial. Não tem de configurar as linhas com YOUR-SERVICE-ACCOUNT-EMAIL e YOUR-CLIENT-ID. - A OpenAPI é uma especificação independente do idioma. O mesmo ficheiro
openapi-appengine.yaml
encontra-se no exemplogetting-started
no repositório do GitHub de cada idioma para sua conveniência.
- O exemplo de configuração apresenta as linhas junto ao campo
- Na linha com o campo
host
, substitua YOUR-PROJECT-ID pelo ID do seu Google Cloud projeto. Por exemplo:host: "example-project-12345.appspot.com"
O Endpoints usa o texto configurado no campo host
como o nome do serviço. Quando implementa a API no back-end do App Engine, é criado automaticamente um registo de DNS com um nome no formato YOUR-PROJECT-ID.appspot.com
.
Para obter informações sobre os campos no documento OpenAPI que o Endpoints requer, consulte o artigo Configurar o Endpoints.
Implementar a 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
endpoints/getting-started
. - Carregue a configuração e crie um serviço gerido:
gcloud endpoints services deploy openapi-appengine.yaml
Em seguida, o comando gcloud
chama a API Service Management para criar um serviço gerido com o nome que especificou no campo host
do ficheiro openapi-appengine.yaml
.
A gestão de serviços configura o serviço de acordo com as definições no ficheiro openapi-appengine.yaml
. Quando faz alterações ao
openapi-appengine.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-appengine.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 [example-project-12345.appspot.com]
No exemplo anterior, 2017-02-13r0
é o ID de configuração do serviço e example-project-12345.appspot.com
é 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-appengine.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.com
Ative 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
host
da sua especificação OpenAPI. Para o gRPC, o ENDPOINTS_SERVICE_NAME é o que especificou no camponame
da 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
Até agora, implementou o documento OpenAPI na gestão de serviços, mas ainda não implementou o código que publica o back-end da API. Esta secção explica como implementar a API de exemplo e o ESP no App Engine.
Para implementar o back-end da API:
- Abra o ficheiro
endpoints/getting-started/src/IO.Swagger/app.yaml
e adicione o nome do seu serviço: - Guarde o ficheiro
app.yaml
. - Certifique-se de que está no diretório
endpoints/getting-started
, onde se encontra o ficheiro de configuraçãoopenapi-appengine.yaml
. - Implemente a API de exemplo e o ESP no App Engine:
Substitua ENDPOINTS-SERVICE-NAME pelo nome do seu serviço
Endpoints. Este é o mesmo nome que configurou no campo host
do seu documento OpenAPI. Por exemplo:
endpoints_api_service: name: example-project-12345.appspot.com rollout_strategy: managed
A opção rollout_strategy: managed
configura o ESP para usar a configuração do serviço implementada mais recente. Quando
especifica esta opção, até 5 minutos após implementar uma nova configuração de serviço, o ESP deteta a alteração e começa a usá-la automaticamente. Recomendamos que especifique esta opção em vez de um ID de configuração específico para o ESP usar.
Uma vez que a secção endpoints_api_service
está incluída no ficheiro app.yaml
, o comando gcloud app deploy
implementa e configura o ESP num contentor separado do ambiente flexível do App Engine. Todo o tráfego de pedidos é encaminhado através do ESP, e este
encaminha pedidos e respostas de e para o contentor que executa o seu
código do servidor de back-end.
dotnet restore dotnet publish gcloud app deploy src\IO.Swagger\bin\Debug\netcoreapp2.0\publish\app.yaml
O comando gcloud app deploy
cria um registo de DNS no formato YOUR_PROJECT_ID.appspot.com
, que usa quando envia pedidos à API. Recomendamos que aguarde alguns minutos antes de enviar pedidos à sua API enquanto o App Engine é completamente inicializado.
Se receber uma mensagem de erro, consulte o artigo Resolução de problemas da implementação flexível do App Engine.
Para mais informações, consulte o artigo Implementar o back-end da API.
Enviar pedidos para a API
Depois de implementar a API de exemplo, pode enviar-lhe pedidos.
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:
$Env:ENDPOINTS_KEY="AIza..."
Envie o pedido
No PowerShell, defina uma variável de ambiente para o URL do projeto do App Engine. Substitua YOUR_PROJECT_ID pelo ID do seu projeto.Google Cloud
$Env:ENDPOINTS_HOST="https://YOUR_PROJECT_ID.appspot.com"
Teste um pedido HTTP com as variáveis de ambiente
ENDPOINTS_HOST
eENDPOINTS_KEY
que definiu anteriormente:Invoke-WebRequest "$ENDPOINTS_HOST/echo?key=$ENDPOINTS_KEY" ` -Body '{"message": "hello world"}' -Method POST ` -ContentType "application/json"
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.
A API devolve a mensagem que lhe 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!
Acompanhamento da atividade da API
Veja os gráficos de atividade da sua API na página Endpoints.
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.
Consulte o artigo Eliminar uma API e instâncias de API para obter informações sobre como parar os serviços usados por este tutorial.