Como se conectar a recursos internos em uma rede VPC

Com o uso de um acesso VPC sem servidor, é possível se conectar diretamente do Cloud Functions às instâncias de VM do Compute Engine, do Cloud Memorystore e do Cloud SQL e a qualquer outro recurso com um endereço IP interno. Isso é útil nos casos em que:

  • um serviço de back-end é executado em um grupo de instâncias gerenciadas no Compute Engine e a função precisa se comunicar com esse serviço sem exposição à Internet pública;
  • a função usa software de terceiros que são executados em uma VM do Compute Engine;
  • o Cloud Memorystore é usado para armazenar dados para o Cloud Functions;
  • a função precisa acessar dados do banco de dados no local por meio do Cloud VPN.

O acesso VPC sem servidor permite enviar solicitações da função para recursos na rede VPC usando endereços IP internos, que só são acessíveis a partir dos serviços do Google Cloud Platform. Portanto, ao usá-los, você evita expor os recursos internos à Internet pública e melhora a latência da comunicação entre os serviços.

O acesso VPC sem servidor não é compatível com redes legadas ou redes VPC compartilhadas. Os conectores de acesso VPC sem servidor cobram uma taxa mensal. Consulte o artigo Preços do acesso VPC sem servidor para mais informações.

Como se conectar à rede VPC

Veja a seguir as três etapas necessárias para conectar o Cloud Functions à rede VPC:

  1. Criar um conector de acesso VPC sem servidor
  2. Conceder as permissões apropriadas à conta de serviço do Cloud Functions
  3. Configurar as funções para usar o conector

Um conector de acesso VPC sem servidor precisa estar no mesmo projeto e região que as funções que o utilizam. No entanto, ele pode enviar tráfego para recursos em regiões diferentes. O mesmo conector pode ser usado por várias funções. Para mais informações sobre conectores, consulte Como configurar o acesso VPC sem servidor na documentação correspondente.

Como criar um conector

É possível criar um conector usando o Console do GCP ou a ferramenta de linha de comando gcloud.

Console

  1. Vá para a página de visão geral do acesso VPC sem servidor:

    Acessar o acesso VPC sem servidor

  2. Clique em Criar conector.

  3. No campo Nome, insira um nome para seu conector.

  4. No campo Região, selecione a região onde a função está localizada.

  5. No campo Rede, selecione a rede VPC à qual você quer se conectar.

  6. No campo Intervalo de IP, insira um intervalo de IP CIDR /28 não utilizado. Os endereços neste intervalo são usados como endereços de origem para o tráfego enviado pelo conector. Esse intervalo de IP não pode se sobrepor a nenhuma reserva de endereço IP atual na rede VPC.

  7. (Opcional) É possível controlar a capacidade do conector definindo os valores nos campos Capacidade mínima e Capacidade máxima.

  8. Clique em Criar.

Uma marca de seleção verde aparecerá ao lado do nome do conector quando ele estiver pronto para uso.

gcloud

  1. Ative a API Serverless VPC Access para o projeto com o comando:

    gcloud services enable vpcaccess.googleapis.com
    
  2. Crie um conector:

    gcloud beta compute networks vpc-access connectors create CONNECTOR_NAME \
    --network VPC_NETWORK \
    --region REGION \
    --range IP_RANGE
    

    Em que:

    • CONNECTOR_NAME é um nome para o conector;
    • VPC_NETWORK é a rede VPC à qual você se conectará.
    • REGION é a região onde a função está localizada.
    • IP_RANGE é um intervalo de IP CIDR /28 não utilizado. Os endereços neste intervalo são usados como endereços de origem para o tráfego enviado pelo conector. Esse intervalo de IP não pode se sobrepor a nenhuma reserva de endereço IP atual na rede VPC.
  3. Verifique se o conector está no estado READY antes de usá-lo:

    gcloud beta compute networks vpc-access connectors describe CONNECTOR_NAME --region REGION
    

    A saída precisa conter a linha state: READY.

Como configurar permissões

A conta de serviço do Cloud Functions do projeto precisa de permissões apropriadas para que sua função use um conector de acesso VPC sem servidor. Só é necessário conceder essas permissões uma vez por projeto. Para configurar as permissões, faça o seguinte:

Console

  1. Acesse a página "IAM" no Console do Google Cloud Platform:

    Acessar IAM

  2. Encontre a entrada para o Agente de serviço do Cloud Functions.

  3. Clique no ícone de lápis para editar as permissões.

  4. Clique em Adicionar outro papel.

  5. Selecione Projeto > Visualizador.

  6. Clique em Adicionar outro papel.

  7. Selecione Compute Engine > Usuário da rede do Compute

  8. Clique em Salvar.

gcloud

  1. Encontre o número do projeto executando o comando a seguir, substituindo PROJECT_ID pelo código do projeto no GCP:

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    
  2. Conceda ao Agente de serviço do Cloud Functions (service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com) o papel de viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com \
    --role=roles/viewer
    

    em que PROJECT_NUM é o número de projeto definido na etapa 1.

  3. Conceda ao Agente de serviço do Cloud Functions o papel de compute.networkUser:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com \
    --role=roles/compute.networkUser
    

Como configurar uma função para usar um conector

Depois de criar um conector de acesso VPC sem servidor e configurar as permissões adequadas, será possível configurar as funções para usar o conector. Várias funções podem usar o mesmo conector para acessar a mesma rede VPC, desde que elas estejam localizadas na mesma região.

Para vincular a função a um conector, especifique o nome do conector ao implantar a função:

Console

  1. Acesse a página "Visão geral do Cloud Functions" no Console do GCP:

    Acessar o Cloud Functions

  2. Clique em Criar função.

  3. Preencha os campos obrigatórios da função.

  4. Expanda as configurações avançadas clicando em Mais.

  5. No campo Conector VPC, digite o nome totalmente qualificado do conector no formato abaixo:

    projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    em que:

    • PROJECT_ID é o ID do projeto do GCP.
    • REGION é a região escolhida para o conector. O conector e a função precisam estar na mesma região.
    • CONNECTOR_NAME é o nome do conector.
  6. Clique em Criar.

gcloud

Ue o comando gcloud beta functions deploy para implantar a função e especifique a sinalização --vpc-connector:

gcloud beta functions deploy FUNCTION_NAME \
--vpc-connector projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME \
FLAGS...

em que:

  • FUNCTION_NAME é o nome da função.
  • PROJECT_ID é o ID do projeto do GCP.
  • REGION é a região escolhida para o conector. Observe que o conector e a função precisam estar na mesma região.
  • CONNECTOR_NAME é o nome do conector.
  • FLAGS... refere-se a outras sinalizações que são transferidas durante a implantação da função.

Depois de implantada, a função pode enviar solicitações a endereços IP internos para acessar os recursos na rede VPC.

Como desconectar uma função de um conector

Se não for mais necessário que a função se conecte à rede VPC, você poderá desconectar o conector de acesso VPC sem servidor.

Para desvincular a função de um conector, remova-o da configuração da função:

Console

  1. Acesse a página "Visão geral do Cloud Functions" no Console do GCP:

    Acessar o Cloud Functions

  2. Clique no nome de uma função existente para acessar a página de detalhes dela.

  3. Clique em Editar.

  4. Expanda as configurações avançadas clicando em Mais.

  5. Apague o conteúdo do campo Conector VPC.

  6. Clique em Implantar.

gcloud

Use o comando gcloud beta functions deploy para atualizar a função e apague a sinalização --vpc-connector:

gcloud beta functions deploy FUNCTION_NAME --vpc-connector ""

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Cloud Functions Documentation