Netzwerk und Subnetzwerk angeben

In diesem Dokument wird erläutert, wie Sie beim Ausführen von Dataflow-Jobs ein Netzwerk oder ein Subnetzwerk oder beides angeben.

Für dieses Dokument 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 Dataflow-Netzwerkproblemen.

Google Cloud-Netzwerkterminologie

  • VPC-Netzwerk Ein VPC-Netzwerk, manchmal auch nur als Netzwerk bezeichnet, bietet die Konnektivität für Ressourcen in einem Projekt.

    Mehr zu VPC finden Sie unter VPC-Netzwerke.

  • Freigegebenes VPC-Netzwerk. Ein freigegebenes VPC-Netzwerk ist ein Netzwerk, das sich innerhalb Ihrer Organisation in einem separaten Projekt befindet, das als Hostprojekt bezeichnet wird. 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 über Shared VPC finden Sie in der Shared VPC-Übersicht.

  • VPC Service Controls. Dataflow VPC Service Controls hilft Ihnen, die Ressourcen und Dienste Ihrer Pipeline zu schützen.

    Weitere Informationen zu VPC Service Controls finden Sie in der Übersicht zu 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.

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 Namen default vorhanden ist, müssen Sie ein alternatives Netzwerk oder Subnetzwerk angeben.

Richtlinien für die Angabe eines Netzwerkparameters

  • Sie können in Ihrem Projekt mit dem Netzwerkparameter ein VPC-Netzwerk im automatischen Modus auswählen.

  • 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. Beispielsweise müssen Sie 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 freigegebenen VPC-Hostprojekt.

  • Die Größe des Subnetzwerks beschränkt die Anzahl der Instanzen nur 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.

  • 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 Network User" muss dem Dataflow-Dienstkonto im Hostprojekt zugewiesen werden.

    • Rufen Sie in der Google Cloud Console die Seite Freigegebene VPC auf und suchen Sie nach dem Subnetz. In der Spalte Freigegeben für können Sie sehen, ob das VPC-Subnetzwerk für das Dataflow-Dienstkonto freigegeben ist.
    • Ist das Netzwerk nicht freigegeben, wird die folgende Fehlermeldung angezeigt: Error: Message: Required 'compute.subnetworks.get' permission.

Beispielspezifikationen für Netzwerk und Subnetzwerk

Beispiel für 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 Hostprojekts
  • REGION_NAME ist die Region Ihres Dataflow-Jobs.
  • SUBNETWORK_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 ist die Region Ihres Dataflow-Jobs.
  • SUBNETWORK_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 Subnetzwerk 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 Quelle
  • HOST_PROJECT_ID ist die ID des Hostprojekts
  • REGION: eine Dataflow-Region, z. B. us-central1
  • STORAGE_BUCKET ist der Storage-Bucket
  • NETWORK_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 Quelle
  • HOST_PROJECT_ID ist die ID des Hostprojekts
  • REGION: eine Dataflow-Region, z. B. us-central1
  • STORAGE_BUCKET ist der Storage-Bucket
  • SUBNETWORK_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.