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.

    Vá para 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 sua 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:

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

  6. Clique em Salvar.

Se você não quiser conceder privilégios completos de editor à conta de serviço, em vez disso é possível conceder a seguinte combinação de papéis:

  • Papel de leitor
  • Papel de usuário da rede de Compute
  • Papel personalizado, criado por você, contendo a permissão compute.globalOperations.get

Também é possível usar identidades por função para aplicar essas permissões somente a funções específicas que precisam acessar a rede VPC.

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 o conector a uma função, use o comando gcloud beta functions deploy para implantá-la 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 código 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 desconectar a função de um conector, exclua a função e reimplante-a sem a sinalização --vpc-connector:

gcloud functions delete FUNCTION_NAME
gcloud functions deploy FUNCTION_NAME [FLAGS...]

A seguir

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

Enviar comentários sobre…

Cloud Functions Documentation