Introdução ao API Gateway e ao 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 ainda não implementou o seu próprio 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 descrição OpenAPI que descreva a sua API e configure as rotas para o App Engine. Consulte o artigo Crie 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.
- Monitorizar a atividade nas suas apps. Consulte o artigo Acompanhamento da atividade da API.
- Evite incorrer em cobranças na sua Google Cloud conta. 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 por PROJECT_ID.
Transfira e instale a Google Cloud CLI.
Atualize os
gcloudcomponentes:gcloud components update
Defina o projeto predefinido. Substitua PROJECT_ID pelo seu Google Cloud ID do 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 Google Cloud 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.
Ative os 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 |
Use os seguintes comandos para ativar estes serviços:
gcloud services enable apigateway.googleapis.comgcloud services enable servicemanagement.googleapis.comgcloud services enable servicecontrol.googleapis.com
Para mais informações sobre os serviços gcloud, consulte o artigo
Serviços gcloud.
Configure a IAP para proteger a sua app
Para proteger a sua app do App Engine, tem de usar o Identity Aware Proxy (IAP) para verificar se os pedidos estã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 CAsI e verifique se consegue iniciar sessão na sua aplicação.
Crie 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 descrição da 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.
Para mais detalhes sobre as extensões OpenAPI suportadas, consulte o seguinte:
Para criar a configuração da API:
- Crie um ficheiro de texto denominado
openapi-appengine.yaml. Por conveniência, esta página refere-se à descrição da OpenAPI por esse nome de ficheiro, mas pode atribuir-lhe outro nome, se preferir. - Copie o conteúdo do seguinte ficheiro para o ficheiro
openapi-run.yaml:OpenAPI 2.0
# openapi-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
addressda 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 as CAs.
OpenAPI 3.x
# openapi-appengine.yaml openapi: 3.0.4 info: title: API_ID optional-string description: Sample API on API Gateway with an App Engine backend version: 1.0.0 # Define reusable components in x-google-api-management x-google-api-management: backends: appengine_backend: address: APP_URL jwtAudience: IAP_CLIENT_ID deadline: 30.0 pathTranslation: APPEND_PATH_TO_ADDRESS protocol: "http/1.1" # Apply the backend configuration by referencing it by name. Set at the root so this applies to all operations unless overridden. x-google-backend: appengine_backend paths: /hello: get: summary: Greet a user operationId: hello 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, 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 as CAs.
- No campo
- 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.
- 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 \ --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 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
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=