Guia de início rápido: proteger o tráfego para um serviço com a CLI gcloud

Nesta página, mostramos como implantar uma API no gateway de API para proteger o tráfego em um serviço de back-end.

Siga as etapas abaixo para implantar uma nova API e acessar um serviço de back-end no Cloud Run functions usando a Google Cloud CLI. Neste guia de início rápido, também descrevemos como usar uma chave de API para proteger o back-end contra acessos não autorizados.

Antes de começar

  1. No console do Google Cloud , acesse a página Painel e selecione ou crie um projeto do Google Cloud .

    Ir para o painel

  2. Confirme se o faturamento está ativado no projeto.

    Ativar faturamento

  3. Verifique se a Google Cloud CLI está salva e instalada na sua máquina.

    Fazer o download da CLI gcloud

  4. Atualize os componentes gcloud:

    gcloud components update
  5. Defina o projeto padrão. Substitua PROJECT_ID pelo ID do projeto Google Cloud .

    gcloud config set project PROJECT_ID

Ativar serviços obrigatórios

O gateway de API exige que você ative os seguintes serviços Google Cloud :

Nome Nome do serviço
API Gateway API apigateway.googleapis.com
Service Management API servicemanagement.googleapis.com
API Service Control servicecontrol.googleapis.com

Para ativar os serviços necessários:

Console do Google Cloud

  1. No console do Google Cloud , acesse a página APIs e serviços > Biblioteca de APIs.

    Acessar a biblioteca de APIs

  2. Na página Biblioteca de APIs, digite o nome da API necessária na barra de pesquisa.
  3. Nos resultados da pesquisa, selecione a página da API.
  4. Na página da API, clique em Ativar.
  5. Repita essas etapas para cada um dos serviços listados na tabela anterior.

CLI do Google Cloud

Use os comandos a seguir para ativar os serviç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 do gcloud, consulte serviços gcloud.

Implantar um back-end de API

O API Gateway fica na frente de um serviço de back-end implantado e processa todas as solicitações recebidas. Neste guia de início rápido, o gateway de API encaminha as chamadas recebidas para um back-end de função do Cloud Run chamado helloGET, que contém a função Node.js mostrada abaixo.

const functions = require('@google-cloud/functions-framework');

// Register an HTTP function with the Functions Framework that will be executed
// when you make an HTTP request to the deployed function's endpoint.
functions.http('helloGET', (req, res) => {
  res.send('Hello World!');
});

Siga as etapas no Guia de início rápido: implantar uma função do Cloud Run usando a Google Cloud CLI para fazer o download do código de amostra das funções do Cloud Run e implantar o serviço de back-end da função do Cloud Run. Seu administrador precisará conceder outros papéis à sua conta e à conta de serviço do Cloud Build, conforme descrito neste início rápido.

Copie o URL do serviço que aparece quando a função do Cloud Run é implantada. Você vai precisar dele ao criar a configuração da API em uma etapa posterior.

Criar uma API

Agora você já pode criar uma API no gateway de API.

  1. Digite o seguinte comando, em que:

    • API_ID especifica o nome da sua API; Consulte os requisitos de ID da API para ver as diretrizes de nomenclatura.
      gcloud api-gateway apis create API_ID 

    Exemplo:

    gcloud api-gateway apis create my-api
  2. Após a conclusão, o comando a seguir pode ser usado para ver detalhes sobre a nova API:

    gcloud api-gateway apis describe API_ID 

    Exemplo:

    gcloud api-gateway apis describe my-api 

    Este comando mostra o seguinte:

      createTime: '2020-02-29T21:52:20.297426875Z'
      displayName: my-api
      managedService: my-api-123abc456def1.apigateway.my-project.cloud.goog
      name: projects/my-project/locations/global/apis/my-api
      state: ACTIVE
      updateTime: '2020-02-29T21:52:20.647923711Z'

Copie o valor da propriedade managedService. Esse valor é usado para ativar a API em uma etapa subsequente.

Criar uma configuração de API

Antes de usar o gateway de API para gerenciar o tráfego para o back-end da API implantado, ele precisa de uma configuração de API.

Você pode criar uma configuração de API usando uma descrição OpenAPI que contenha anotações especializadas para definir o comportamento escolhido do gateway de API. Para mais detalhes sobre as extensões da OpenAPI compatíveis, consulte o seguinte:

A descrição OpenAPI usada neste guia de início rápido contém instruções de roteamento para o back-end da função do Cloud Run:

OpenAPI 2.0

# openapi-functions.yaml
swagger: '2.0'
info:
  title: API_ID optional-string
  description: Sample API on API Gateway with a Google Cloud Functions backend
  version: 1.0.0
schemes:
  - https
produces:
  - application/json
paths:
  /hello:
    get:
      summary: Greet a user
      operationId: hello
      x-google-backend:
        address: SERVICE_URL/helloGET
      responses:
        '200':
          description: A successful response
          schema:
            type: string

OpenAPI 3.x

# openapi-functions.yaml
openapi: 3.0.4
info:
  title: API_ID optional-string
  description: Sample API on API Gateway with a Google Cloud Functions backend
  version: 1.0.0
# Define reusable components in x-google-api-management
x-google-api-management:
  backends:
    functions_backend:
      address: SERVICE_URL/helloGET
      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: functions_backend
paths:
  /hello:
    get:
      summary: Greet a user
      operationId: hello
      responses:
        '200':
          description: A successful response
          content:
            application/json:
              schema:
                type: string

Para fazer upload dessa descrição da OpenAPI e criar uma configuração de API usando a CLI gcloud:

  1. Na linha de comando, crie um novo arquivo chamado openapi-functions.yaml.

  2. Copie e cole o conteúdo da descrição da OpenAPI no arquivo recém-criado.