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.

La red default tiene parámetros de configuración que permiten que se ejecuten trabajos de Dataflow. Sin embargo, otros servicios también pueden usar esta red. Asegúrate de que tus cambios a la red default sean compatibles con todos los servicios. De forma alternativa, crea una red independiente para Dataflow.

Para obtener más información sobre cómo solucionar problemas de herramientas de redes, consulta Soluciona problemas de herramientas de redes de Dataflow.

Terminología de red de Google Cloud

  • Red de VPC. Una red de VPC es una versión virtual de una red física, implementada en la red de producción de Google. A veces llamada red, una VPC brinda conectividad para los recursos de un proyecto.

    Para obtener más información sobre la VPC, consulta la descripción general de la red de VPC.

  • Red de VPC compartida Cuando usas una VPC compartida, debes designar un proyecto como proyecto host y conectarle uno o más proyectos de servicios. Las redes de VPC del proyecto host se conocen como redes de VPC compartida. 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 en las redes del proyecto host.

    Consulta Descripción general de la VPC compartida para obtener más información.

  • Controles del servicio de VPC Dataflow Los Controles del servicio de VPC ayudan a proteger contra acciones accidentales o intencionales provenientes de entidades externas o internas, lo que ayuda a minimizar los riesgos de robo de datos no garantizados. Puedes usar Controles del servicio de VPC para crear perímetros que protejan los recursos y datos de los servicios que especifiques de forma explícita.

    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.

  • Reglas de firewall. Usa reglas de firewall para permitir o denegar el tráfico desde y hacia tus VM. Para obtener más información, consulta Configura el acceso a Internet y las reglas de firewall.

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 no tienes una red llamada default en tu proyecto, debes especificar una red o subred alternativa.

Lineamientos para especificar un parámetro de red

  • Puedes seleccionar una red de VPC 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. 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. Si la subred está ubicada en una red de VPC compartida, debes usar la URL completa.

  • 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 VPC 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. Consulta un ejemplo de una URL completa que especifica una subred.

  • Asegúrate de que la subred de la VPC compartida esté compartida con la cuenta de servicio de Dataflow y que tenga el rol de usuario de la red de Compute asignada en la subred especificada. El rol del usuario de la red de Compute se debe asignar a la cuenta de servicio de Dataflow en el proyecto host.

    1. En la consola de Google Cloud, ve a la página VPC compartida.

      Ir a la página VPC compartida

    2. Selecciona un Proyecto host.

    3. En la sección Acceso a una subred individual, selecciona tu subred. En el panel Permisos de nivel de subred, se muestran los permisos para esta subred. Puedes ver si a la subred de VPC se le asigna el rol de usuario de la red de Compute.

    4. Para otorgar permisos, en el panel Permisos de nivel de subred, haz clic en Agregar principal.

    Si la red no está compartida, cuando intentes ejecutar tu trabajo, aparecerá el siguiente mensaje de error: Error: Message: Required 'compute.subnetworks.get' permission. Para obtener más información, consulta Permiso “compute.subnetworks.get” obligatorio en “Soluciona problemas de permisos de Dataflow”.

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: la región 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: la región de tu trabajo de Dataflow
  • SUBNETWORK_NAME: el nombre de tu subred de Compute Engine.

Ejecuta tu canalización con la red especificada

En la mayoría de los casos, si quieres usar una red distinta de la predeterminada que creó Google Cloud, debes especificar la subred. La red se infiere de manera automática desde la subred que especifiques. Si deseas obtener más información, consulta los Lineamientos para especificar un parámetro de red en este documento.

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

Java

mvn compile exec:java \
    -Dexec.mainClass=INPUT_PATH \
    -Dexec.args="--project=HOST_PROJECT_ID \
        --stagingLocation=gs://STORAGE_BUCKET/staging/ \
        --output=gs://STORAGE_BUCKET/output \
        --region=REGION \
        --runner=DataflowRunner \
        --network=NETWORK_NAME"

Python

python -m INPUT_PATH \
    --project HOST_PROJECT_ID \
    --region=REGION \
    --runner DataflowRunner \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --output gs://STORAGE_BUCKET/output \
    --network NETWORK_NAME

Go

wordcount
    --project HOST_PROJECT_ID \
    --region HOST_GCP_REGION \
    --runner dataflow \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --input INPUT_PATH \
    --output gs://STORAGE_BUCKET/output \
    --network NETWORK_NAME

API

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

POST https://dataflow.googleapis.com/v1b3/projects/[YOUR_PROJECT_ID]/templates:launch?gcsPath=gs://dataflow-templates/wordcount/template_file
{
    "jobName": "JOB_NAME",
    "parameters": {
       "inputFile" : "INPUT_PATH",
       "output": "gs://STORAGE_BUCKET/output"
    },
    "environment": {
       "tempLocation": "gs://STORAGE_BUCKET/temp",
       "network": "NETWORK_NAME",
       "zone": "us-central1-f"
    }
}

Reemplaza lo siguiente:

  • JOB_NAME: el nombre de tu trabajo de Dataflow (solo la API)
  • INPUT_PATH: la ruta de acceso a tu origen
  • HOST_PROJECT_ID: el ID del proyecto host
  • REGION: Es una región de Dataflow, como us-central1
  • STORAGE_BUCKET: el bucket de almacenamiento
  • NETWORK_NAME: el nombre de tu red de Compute Engine.

Ejecuta tu canalización con la subred especificada

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=INPUT_PATH \
    -Dexec.args="--project=HOST_PROJECT_ID \
        --stagingLocation=gs://STORAGE_BUCKET/staging/ \
        --output=gs://STORAGE_BUCKET/output \
        --region=REGION \
        --runner=DataflowRunner \
        --subnetwork=https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME"

Python

python -m INPUT_PATH \
    --project HOST_PROJECT_ID \
    --region=REGION \
    --runner DataflowRunner \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --output gs://STORAGE_BUCKET/output \
    --subnetwork https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME

Go

wordcount
    --project HOST_PROJECT_ID \
    --region HOST_GCP_REGION \
    --runner dataflow \
    --staging_location gs://STORAGE_BUCKET/staging \
    --temp_location gs://STORAGE_BUCKET/temp \
    --input INPUT_PATH \
    --output gs://STORAGE_BUCKET/output \
    --subnetwork https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME

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": "JOB_NAME",
    "parameters": {
       "inputFile" : "INPUT_PATH",
       "output": "gs://STORAGE_BUCKET/output"
    },
    "environment": {
       "tempLocation": "gs://STORAGE_BUCKET/temp",
       "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME",
       "zone": "us-central1-f"
    }
}

Reemplaza lo siguiente:

  • JOB_NAME: el nombre de tu trabajo de Dataflow (solo la API)
  • INPUT_PATH: la ruta de acceso a tu origen
  • HOST_PROJECT_ID: el ID del proyecto host
  • REGION: Es una región de Dataflow, como us-central1
  • STORAGE_BUCKET: el bucket de almacenamiento
  • SUBNETWORK_NAME: el nombre de tu subred de Compute Engine.

Desactiva una dirección IP externa

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