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 llamadadefault
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.
En la consola de Google Cloud, ve a la página VPC compartida.
Selecciona un Proyecto host.
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.
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 hostREGION_NAME
: la región de tu trabajo de DataflowSUBNETWORK_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 DataflowSUBNETWORK_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 origenHOST_PROJECT_ID
: el ID del proyecto hostREGION
: Es una región de Dataflow, comous-central1
STORAGE_BUCKET
: el bucket de almacenamientoNETWORK_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 origenHOST_PROJECT_ID
: el ID del proyecto hostREGION
: Es una región de Dataflow, comous-central1
STORAGE_BUCKET
: el bucket de almacenamientoSUBNETWORK_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.