In diesem Dokument wird erläutert, wie Sie beim Ausführen von Dataflow-Jobs ein Netzwerk oder ein Subnetzwerk oder beides angeben.
Um die Schritte auszuführen, müssen Sie wissen, wie Sie Google Cloud -Netzwerke und -Subnetze erstellen. Außerdem müssen Sie mit den im nächsten Abschnitt beschriebenen Netzwerkbegriffen vertraut sein.
Das Netzwerk default enthält Konfigurationen, durch die Dataflow-Jobs ausgeführt werden können. Andere Dienste können dieses Netzwerk jedoch auch verwenden. Achten Sie darauf, dass alle Änderungen am Netzwerk default mit allen Ihren Diensten kompatibel sind. Erstellen Sie alternativ ein separates Netzwerk für Dataflow.
Weitere Informationen zur Fehlerbehebung bei Netzwerkproblemen finden Sie unter Fehlerbehebung bei Dataflow-Netzwerkproblemen.
Google Cloud Netzwerkterminologie
VPC-Netzwerk Ein VPC-Netzwerk ist eine virtuelle Version eines physischen Netzwerks, die innerhalb des Produktionsnetzwerks von Google implementiert wurde. Eine VPC, manchmal auch als Netzwerk bezeichnet, stellt die Verbindung für Ressourcen in einem Projekt her.
Weitere Informationen zu VPC finden Sie unter VPC-Netzwerke.
Gemeinsam genutztes VPC-Netzwerk. Wenn Sie eine gemeinsam genutzte VPC verwenden, bestimmen Sie ein Projekt zum Hostprojekt und fügen ihm ein oder mehrere Dienstprojekte hinzu. Die VPC-Netzwerke im Hostprojekt werden als gemeinsam genutzte VPC-Netzwerke bezeichnet. Wenn ein Administrator für gemeinsam genutzte VPCs Sie als Dienstprojektadministrator festgelegt hat, sind Sie berechtigt, einige der Subnetzwerke in Netzwerken des Hostprojekts zu nutzen.
Weitere Informationen zu freigegebene VPC finden Sie unter Gemeinsam genutzte VPC.
VPC Service Controls. Dataflow VPC Service Controls schützt vor versehentlichen oder gezielten Maßnahmen externer oder interner Entitäten, wodurch das Risiko unerwünschter Daten-Exfiltration verringert wird. Mit VPC Service Controls können Sie Perimeter zum Schutz von Ressourcen und Daten von Diensten erstellen, die Sie explizit angeben.
Weitere Informationen zu VPC Service Controls finden Sie im Überblick über VPC Service Controls. Welche Einschränkungen sich bei Verwendung von Dataflow mit VPC Service Controls ergeben, erfahren Sie unter Unterstützte Produkte und Einschränkungen.
Firewallregeln Mit Firewallregeln können Sie Traffic zu und von Ihren VMs zulassen oder ablehnen. Weitere Informationen finden Sie unter Internetzugriff und Firewallregeln konfigurieren.
Netzwerk und Subnetzwerk für einen Dataflow-Job
Wenn Sie einen Dataflow-Job erstellen, können Sie ein Netzwerk, ein Subnetzwerk oder beides angeben.
Beachten Sie folgende Richtlinien:
Wenn Sie sich nicht sicher sind, welcher Parameter verwendet werden soll, geben Sie nur den Subnetzwerkparameter an. Der Netzwerkparameter wird dann implizit für Sie angegeben.
Wenn Sie sowohl den Subnetzwerk- als auch den Netzwerkparameter weglassen, geht Google Cloud davon aus, dass Sie ein VPC-Netzwerk im automatischen Modus mit dem Namen
defaultverwenden möchten. Wenn Sie in Ihrem Projekt kein Netzwerk mit dem Namendefaulthaben, müssen Sie ein alternatives Netzwerk oder Subnetzwerk angeben.
Richtlinien für die Angabe eines Netzwerkparameters
Verwenden Sie den Netzwerkparameter, um ein VPC-Netzwerk im automatischen Modus in Ihrem Projekt auszuwählen. Weitere Informationen finden Sie unter VPC-Netzwerk im automatischen Modus erstellen.
Sie können ein Netzwerk angeben, indem Sie nur seinen Namen und nicht die vollständige URL verwenden.
Sie können den Netzwerkparameter nur verwenden, um ein freigegebene VPC-Netzwerk dann auszuwählen, wenn die folgenden beiden Bedingungen erfüllt sind:
Das ausgewählte gemeinsam genutzte VPC-Netzwerk ist ein VPC-Netzwerk im automatischen Modus.
Sie sind ein Dienstprojektadministrator mit Berechtigungen auf Projektebene für das gesamte gemeinsam genutzte VPC-Hostprojekt. Der Administrator einer freigegebene VPC hat Ihnen die Rolle Compute-Netzwerknutzer für das gesamte Hostprojekt gewährt. Damit können Sie alle seine Netzwerke und Subnetzwerke verwenden.
In allen anderen Fällen müssen Sie ein Subnetzwerk angeben.
Richtlinien für die Angabe eines Subnetzwerkparameters
Wenn Sie ein Subnetzwerk angeben, wählt Dataflow das Netzwerk für Sie aus. Bei der Angabe eines Subnetzwerks können Sie daher den Netzwerkparameter weglassen.
Verwenden Sie den Subnetzwerkparameter, um ein bestimmtes Subnetzwerk in einem Netzwerk auszuwählen.
Geben Sie ein Subnetzwerk mit einer vollständigen URL oder einem abgekürzten Pfad an. Wenn sich das Subnetzwerk in einem freigegebene VPC-Netzwerk befindet, müssen Sie die vollständige URL verwenden.
Das Subnetz muss sich in derselben Region befinden wie die Zone, in der die Dataflow-Worker ausgeführt werden.
Sie müssen den Subnetzwerkparameter in diesen Situationen angeben:
Das von Ihnen angegebene Subnetzwerk befindet sich in einem VPC-Netzwerk mit benutzerdefiniertem Modus.
Sie sind ein Dienstprojektadministrator mit Berechtigungen auf Subnetzebene für ein bestimmtes Subnetzwerk in einem gemeinsam genutzten VPC-Hostprojekt.
Die Anzahl der verfügbaren IP-Adressen ist ein Limit für die Anzahl der Dataflow-Worker, die erstellt werden können. Wenn der IPv4-Bereich des Subnetzes beispielsweise 10.0.0.0/24 ist, stehen 252 verwendbare IP-Adressen für Worker-VMs zur Verfügung. Achten Sie darauf, dass der IP-Adressbereich groß genug für die erwarteten Arbeitslasten ist, einschließlich des horizontalen Autoscalings. Verwenden Sie Lasttests, um Ihre Annahmen zu validieren.
Richtlinien für die Angabe eines Subnetzwerkparameters für eine freigegebene VPC
Achten Sie beim Angeben der Subnetzwerk-URL für die freigegebene VPC darauf, dass HOST_PROJECT_ID das Projekt ist, in dem die VPC gehostet wird.
Wenn sich das Subnetzwerk in einem freigegebene VPC-Netzwerk befindet, müssen Sie die vollständige URL verwenden. Siehe Beispiel für eine vollständige URL, die ein Subnetzwerk angibt.
Achten Sie darauf, dass das freigegebene VPC-Subnetzwerk für das Dataflow-Dienstkonto freigegeben ist und ihm die Rolle „Compute-Netzwerknutzer“ im angegebenen Subnetz zugewiesen ist. Die Rolle „Compute-Netzwerknutzer“ muss dem Dataflow-Dienstkonto im Hostprojekt zugewiesen sein.
Rufen Sie in der Google Cloud Console die Seite Gemeinsam genutzte VPC auf.
Wählen Sie ein Hostprojekt aus.
Wählen Sie im Abschnitt Einzelner Subnetzzugriff Ihr Subnetz aus. Im Bereich Berechtigungen auf Subnetzebene werden die Berechtigungen für dieses Subnetz angezeigt. Sie können sehen, ob dem VPC-Subnetzwerk die Rolle „Compute-Netzwerknutzer“ zugewiesen ist.
Klicken Sie zum Gewähren von Berechtigungen im Bereich Berechtigungen auf Subnetzebene auf Hauptkonto hinzufügen.
Wenn das Netzwerk nicht freigegeben ist, wird beim Ausführen des Jobs die folgende Fehlermeldung angezeigt:
Error: Message: Required 'compute.subnetworks.get' permission. Weitere Informationen finden Sie unter Erforderliche Berechtigung „compute.subnetworks.get“ in „Fehlerbehebung bei Dataflow-Berechtigungen“.
Beispielspezifikationen für Netzwerk und Subnetzwerk
Das folgende Beispiel zeigt eine vollständige URL, die ein Subnetzwerk angibt:
https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION_NAME/subnetworks/SUBNETWORK_NAME
Ersetzen Sie Folgendes:
HOST_PROJECT_ID: die ID des HostprojektsREGION_NAME: die Region Ihres Dataflow-JobsSUBNETWORK_NAMEist der Name Ihres Compute Engine-Subnetzwerks
Hier ist eine Beispiel-URL, bei der die Hostprojekt-ID my-cloud-project, die Region us-central1 und der Subnetzwerkname mysubnetwork ist:
https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork
Das folgende Beispiel zeigt eine Kurzform, die ein Subnetzwerk angibt:
regions/REGION_NAME/subnetworks/SUBNETWORK_NAME
Ersetzen Sie Folgendes:
REGION_NAME: die Region Ihres Dataflow-JobsSUBNETWORK_NAMEist der Name Ihres Compute Engine-Subnetzwerks
Pipeline mit dem angegebenen Netzwerk ausführen
Wenn Sie ein anderes Netzwerk als das vonGoogle Clouderstellte Standardnetzwerk verwenden möchten, müssen Sie in den meisten Fällen das Subnetzwerk angeben. Das Netzwerk wird automatisch aus dem von Ihnen angegebenen Subnetzwerk abgeleitet. Weitere Informationen finden Sie in diesem Dokument unter Richtlinien zum Angeben eines Netzwerkparameters.
Das folgende Beispiel zeigt, wie Sie Ihre Pipeline über die Befehlszeile oder mithilfe der REST API ausführen. In diesem Beispiel wird ein Netzwerk angegeben.
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
gcloud
gcloud dataflow jobs run JOB_NAME \
--gcs-location=gs://STORAGE_BUCKET/templates/template_file \
--region=REGION \
--staging-location=gs://STORAGE_BUCKET/staging \
--network=NETWORK_NAME \
--parameters inputFile=INPUT_PATH,output=gs://STORAGE_BUCKET/output
API
Wenn Sie eine Dataflow-Vorlage ausführen und dabei die REST API verwenden, fügen Sie network oder subnetwork oder beides zum environment-Objekt hinzu.
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"
}
}
Ersetzen Sie Folgendes:
JOB_NAMEist der Name Ihres Dataflow-Jobs (nur API)INPUT_PATHist der Pfad zu Ihrer QuelleHOST_PROJECT_ID: die Host-Projekt-IDREGION: eine Dataflow-Region, z. B.us-central1STORAGE_BUCKETist der Storage-BucketNETWORK_NAMEist der Name Ihres Compute Engine-Netzwerks
Pipeline mit angegebenem Subnetzwerk ausführen
Als Dienstprojektadministrator, der nur die Berechtigung zur Verwendung bestimmter Subnetzwerke in einem freigegebene VPC-Netzwerk hat, müssen Sie den Parameter subnetwork zusammen mit einem Subnetzwerk angeben, zu dessen Verwendung Sie berechtigt sind.
Das folgende Beispiel zeigt, wie Sie Ihre Pipeline über die Befehlszeile oder mithilfe der REST API ausführen. In diesem Beispiel wird ein Subnetzwerk angegeben. Sie können auch das Netzwerk angeben.
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
gcloud
gcloud dataflow jobs run JOB_NAME \
--gcs-location=gs://STORAGE_BUCKET/templates/template_file \
--region=REGION \
--staging-location=gs://STORAGE_BUCKET/staging \
--subnetwork=https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK_NAME \
--parameters inputFile=INPUT_PATH,output=gs://STORAGE_BUCKET/output
API
Wenn Sie eine Dataflow-Vorlage ausführenund dabei die REST API verwenden, fügen Sie network oder subnetwork oder beides zum environment-Objekt hinzu.
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"
}
}
Ersetzen Sie Folgendes:
JOB_NAMEist der Name Ihres Dataflow-Jobs (nur API)INPUT_PATHist der Pfad zu Ihrer QuelleHOST_PROJECT_ID: die Host-Projekt-IDREGION: eine Dataflow-Region, z. B.us-central1STORAGE_BUCKETist der Storage-BucketSUBNETWORK_NAMEist der Name Ihres Compute Engine-Subnetzwerks
Externe IP-Adresse deaktivieren
Informationen zum Deaktivieren einer externen IP-Adresse finden Sie unter Internetzugriff und Firewallregeln konfigurieren.