Specifica una rete e una subnet

Questo documento spiega come specificare una rete, una subnet o entrambe le opzioni quando esegui i job Dataflow.

Questo documento richiede che tu sappia come creare reti e subnet Google Cloud. Questo documento richiede anche la tua familiarità con i termini di rete spiegati nella prossima sezione.

La rete default contiene configurazioni che consentono l'esecuzione dei job Dataflow. Questa rete potrebbe essere utilizzata anche da altri servizi. Assicurati che le modifiche alla rete default siano compatibili con tutti i tuoi servizi. In alternativa, crea una rete separata per Dataflow.

Per ulteriori informazioni su come risolvere i problemi di rete, consulta Risoluzione dei problemi di networking di Dataflow.

Terminologia della rete Google Cloud

Rete e subnet per un job Dataflow

Quando crei un job Dataflow, puoi specificare una rete, una subnet o entrambe le opzioni.

Tieni in considerazione le seguenti linee guida:

  • Se hai dubbi su quale parametro utilizzare, specifica solo il parametro della subnet. Il parametro di rete viene quindi specificato implicitamente per te.

  • Se ometti sia i parametri di subnet che di rete, Google Cloud presuppone che tu voglia utilizzare una rete VPC in modalità automatica denominata default. Se nel progetto non è presente una rete denominata default, devi specificare una rete o una subnet alternativa.

Linee guida per specificare un parametro di rete

  • Puoi selezionare una rete VPC in modalità automatica nel progetto con il parametro di rete.

  • Puoi specificare una rete utilizzando solo il nome e non l'URL completo.

  • Puoi utilizzare il parametro di rete per selezionare una rete VPC condiviso solo se entrambe le seguenti condizioni sono vere:

    • La rete VPC condivisa che selezioni è una rete VPC in modalità automatica.

    • Sei un amministratore del progetto di servizio con autorizzazioni a livello di progetto per l'intero progetto host del VPC condiviso. Un amministratore di un VPC condiviso ti ha concesso il ruolo Utente di rete Compute per l'intero progetto host, in modo da poter utilizzare tutte le relative reti e subnet.

  • In tutti gli altri casi, devi specificare una subnet.

Linee guida per specificare un parametro di subnet

  • Se specifichi una subnet, Dataflow sceglie la rete al posto tuo. Di conseguenza, quando specifichi una subnet, puoi omettere il parametro di rete.

  • Per selezionare una subnet specifica in una rete, utilizza il parametro della subnet.

  • Specifica una subnet utilizzando un URL completo o un percorso abbreviato. Se la subnet si trova in una rete VPC condiviso, devi utilizzare l'URL completo.

  • Devi selezionare una subnet nella stessa regione della zona in cui esegui i worker Dataflow. Ad esempio, devi specificare il parametro di subnet nelle situazioni seguenti:

    • La subnet specificata si trova in una rete VPC in modalità personalizzata.

    • Sei un amministratore del progetto di servizio con autorizzazioni a livello di subnet per una subnet specifica in un progetto host del VPC condiviso.

  • La dimensione della subnet limita solo il numero di istanze in base al numero di indirizzi IP disponibili. Queste dimensioni non hanno alcun impatto sulle prestazioni dei Controlli di servizio VPC di Dataflow.

Linee guida per specificare un parametro di subnet per un VPC condiviso

  • Quando specifichi l'URL della subnet per il VPC condiviso, assicurati che HOST_PROJECT_ID sia il progetto in cui è ospitato il VPC.

  • Se la subnet si trova in una rete VPC condivisa, devi utilizzare l'URL completo.

  • Assicurati che la subnet VPC condiviso sia condivisa con l'account di servizio Dataflow e abbia il ruolo Utente di rete Compute assegnato nella subnet specificata. Il ruolo Utente di rete Compute deve essere assegnato all'account di servizio Dataflow nel progetto host.

    • Nella console Google Cloud, vai alla pagina VPC condiviso e cerca la subnet. Nella colonna Condiviso con, puoi vedere se la subnet VPC è condivisa con l'account di servizio Dataflow.
    • Se la rete non è condivisa, viene visualizzato il seguente messaggio di errore: Error: Message: Required 'compute.subnetworks.get' permission.

Esempi di specifiche di rete e subnet

Esempio di URL completo che specifica una subnet:

https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION_NAME/subnetworks/SUBNETWORK_NAME

Sostituisci quanto segue:

  • HOST_PROJECT_ID: l'ID progetto host
  • REGION_NAME: la regione del job Dataflow
  • SUBNETWORK_NAME: il nome della subnet Compute Engine

Di seguito è riportato un URL di esempio, in cui l'ID progetto host è my-cloud-project, la regione è us-central1 e il nome della subnet è mysubnetwork:

 https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork

Quello qui sotto è un esempio di breve formato che specifica una subnet:

regions/REGION_NAME/subnetworks/SUBNETWORK_NAME

Sostituisci quanto segue:

  • REGION_NAME: la regione del job Dataflow
  • SUBNETWORK_NAME: il nome della subnet Compute Engine

Esegui la pipeline con la rete specificata

Se vuoi utilizzare una rete diversa da quella predefinita creata da Google Cloud, nella maggior parte dei casi, devi specificare la subnet. La rete viene dedotta automaticamente dalla subnet specificata. Per ulteriori informazioni, consulta le linee guida per specificare un parametro di rete in questo documento.

L'esempio seguente mostra come eseguire la pipeline dalla riga di comando o utilizzando l'API REST. L'esempio specifica una rete.

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

Se esegui un modello Dataflow utilizzando l'API REST, aggiungi network o subnetwork, oppure entrambe, all'oggetto 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"
    }
}

Sostituisci quanto segue:

  • JOB_NAME: il nome del job Dataflow (solo API)
  • INPUT_PATH: il percorso della sorgente
  • HOST_PROJECT_ID: l'ID progetto host
  • REGION: una regione Dataflow, come us-central1
  • STORAGE_BUCKET: il bucket di archiviazione
  • NETWORK_NAME: il nome della tua rete Compute Engine

Esegui la pipeline con la subnet specificata

Se sei un amministratore del progetto di servizio e hai l'autorizzazione per utilizzare solo subnet specifiche in una rete VPC condiviso, devi specificare il parametro subnetwork con una subnet che disponi dell'autorizzazione di utilizzo.

L'esempio seguente mostra come eseguire la pipeline dalla riga di comando o utilizzando l'API REST. L'esempio specifica una subnet. Puoi anche specificare la rete.

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

Se esegui un modello Dataflow utilizzando l'API REST, aggiungi network o subnetwork oppure entrambe le cose all'oggetto 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"
    }
}

Sostituisci quanto segue:

  • JOB_NAME: il nome del job Dataflow (solo API)
  • INPUT_PATH: il percorso della sorgente
  • HOST_PROJECT_ID: l'ID progetto host
  • REGION: una regione Dataflow, come us-central1
  • STORAGE_BUCKET: il bucket di archiviazione
  • SUBNETWORK_NAME: il nome della subnet Compute Engine

Disattivare un indirizzo IP esterno

Per disattivare un indirizzo IP esterno, vedi Configurare l'accesso a internet e le regole del firewall.