Especifica la red y la subred

En esta página, se explica cómo especificar una red y una subred cuando ejecutas trabajos de Dataflow.

VPC y VPC compartida

Una red de VPC, a veces llamada simplemente red, brinda conectividad para los recursos de un proyecto. Si necesitas más información sobre las redes de VPC, consulta el artículo Descripción general de la red de VPC.

Una red de VPC compartida es la que existe en un proyecto independiente, denominado proyecto host, dentro de tu organización. Si un administrador de la VPC compartida te asignó la función de administrador de proyecto de servicio, tienes permiso para usar, al menos, algunas de las subredes alojadas en las redes del proyecto host. Para obtener información general sobre la VPC compartida, consulta el artículo Descripción general de la VPC compartida.

Controles del servicio de VPC

Los Controles del servicio de VPC de Dataflow proporcionan seguridad adicional para los recursos y servicios de tu canalización. Para obtener más información sobre los Controles del servicio de VPC, consulta la Descripción general de los Controles del servicio de VPC.

Para obtener información sobre las limitaciones cuando usas Dataflow con los Controles del servicio de VPC, consulta las limitaciones y productos compatibles.

Especifica una red y una subred

Cuando creas un trabajo de Dataflow, puedes especificar una red o una subred. En las siguientes secciones, se describe cuándo debes usar cada parámetro.

Si omites los parámetros de la subred y la red, Google Cloud supone que deseas usar una red de VPC en modo automático con el nombre default. Si omites la subred y los parámetros de red y no tienes una red llamada default en tu proyecto, recibirás un error.

Parámetro de red

Puedes usar el parámetro de red para especificar una red de modo automático en tu proyecto.

También puedes utilizar el parámetro de red para seleccionar una red de VPC compartida solo si se cumplen las dos condiciones siguientes:

  • La red de VPC compartida que seleccionas es una red de modo automático.
  • Eres un administrador de proyectos de servicio con permisos a nivel del proyecto para todo el proyecto host de VPC compartida. Esto significa que un administrador de VPC compartida te otorgó la función del usuario de red para todo el proyecto host, por lo que puedes usar todas sus redes y subredes.

Para todos los demás casos, debes especificar una subred.

Parámetro de subred

Si necesitas seleccionar una subred específica en una red, especifica el parámetro subnetwork. Debes seleccionar una subred que se encuentre en la misma región que la zona donde ejecutas tus trabajadores de Dataflow. Por ejemplo, debes especificar el parámetro de subred en las siguientes situaciones:

  • La subred que necesitas está en una red de modo personalizado.
  • Eres un administrador de proyectos de servicio con permisos de nivel de subred para una subred específica en un proyecto host de VPC compartida.

Puedes especificar una subred con una URL completa o una ruta abreviada. Si la subred está ubicada en una red de VPC compartida, debes usar la URL completa.

  • URL completa:
    https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK
  • Forma abreviada:
    regions/REGION/subnetworks/SUBNETWORK

Reemplaza lo siguiente:

  • HOST_PROJECT_ID: el ID del proyecto host
  • REGION: el extremo regional de tu trabajo de Dataflow
  • SUBNETWORK: el nombre de tu subred de Compute Engine.

Si especificas una subnetwork, Dataflow elige la network por ti. Por lo tanto, cuando especificas una subnetwork, puedes omitir el parámetro network.

El tamaño de la subred solo limita la cantidad de instancias según el número de direcciones IP disponibles. Este tamaño no afecta el rendimiento de los Controles del servicio de VPC de Dataflow.

Parámetro de IP pública

El parámetro de IP pública le indica al servicio de Dataflow si debe asignar direcciones IP públicas a los trabajadores de Dataflow. De forma predeterminada, el servicio de Dataflow asigna direcciones IP públicas y privadas. Cuando desactivas direcciones IP públicas, la canalización de Dataflow solo puede acceder a los recursos en los siguientes lugares:

