Ce document explique comment spécifier un réseau, un sous-réseau ou les deux options lorsque vous exécutez des tâches Dataflow.
Pour suivre ces étapes, vous devez savoir comment créer des réseaux et des sous-réseaux Google Cloud. Vous devez également connaître les termes liés au réseau décrits dans la section suivante.
Le réseau default
possède des configurations permettant l'exécution de jobs Dataflow. Cependant, d'autres services peuvent également utiliser ce réseau. Assurez-vous que les modifications que vous apportez au réseau default
sont compatibles avec tous vos services. Vous pouvez également créer un réseau distinct pour Dataflow.
Pour en savoir plus sur la résolution des problèmes de mise en réseau, consultez Résoudre les problèmes de mise en réseau Dataflow.
Terminologie associée au réseau Google Cloud
Réseau VPC. Un réseau VPC est une version virtuelle d'un réseau physique, mise en œuvre au sein du réseau de production de Google. Un VPC, parfois appelé réseau, assure la connectivité des ressources d'un projet.
Pour en savoir plus sur le VPC, consultez la section Réseaux VPC.
Réseau VPC partagé. Lorsque vous utilisez un VPC partagé, vous désignez un projet en tant que projet hôte, et vous lui associez un ou plusieurs projets de service. Les réseaux VPC du projet hôte sont appelés réseaux VPC partagés. Si un administrateur de VPC partagé vous a accordé le rôle d'administrateur de projet de service, vous êtes autorisé à utiliser au moins certains des sous-réseaux situés dans les réseaux du projet hôte.
Pour en savoir plus sur le VPC partagé, consultez la section VPC partagé.
VPC Service Controls VPC Service Controls de Dataflow vous aide à vous protéger contre les actions accidentelles ou ciblées par des entités externes ou des entités internes, ce qui permet de minimiser les risques d'exfiltration de données non justifiée. VPC Service Controls vous permet de créer des périmètres qui protègent les ressources et les données des services que vous spécifiez explicitement.
Pour en savoir plus sur VPC Service Controls, consultez la page Présentation de VPC Service Controls. Pour en savoir plus sur les limites liées à l'utilisation de Dataflow avec VPC Service Controls, consultez la page Produits compatibles et limites.
Règles de pare-feu. Utilisez des règles de pare-feu pour autoriser ou refuser le trafic vers et depuis vos VM. Pour en savoir plus, consultez Configurer l'accès à Internet et les règles de pare-feu.
Réseau et sous-réseau pour une tâche Dataflow
Lorsque vous créez un job Dataflow, vous pouvez spécifier un réseau, un sous-réseau ou les deux.
Tenez compte des consignes suivantes :
Si vous ne savez pas quel paramètre utiliser, spécifiez uniquement le paramètre de sous-réseau. Le paramètre réseau est alors spécifié implicitement pour vous.
Si vous omettez les paramètres de sous-réseau et de réseau, Google Cloud part du principe que vous avez l'intention d'utiliser un réseau VPC en mode automatique nommé
default
. Si votre projet ne possède pas de réseau nommédefault
, vous devez spécifier un autre réseau ou sous-réseau.
Consignes pour la spécification d'un paramètre de réseau
Pour sélectionner un réseau VPC en mode automatique dans votre projet, utilisez le paramètre network. Pour en savoir plus, consultez la section Créer un réseau VPC en mode automatique.
Vous pouvez spécifier un réseau en n'utilisant que son nom, et non l'URL complète.
Vous pouvez également utiliser le paramètre réseau pour sélectionner un réseau VPC partagé si les deux conditions suivantes sont remplies :
Le réseau VPC partagé que vous sélectionnez est un réseau VPC en mode automatique.
Vous êtes administrateur du projet de service disposant d'autorisations au niveau du projet pour l'ensemble du projet hôte de VPC partagé. Un administrateur VPC partagé vous a attribué le rôle Utilisateur de réseau Compute pour l'ensemble du projet hôte, vous permettant ainsi d'utiliser tous ses réseaux et sous-réseaux.
Dans tous les autres cas, vous devez spécifier un sous-réseau.
Consignes de spécification d'un paramètre de sous-réseau
Si vous spécifiez un sous-réseau, Cloud Dataflow choisit le réseau pour vous. Par conséquent, lorsque vous spécifiez un sous-réseau vous pouvez omettre le paramètre de réseau.
Pour sélectionner un sous-réseau spécifique dans un réseau, utilisez le paramètre de sous-réseau.
Spécifiez un sous-réseau à l'aide d'une URL complète ou d'un chemin d'accès abrégé. Si le sous-réseau est situé sur un Réseau VPC partagé, vous devez utiliser l'URL complète.
Vous devez sélectionner un sous-réseau situé dans la même région que la zone dans laquelle vous exécutez vos nœuds de calcul Dataflow.
Vous devez spécifier le paramètre de sous-réseau dans les situations suivantes:
Le sous-réseau que vous spécifiez se trouve dans un réseau VPC en mode personnalisé.
Vous êtes un administrateur de projet de service doté d'autorisations au niveau du sous-réseau pour un sous-réseau spécifique dans un projet hôte de VPC partagé.
La taille du sous-réseau limite le nombre d'instances en fonction du nombre d'adresses IP disponibles. Cette taille n'a pas d'incidence sur les performances de Dataflow VPC Service Controls.
Consignes de spécification d'un paramètre de sous-réseau pour le VPC partagé
Lorsque vous spécifiez l'URL du sous-réseau pour le VPC partagé, assurez-vous que HOST_PROJECT_ID est bien le projet dans lequel le VPC est hébergé.
Si le sous-réseau est situé sur un réseau VPC partagé, vous devez utiliser l'URL complète. Consultez un exemple d'URL complète qui spécifie un sous-réseau.
Assurez-vous que le sous-réseau VPC partagé est partagé avec le compte de service Dataflow et que le rôle d'utilisateur de réseau Compute est attribué sur le sous-réseau spécifié. Le rôle utilisateur de réseau Compute doit être attribué au compte de service Dataflow dans le projet hôte.
Dans Google Cloud Console, accédez à la page VPC partagé.
Sélectionnez un projet hôte.
Dans la section Accès aux sous-réseaux individuels, sélectionnez votre sous-réseau. Le volet Autorisations au niveau du sous-réseau affiche les autorisations pour ce sous-réseau. Vous pouvez voir si le sous-réseau VPC est associé au rôle d'utilisateur de réseau Compute.
Pour accorder des autorisations, dans le volet Autorisations au niveau du sous-réseau, cliquez sur Ajouter un compte principal.
Si le réseau n'est pas partagé, lorsque vous essayez d'exécuter votre job, le message d'erreur suivant s'affiche :
Error: Message: Required 'compute.subnetworks.get' permission
. Pour en savoir plus, consultez Autorisation "compute.subnetworks.get" requise dans la section "Résoudre les problèmes liés aux autorisations Dataflow".
Exemples de spécifications de réseau et de sous-réseau
L'exemple suivant présente une URL complète qui spécifie un sous-réseau:
https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION_NAME/subnetworks/SUBNETWORK_NAME
Remplacez les éléments suivants :
HOST_PROJECT_ID
: ID du projet hôteREGION_NAME
: région de votre job DataflowSUBNETWORK_NAME
: nom de votre sous-réseau Compute Engine
Voici un exemple d'URL, où l'ID du projet hôte est my-cloud-project
, la région est us-central1
et le nom du sous-réseau est mysubnetwork
:
https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork
Voici un exemple de version abrégée qui spécifie un sous-réseau :
regions/REGION_NAME/subnetworks/SUBNETWORK_NAME
Remplacez les éléments suivants :
REGION_NAME
: région de votre job DataflowSUBNETWORK_NAME
: nom de votre sous-réseau Compute Engine
Exécutez votre pipeline avec le réseau spécifié
Si vous souhaitez utiliser un réseau autre que le réseau par défaut créé par Google Cloud, vous devez dans la plupart des cas spécifier le sous-réseau. Le réseau est automatiquement déduit du sous-réseau que vous spécifiez. Pour plus d'informations, consultez la section Consignes de spécification d'un paramètre de réseau dans ce document.
L'exemple suivant vous montre comment exécuter votre pipeline dans la ligne de commande ou à l'aide de l'API REST. Cet exemple spécifie un réseau.
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 vous exécutez un modèle Dataflow à l'aide de l'API REST, ajoutez un attribut network
ou subnetwork
, ou les deux, à l'objet 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"
}
}
Remplacez les éléments suivants :
JOB_NAME
: nom de votre tâche Dataflow (API uniquement)INPUT_PATH
: chemin d'accès à votre sourceHOST_PROJECT_ID
: ID du projet hôteREGION
: région Dataflow (par exemple,us-central1
)STORAGE_BUCKET
: bucket de stockage.NETWORK_NAME
: nom de votre réseau Compute Engine
Exécutez votre pipeline avec le réseau spécifié
Si vous êtes un administrateur de projet de service autorisé à n'utiliser que des sous-réseaux spécifiques dans un réseau VPC partagé, vous devez renseigner le paramètre subnetwork
avec le nom d'un sous-réseau que vous êtes autorisé à utiliser.
L'exemple suivant vous montre comment exécuter votre pipeline dans la ligne de commande ou à l'aide de l'API REST. L'exemple indique un sous-réseau. Vous pouvez également spécifier le réseau.
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 vous exécutez un modèle Dataflow à l'aide de l'API REST, ajoutez un attribut network
ou subnetwork
, ou les deux, à 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"
}
}
Remplacez les éléments suivants :
JOB_NAME
: nom de votre tâche Dataflow (API uniquement)INPUT_PATH
: chemin d'accès à votre sourceHOST_PROJECT_ID
: ID du projet hôteREGION
: région Dataflow (par exemple,us-central1
)STORAGE_BUCKET
: bucket de stockage.SUBNETWORK_NAME
: nom de votre sous-réseau Compute Engine
Désactiver une adresse IP externe
Pour désactiver une adresse IP externe, consultez la section Configurer les règles d'accès à Internet et de pare-feu.