Conéctate a recursos internos en una red de VPC

El acceso a VPC sin servidores te permite conectarte desde Cloud Functions directamente a instancias de VM de Compute Engine, de Cloud Memorystore, de Cloud SQL y cualquier otro recurso con una dirección IP interna. Esto es útil en los casos en que sucede lo siguiente:

  • Ejecutas un servicio de backend en un grupo de instancias administrado en Compute Engine y necesitas que la función se comunique con este servicio sin exponerse a la Internet pública.
  • La función utiliza software de terceros que ejecutas en una VM de Compute Engine.
  • Usas Cloud Memorystore con el fin de almacenar datos para la función de Cloud Functions.
  • La función necesita acceder a los datos de tu base de datos local a través de Cloud VPN.

Con el acceso a VPC sin servidores, las solicitudes enviadas desde la función a direcciones IP internas (según se define en RFC 1918) se enrutan a través de un conector de acceso a VPC sin servidores a la red de VPC. Las solicitudes enviadas a direcciones IP públicas se enrutan a través de Internet. Solo se puede acceder a las direcciones IP internas desde los servicios de Google Cloud Platform, por lo que usarlos evita exponer los recursos internos a la Internet pública y también mejora la latencia de la comunicación entre los servicios.

El acceso a VPC sin servidores admite la comunicación con las redes de VPC conectadas a través de Cloud VPN y del intercambio de tráfico entre redes de VPC. El acceso a VPC sin servidores no es compatible con redes heredadas o redes de VPC compartidas. Los conectores de acceso a VPC sin servidores tienen un costo mensual. Consulta los precios del acceso a VPC sin servidores para obtener más información.

Conéctate a la red de VPC

Conectar Cloud Functions a la red de VPC implica tres pasos:

  1. Crear un conector de acceso a VPC sin servidores
  2. Otorgar los permisos apropiados a la cuenta de servicio de Cloud Functions
  3. Configurar las funciones para utilizar el conector

Un conector de acceso a VPC sin servidores debe estar en el mismo proyecto y región que las funciones que lo usan, pero el conector puede enviar tráfico a recursos en diferentes regiones. Varias funciones pueden usar el mismo conector. Para obtener más información sobre los conectores, consulta Configura el acceso a VPC sin servidores en la documentación de VPC.

Crea un conector

Puedes crear un conector con GCP Console o la herramienta de línea de comandos de gcloud.

Console

  1. Ve a la página de descripción general de acceso a VPC sin servidores:

    Ir a Acceso a VPC sin servidores

  2. Haz clic en Crear conector.

  3. En el campo Nombre, ingresa un nombre para el conector.

  4. En el campo Región, selecciona la región en la que se encuentra la función.

  5. En el campo Red, selecciona la red de VPC a la que te conectarás.

  6. En el campo Rango de IP, ingresa un rango de IP de CIDR /28 no utilizado. Las direcciones en este rango se utilizan como direcciones de origen para el tráfico enviado a través del conector. Este rango de IP no debe superponerse con ninguna reserva de dirección IP existente en la red de VPC.

  7. Puedes controlar la capacidad de procesamiento del conector mediante la configuración de los valores en los campos Capacidad de procesamiento mínima y Capacidad de procesamiento máxima. (Opcional)

  8. Haz clic en Crear.

Aparecerá una marca de verificación verde junto al nombre del conector cuando esté listo para usar.

gcloud

  1. Habilita la API de acceso a VPC sin servidores para el proyecto con el siguiente comando:

    gcloud services enable vpcaccess.googleapis.com
    
  2. Crea un conector:

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

    donde:

    • CONNECTOR_NAME es un nombre para el conector.
    • VPC_NETWORK es la red de VPC para conectarse.
    • REGION es la región en la que se encuentra la función.
    • IP_RANGE es un rango de IP de CIDR /28 no utilizado. Las direcciones en este rango se utilizan como direcciones de origen para el tráfico enviado a través del conector. Este rango de IP no debe superponerse con ninguna reserva de dirección IP existente en la red de VPC.
  3. Verifica que el conector esté en el estado READY antes de usarlo:

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

    El resultado debe contener la línea state: READY.

