In diesem Dokument wird erläutert, wie Sie beim Ausführen von Dataflow-Jobs ein Netzwerk oder ein Subnetzwerk oder beides angeben.
Damit Sie die Schritte ausführen können, müssen Sie wissen, wie Sie Google Cloud-Netzwerke und -Subnetzwerke 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 die Änderungen im 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 Netzwerkproblemen mit Dataflow.
Google Cloud-Netzwerkterminologie
VPC-Netzwerk Ein VPC-Netzwerk ist eine virtuelle Version eines physischen Netzwerks, die innerhalb des Produktionsnetzwerks von Google implementiert wurde. Ein VPC, manchmal auch als Netzwerk bezeichnet, bietet die Konnektivität für Ressourcen in einem Projekt.
Weitere Informationen zu VPC finden Sie unter VPC-Netzwerke.
Freigegebenes VPC-Netzwerk. Wenn Sie eine freigegebene VPC verwenden, bestimmen Sie ein Projekt zum Hostprojekt und fügen ihm ein oder mehrere Dienstprojekte hinzu. Die VPC-Netzwerke im Hostprojekt werden als freigegebene VPC-Netzwerke bezeichnet. Wenn ein Administrator für freigegebene VPCs Sie als Dienstprojektadministrator festgelegt hat, sind Sie berechtigt, einige der Subnetzwerke in Netzwerken des Hostprojekts zu nutzen.
Weitere Informationen zu Shared VPC finden Sie unter Freigegebene 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 Verwenden Sie Firewallregeln, um Traffic zu und von Ihren VMs zuzulassen oder zu verweigern. 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 beide Optionen 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
default
verwenden möchten. Wenn in Ihrem Projekt kein Netzwerk mit dem Namendefault
vorhanden ist, müssen Sie ein alternatives Netzwerk oder Subnetzwerk angeben.
Richtlinien für die Angabe eines Netzwerkparameters
Verwenden Sie den Netzwerkparameter, um in Ihrem Projekt ein VPC-Netzwerk im automatischen Modus 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 freigegebenes VPC-Netzwerk dann auszuwählen, wenn die folgenden beiden Bedingungen erfüllt sind:
Das ausgewählte freigegebene VPC-Netzwerk ist ein VPS-Netzwerk im automatischen Modus.
Sie sind ein Dienstprojektadministrator mit Berechtigungen auf Projektebene für das gesamte freigegebene VPC-Hostprojekt. Der Administrator einer freigegebenen 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 freigegebenen 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 den folgenden 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 freigegebenen VPC-Hostprojekt.
Die Größe des Subnetzwerks begrenzt die Anzahl der Instanzen durch die Anzahl der verfügbaren IP-Adressen. Diese Größe hat keine Auswirkungen auf die Leistung der VPC Service Controls von Dataflow.
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 freigegebenen 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 Freigegebene 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
ist die ID des HostprojektsREGION_NAME
: die Region Ihres Dataflow-JobsSUBNETWORK_NAME
ist der Name Ihres Compute Engine-Subnetzwerks
Im Folgenden finden Sie eine Beispiel-URL, bei der die Hostprojekt-ID my-cloud-project
, die Region us-central1
und der Subnetzwerkname mysubnetwork
lautet:
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_NAME
ist der Name Ihres Compute Engine-Subnetzwerks
Pipeline mit dem angegebenen Netzwerk ausführen
Wenn Sie ein anderes Netzwerk als das von Google Cloud erstellte Standardnetzwerk verwenden möchten, müssen Sie in den meisten Fällen das Subnetzwerk angeben. Das Netzwerk wird automatisch aus dem von Ihnen angegebenen Subnetz abgeleitet. Weitere Informationen finden Sie in diesem Dokument unter Richtlinien für die Angabe 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
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_NAME
ist der Name Ihres Dataflow-Jobs (nur API)INPUT_PATH
ist der Pfad zu Ihrer QuelleHOST_PROJECT_ID
ist die ID des HostprojektsREGION
: eine Dataflow-Region, z. B.us-central1
STORAGE_BUCKET
ist der Storage-BucketNETWORK_NAME
ist der Name Ihres Compute Engine-Netzwerks
Pipeline mit angegebenem Subnetzwerk ausführen
Als Dienstprojektadministrator, der nur die Berechtigung zur Verwendung bestimmter Subnetzwerke in einem freigegebenen 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
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_NAME
ist der Name Ihres Dataflow-Jobs (nur API)INPUT_PATH
ist der Pfad zu Ihrer QuelleHOST_PROJECT_ID
ist die ID des HostprojektsREGION
: eine Dataflow-Region, z. B.us-central1
STORAGE_BUCKET
ist der Storage-BucketSUBNETWORK_NAME
ist der Name Ihres Compute Engine-Subnetzwerks
Externe IP-Adresse deaktivieren
Informationen zum Deaktivieren einer externen IP-Adresse finden Sie unter Internetzugriff und Firewallregeln konfigurieren.