Comece a usar o API Gateway e o App Engine
Esta página mostra como configurar o API Gateway para gerir e proteger um serviço de back-end do App Engine.
Lista de tarefas
Use a seguinte lista de tarefas enquanto segue o tutorial. Todas as tarefas são necessárias para implementar um gateway de API para o serviço de back-end do App Engine.
- Crie ou selecione um Google Cloud projeto.
- Se não tiver implementado a sua própria app do App Engine, implemente uma app de exemplo. Consulte a secção Antes de começar.
- Ative os serviços do gateway da API necessários.
- Configure as CNAs para proteger a sua app. Consulte o artigo Configure as CNAs.
- Crie uma especificação OpenAPI que descreva a sua API e configure as rotas para o App Engine. Consulte o artigo Criar uma configuração de API.
- Implemente um gateway de API através da configuração da API. Consulte o artigo Implementar um gateway da API.
- Monitorize a atividade nas suas apps. Consulte o artigo Acompanhamento da atividade da API.
- Evite incorrer em cobranças na sua conta Google Cloud . Consulte Limpar.
Antes de começar
Na Google Cloud consola, aceda à página Painel de controlo e selecione ou crie um Google Cloud projeto.
Certifique-se de que a faturação está ativada para o seu projeto.
Tome nota do ID do projeto que quer usar para este tutorial. No resto desta página, este ID do projeto é designado como PROJECT_ID.
Transfira e instale a Google Cloud CLI.
Atualize os
gcloud
componentes:gcloud components update
Defina o projeto predefinido. Substitua PROJECT_ID pelo ID do seu Google Cloud projeto:
gcloud config set project PROJECT_ID
Se não implementou a sua própria app do App Engine, siga os passos no Início rápido do App Engine para o seu idioma de modo a usar a CLI Google Cloud para selecionar ou criar um projeto e implementar uma app de exemplo. Anote o URL da app, bem como a região e o ID do projeto onde a sua app está implementada. Google Cloud
Ativar serviços necessários
O API Gateway requer que ative os seguintes serviços Google:
Nome | Título |
---|---|
apigateway.googleapis.com |
API do API Gateway |
servicemanagement.googleapis.com |
Service Management API |
servicecontrol.googleapis.com |
Service Control API |
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 apigateway.googleapis.comgcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
Para mais informações sobre os serviços gcloud
, consulte os
serviços gcloud
.
Configurar a IAP para proteger a sua app
Para proteger a sua app do App Engine, tem de usar o Identity Aware Proxy (IAP) para garantir que os pedidos são autenticados. Este processo inclui a especificação dos membros aos quais deve ser concedida a função IAP-secured Web App User
necessária para o projeto.
Siga os passos para ativar as CNA e certifique-se de que consegue iniciar sessão na sua aplicação.
Criar uma configuração de API
Antes de poder usar o API Gateway para gerir o tráfego para o seu back-end do App Engine implementado, precisa de uma configuração da API.
Pode criar uma configuração da API através de uma especificação OpenAPI que contenha anotações especializadas para definir o comportamento escolhido do API Gateway. Tem de adicionar um campo específico da Google que contenha o URL de cada app do App Engine para que o API Gateway tenha as informações necessárias para invocar uma app.
- Crie um ficheiro de texto denominado
openapi2-appengine.yaml
. (Por conveniência, esta página refere-se à especificação OpenAPI por esse nome de ficheiro, mas pode atribuir-lhe outro nome, se preferir.) - Liste cada uma das suas apps na secção
paths
do ficheiroopenapi2-appengine.yaml
, conforme mostrado:# openapi2-appengine.yaml swagger: '2.0' info: title: API_ID optional-string description: Sample API on API Gateway with an App Engine backend version: 1.0.0 schemes: - https produces: - application/json paths: /hello: get: summary: Greet a user operationId: hello x-google-backend: address: APP_URL jwt_audience: IAP_CLIENT_ID responses: '200': description: A successful response schema: type: string
- No campo
title
, substitua API_ID pelo nome da sua API e substitua optional-string por uma breve descrição à sua escolha. Se a API ainda não existir, o comando para criar a configuração da API também cria a API com o nome que especificar. O valor do campotitle
é usado quando são geradas chaves de API que concedem acesso a esta API. Consulte os requisitos de ID da API para ver as diretrizes de nomenclatura da API. - No campo
address
da secçãox-google-backend
, substitua APP_URL pelo URL real do seu serviço do App Engine (o caminho completo da API chamada). Por exemplo,https://myapp.an.r.appspot.com/hello
.Substitua IAP_CLIENT_ID pelo ID de cliente OAuth que criou quando configurou a IAP.
- Introduza o seguinte comando, onde:
- CONFIG_ID especifica o nome da configuração da API.
- API_ID especifica o nome da sua API. Se a API ainda não existir, este comando cria-a.
- PROJECT_ID especifica o nome do seu Google Cloud projeto.
- SERVICE_ACCOUNT_EMAIL especifica a conta de serviço usada para assinar tokens para back-ends com autenticação configurada.
gcloud api-gateway api-configs create CONFIG_ID \ --api=API_ID --openapi-spec=openapi2-appengine.yaml \ --project=PROJECT_ID --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL
Esta operação pode demorar vários minutos a ser concluída, uma vez que a configuração da API é propagada para os sistemas a jusante. A criação de uma configuração de API complexa pode demorar até dez minutos a ser concluída com êxito.
- Depois de criar a configuração da API, pode ver os respetivos detalhes executando este comando:
gcloud api-gateway api-configs describe CONFIG_ID \ --api=API_ID --project=PROJECT_ID
Implementar um gateway da API
Agora, pode implementar a sua API no API Gateway. A implementação de uma API no API Gateway também define um URL externo que os clientes API podem usar para aceder à sua API.
Execute o seguinte comando para implementar a configuração da API que acabou de criar no API Gateway:
gcloud api-gateway gateways create GATEWAY_ID \ --api=API_ID --api-config=CONFIG_ID \ --location=GCP_REGION --project=PROJECT_ID
where:
- GATEWAY_ID especifica o nome da gateway.
- API_ID especifica o nome da API do API Gateway associada a este gateway.
- CONFIG_ID especifica o nome da configuração da API implementada no gateway.
GCP_REGION é a Google Cloud região para o gateway implementado.
PROJECT_ID especifica o nome do seu Google Cloud projeto.
Após a conclusão com êxito, pode usar o seguinte comando para ver detalhes sobre o gateway:
gcloud api-gateway gateways describe GATEWAY_ID \ --location=GCP_REGION --project=PROJECT_ID
Anote o valor da propriedade defaultHostname
no resultado deste comando. Esta é a parte do nome do anfitrião do URL do gateway que usa para testar a implementação no passo seguinte.
Testar a implementação da API
Agora, pode enviar pedidos para a sua API através do URL gerado após a implementação da sua entrada.
Introduza o seguinte comando curl
, em que:
- DEFAULT_HOSTNAME especifica a parte do nome do anfitrião do URL da gateway implementada. Pode encontrar o valor de
defaultHostname
no resultado do comandogateways describe
apresentado acima. hello
é o caminho especificado na configuração da API.
curl https://DEFAULT_HOSTNAME/hello
Por exemplo:
curl https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
Deverá ver o seguinte resultado:
My-AppEngineApp: Access denied for user gateway-1a2b3c@04d5e6f35FgdsT73dFrty-tp.iam.gserviceaccount.com requesting https://my-project.appspot.com/helloGET. If you should have access, contact myldap@google.com and include the full text of this message.
Êxito! O gateway está a gerir o acesso ao serviço de back-end do App Engine. Para conceder acesso à sua app do App Engine, tem de configurar uma conta de serviço com as autorizações corretas para o seu gateway.
Acompanhamento da atividade da API
Veja os gráficos de atividade da sua API na página API Gateway na Google Cloud consola. Clique na sua API para ver os respetivos gráficos de atividade na página Vista geral. Os pedidos podem demorar alguns momentos a ser refletidos nos gráficos.
Consulte os registos de pedidos da sua API na página Explorador de registos. Pode encontrar um link para a página do Explorador de registos na página do API Gateway na Google Cloud consola.
Depois de aceder à página do API Gateway:- Selecione a API a ver.
- Clique no separador Detalhes.
- Clique no link em Registos.
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste início rápido, pode:
Em alternativa, também pode eliminar o Google Cloud projeto usado para este tutorial.