Si la creación de un conector produce un error, intenta lo siguiente y vuelve a crear el conector:

  • Especifica un rango de IP que no se superponga con ninguna reserva de dirección IP existente en la red de VPC.
  • Otorga al proyecto permiso para usar las imágenes de VM de Compute Engine del proyecto con el ID serverless-vpc-access-images. Consulta Configura restricciones de acceso a imágenes para obtener información sobre cómo actualizar las políticas de la organización según corresponda.

Configura los permisos

La cuenta de servicio de Cloud Functions del proyecto necesita los permisos adecuados para que la función utilice un conector de acceso a VPC sin servidores. Solo debes otorgar estos permisos una vez por proyecto. Para configurar los permisos, sigue estos pasos:

Console

  1. Ve a la página IAM en Google Cloud Platform Console:

    Ir a IAM

  2. Busca la entrada para el agente de servicio de Cloud Functions.

  3. Haz clic en el ícono de lápiz para editar los permisos.

  4. Haz clic en Agregar otra función.

  5. Selecciona Proyecto> Visualizador.

  6. Haz clic en Agregar otra función.

  7. Selecciona Compute Engine> Usuario de la red de Compute.

  8. Haz clic en Guardar.

gcloud

  1. Busca el número del proyecto mediante la ejecución del siguiente comando, reemplazando PROJECT_ID con tu ID del proyecto de GCP:

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    
  2. Otorga al agente de servicio de Cloud Functions (service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com) la función viewer:

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

    en el que PROJECT_NUM es el número de proyecto obtenido en el paso 1.

  3. Otorga el agente de servicio de Cloud Functions a la función 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
    

Configura función para usar un conector

Después de crear un conector de acceso a VPC sin servidores y configurar los permisos adecuados, puedes configurar las funciones para usar el conector. Varias funciones pueden usar el mismo conector para alcanzar la misma red de VPC, siempre que las funciones estén ubicadas en la misma región.

Para conectar la función a un conector, especifica el nombre del conector cuando implementes la función:

Console

  1. Ve a la página de descripción general de Cloud Functions en GCP Console:

    Ir a Cloud Functions

  2. Haz clic en Crear función.

  3. Completa los campos obligatorios para tu función.

  4. Haz clic en Más para expandir la configuración avanzada.

  5. En el campo Conector de VPC, ingresa el nombre completo del conector en el siguiente formato:

    projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    donde:

    • PROJECT_ID es el ID del proyecto de GCP.
    • REGION es la región que elegiste para el conector. Ten en cuenta que el conector y la función deben estar en la misma región.
    • CONNECTOR_NAME es el nombre del conector.
  6. Haz clic en Crear.

gcloud

Usa el comando gcloud beta functions deploy para implementar la función y especifica la marca --vpc-connector:

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

donde:

  • FUNCTION_NAME es el nombre de la función.
  • PROJECT_ID es el ID del proyecto de GCP.
  • REGION es la región que elegiste para el conector. Ten en cuenta que el conector y la función deben estar en la misma región.
  • CONNECTOR_NAME es el nombre del conector.
  • FLAGS... se refiere a otras marcas que pasas durante la implementación de la función.

Después de implementar la función, esta podrá enviar solicitudes a direcciones IP internas para acceder a los recursos en la red de VPC.

Desconecta una función de un conector

Si la función ya no necesita conectarse a la red de VPC, puedes desconectar el conector de acceso a VPC sin servidores.

Para desconectar la función de un conector, quita el conector de la configuración de la función:

Console

  1. Ve a la página de descripción general de Cloud Functions en GCP Console:

    Ir a Cloud Functions

  2. Haz clic en el nombre de una función existente para ir a la página de detalles.

  3. Haz clic en Editar.

  4. Haz clic en Más para expandir la configuración avanzada.

  5. Borra el campo Conector VPC.

  6. Haz clic en Implementar.

gcloud

Usa el comando gcloud beta functions deploy para actualizar la función y especifica la marca --clear-vpc-connector:

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

Próximos pasos

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Functions