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.

  1. Crie ou selecione um Google Cloud projeto.
  2. 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.
  3. Ative os serviços do gateway da API necessários.
  4. Configure as CNAs para proteger a sua app. Consulte o artigo Configure as CNAs.
  5. 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.
  6. Implemente um gateway de API através da configuração da API. Consulte o artigo Implementar um gateway da API.
  7. Monitorize a atividade nas suas apps. Consulte o artigo Acompanhamento da atividade da API.
  8. Evite incorrer em cobranças na sua conta Google Cloud . Consulte Limpar.

Antes de começar

  1. Na Google Cloud consola, aceda à página Painel de controlo e selecione ou crie um Google Cloud projeto.

    Aceda à página Painel de controlo

  2. Certifique-se de que a faturação está ativada para o seu projeto.

    Ative a faturação

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

  4. Transfira e instale a Google Cloud CLI.

    Transfira a CLI gcloud

  5. Atualize os gcloudcomponentes:

    gcloud components update
  6. Defina o projeto predefinido. Substitua PROJECT_ID pelo ID do seu Google Cloud projeto:

    gcloud config set project PROJECT_ID

  7. 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.com
gcloud 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.

  1. 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.)
  2. Liste cada uma das suas apps na secção paths do ficheiro openapi2-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
  3. 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 campo title é 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.
  4. No campo address da secção x-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.

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

  6. 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 comando gateways 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

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

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

    Aceda à página do API Gateway

    Depois de aceder à página do API Gateway:

    1. Selecione a API a ver.
    2. Clique no separador Detalhes.
    3. 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.