Con las IP públicas desactivadas, aún puedes realizar tareas administrativas y de supervisión. Puedes acceder a los trabajadores mediante SSH a través de las opciones enumeradas en la lista anterior. Sin embargo, la canalización no puede acceder a Internet ni a otras redes de Google Cloud y los hosts de Internet no pueden acceder a tus trabajadores de Dataflow.

Desactivar las IP públicas te permite proteger mejor tu infraestructura de procesamiento de datos. Si no usas direcciones IP públicas para los trabajadores de Dataflow, también puedes reducir la cantidad de direcciones IP públicas que consumes de la cuota del proyecto de Google Cloud.

Si desactivas las IP públicas, tus trabajos de Dataflow no podrán acceder a las API ni a los servicios fuera de Google Cloud que requieren acceso a Internet. Si deseas obtener información sobre cómo configurar el acceso a Internet para trabajos con IP privadas, consulta Acceso a Internet para Dataflow.

JAVA

Para desactivar las IP públicas, sigue estos pasos:

  1. Habilita el Acceso privado a Google para la red o subred.
  2. En los parámetros de tu trabajo de Dataflow, especifica --usePublicIps=false y --network=NETWORK o --subnetwork=SUBNETWORK.

PYTHON

Para desactivar las IP públicas, sigue estos pasos:

  1. Sigue las instrucciones de las dependencias de canalizaciones de Apache Beam para habilitar a etapas todas las dependencias de paquetes de Python.
  2. Habilita el Acceso privado a Google para la red o subred.
  3. En los parámetros de tu trabajo de Dataflow, especifica --no_use_public_ips y --network=NETWORK o --subnetwork=SUBNETWORK.

VPC de otro proyecto

Para permitir que los trabajadores de Dataflow de diferentes proyectos se comuniquen entre sí, debes otorgarle a la cuenta de servicio de Dataflow las funciones Usuario de red de Compute y Agente de servicios de Compute Engine.

Cuando especifiques la URL de la subred, verifica que HOST_PROJECT_ID sea el proyecto en el que se aloja la VPC.

Ejecuta la canalización con la red y la subred especificadas

En los siguientes ejemplos, se muestra cómo ejecutar la canalización en el servicio de Dataflow con los parámetros network y subnetwork especificados.

Si eres un administrador de proyectos de servicio que solo tiene permiso para usar subredes específicas en una red de VPC compartida, debes especificar el parámetro de subnetwork con una subred que tengas permiso para usar.

Usa la línea de comandos

En el siguiente ejemplo, se muestra cómo ejecutar la canalización desde la línea de comandos, si especificas la subred. Con esto, se especifica de forma implícita la red.

JAVA

mvn compile exec:java \
  -Dexec.mainClass=com.example.WordCount \
  -Dexec.args="--project=my-cloud-project \
    --stagingLocation=gs://my-wordcount-storage-bucket/staging/ \
    --output=gs://my-wordcount-storage-bucket/output \
    --runner=DataflowRunner \
    --subnetwork=https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork"

PYTHON

python -m apache_beam.examples.wordcount \
  --project my-cloud-project \
  --runner DataflowRunner \
  --staging_location gs://my-wordcount-storage-bucket/staging \
  --temp_location gs://my-wordcount-storage-bucket/temp \
  --output gs://my-wordcount-storage-bucket/output \
  --subnetwork https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork"

Uso de la API de REST

En el siguiente ejemplo, se muestra cómo ejecutar una plantilla y especificar una subred. Con esto, se especifica implícitamente la red.

Si ejecutas una plantilla de Dataflow mediante la API de REST, agrega network o subnetwork al objeto environment. Por ejemplo:

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "my_job",
    "parameters": {
       "inputFile" : "gs://dataflow-samples/shakespeare/kinglear.txt",
       "output": "gs://my-wordcount-storage-bucket/output"
    },
    "environment": {
       "tempLocation": "gs://my-wordcount-storage-bucket/temp",
       "subnetwork": "https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork",
       "zone": "us-central1-f"
    }
}