Especifica una red y una subred

En este documento, se explica cómo especificar una red o subred y ambas opciones cuando ejecutas trabajos de Dataflow.

En este documento, se requiere que sepas cómo crear redes y subredes de Google Cloud. En este documento, también se requiere estar familiarizado con los términos de red que se analizan en la siguiente sección.

Terminología de red de Google Cloud

Red y subred para un trabajo de Dataflow

Cuando creas un trabajo de Dataflow, puedes especificar una red, una subred o ambas opciones.

Ten en cuenta los siguientes lineamientos:

  • Si no estás seguro sobre qué parámetro usar, especifica solo el parámetro de subred. El parámetro de red se especifica de forma implícita para ti.

  • 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 llamada 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.

Lineamientos para especificar un parámetro de red

  • Puedes seleccionar una red de modo automático en tu proyecto con el parámetro de red.

  • Puedes especificar una red solo con su nombre y no con la URL completa.

  • También puedes usar 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 de usuario de red de Compute 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.

Lineamientos para especificar un parámetro de subred

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

  • Para seleccionar una subred específica en una red, usa el parámetro de subred.

  • Especifica una subred con una URL completa o una ruta abreviada.

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

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

Lineamientos a fin de especificar un parámetro de subred para una VPC compartida

  • Cuando especifiques la URL de la subred para la VPC compartida, asegúrate de que HOST_PROJECT_ID sea el proyecto en el que se aloja la VPC.

  • Si la subred está ubicada en una red de VPC compartida, debes usar la URL completa.

  • Asegúrate de que la Cuenta de servicio de Dataflow y la Cuenta de servicio de trabajador tengan la Función de usuario de la red de Compute asignada en la subred especificada. Si no habilitas la función, se mostrará el siguiente mensaje de error: Error: Message: Required 'compute.subnetworks.get' permission.

Ejemplo de especificaciones de red y subred

Ejemplo de una URL completa que especifica una subred:

https://www.googleapis.com/compute/v1/projects/`HOST_PROJECT_ID`/regions/`REGION_NAME`/subnetworks/`SUBNETWORK_NAME`

Reemplaza lo siguiente:

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

La siguiente es una URL de ejemplo, en la que el ID del proyecto host es my-cloud-project, la región es us-central1 y el nombre de la subred es mysubnetwork:

 https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork"

A continuación, se muestra un ejemplo de un formulario corto que especifica una subred:

regions/`REGION_NAME`/subnetworks/`SUBNETWORK_NAME`

Reemplaza lo siguiente:

  • REGION_NAME: el extremo regional de tu trabajo de Dataflow
  • SUBNETWORK_NAME: el nombre de tu subred de Compute Engine.

Ejecuta tu canalización con la network y la subnetwork especificadas

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.

En el siguiente ejemplo, se muestra cómo ejecutar la canalización desde la línea de comandos o mediante la API de REST. En el ejemplo, se especifica una subred. También puedes especificar 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

API

Si ejecutas una plantilla de Dataflow mediante la API de REST, agrega network o subnetwork, o ambos, a la environment.

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"
    }
}

Desactiva una dirección IP externa

Para desactivar una dirección IP externa, consulta Configura el acceso a Internet y las reglas de firewall.