Questo documento spiega come specificare una rete o una sottorete o entrambe le opzioni quando esegui i job di Dataflow.
Per seguire i passaggi, devi sapere come creare reti e subnet Google Cloud. Inoltre, devi conoscere i termini di rete discussi nella sezione successiva.
La rete default
ha configurazioni
che consentono l'esecuzione dei job Dataflow. Tuttavia, anche altri servizi potrebbero utilizzare questa rete. Assicurati che eventuali modifiche alla rete default
siano compatibili con tutti i tuoi servizi. In alternativa, crea una rete distinta per Dataflow.
Per saperne di più su come risolvere i problemi di rete, consulta Risolvere i problemi di rete di Dataflow.
Terminologia della rete Google Cloud
Rete VPC. Una rete VPC è una versione virtuale di una rete fisica implementata all'interno della rete di produzione di Google. A volte chiamata rete, una VPC fornisce la connettività per le risorse di un progetto.
Per scoprire di più su VPC, consulta Reti VPC.
Rete VPC condivisa. Quando utilizzi una rete VPC condiviso, designi un progetto come progetto host e colleghi uno o più altri progetti di servizio. Le reti VPC nel progetto host sono chiamate reti VPC condivise. Se un amministratore VPC condiviso ti definisce come amministratore del progetto di servizio, hai l'autorizzazione a utilizzare almeno alcune delle sottoreti nelle reti del progetto host.
Per scoprire di più su VPC condiviso, consulta VPC condiviso.
Controlli di servizio VPC. I Controlli di servizio VPC di Dataflow contribuiscono a proteggere da azioni accidentali o mirate da parte di entità esterne o di persone interne, il che contribuisce a ridurre al minimo i rischi di esfiltrazione di dati ingiustificata. Puoi utilizzare i Controlli di servizio VPC per creare perimetri che proteggono le risorse e i dati dei servizi che hai specificato esplicitamente.
Per scoprire di più sui Controlli di servizio VPC, consulta Panoramica dei Controlli di servizio VPC. Per informazioni sulle limitazioni relative all'utilizzo di Dataflow con i Controlli di servizio VPC, consulta Prodotti supportati e limitazioni.
Regole firewall. Utilizza le regole firewall per consentire o negare il traffico da e verso le tue VM. Per ulteriori informazioni, consulta la pagina sulla configurazione dell'accesso a internet e delle regole firewall.
Rete e sottorete 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 subnetwork. Il parametro di rete viene quindi specificato implicitamente.
Se ometti entrambi i parametri subnet e network, Google Cloud presuppone che tu voglia utilizzare una rete VPC in modalità automatica denominata
default
. Se nel progetto non è presente una rete denominatadefault
, devi specificare una rete o una subnet alternativa.
Linee guida per la specifica di un parametro di rete
Per selezionare una rete VPC in modalità automatica nel tuo progetto, utilizza il parametro network. Per ulteriori informazioni, consulta Creare una rete VPC in modalità automatica.
Puoi specificare una rete utilizzando solo il nome e non l'URL completo.
Puoi utilizzare il parametro network per selezionare una rete VPC condiviso solo se sono vere entrambe le seguenti condizioni:
La rete VPC condivisa selezionata è una rete VPC in modalità automatica.
Sei un amministratore del progetto di servizio con autorizzazioni a livello di progetto per l'intero progetto host VPC condiviso. Un amministratore VPC condiviso ti ha concesso il ruolo Utente di rete Compute per l'intero progetto host, quindi puoi utilizzare tutte le relative reti e subnet.
In tutti gli altri casi, devi specificare una subnet.
Linee guida per la specifica di un parametro di subnet
Se specifichi una sottorete, Dataflow sceglie la rete per te. Pertanto, quando specifichi una sottorete, puoi omettere il parametro network.
Per selezionare una subnet specifica in una rete, utilizza il parametro 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 sottorete nella stessa regione della zona in cui esegui i tuoi worker Dataflow.
Devi specificare il parametro subnet nelle seguenti situazioni:
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 VPC condiviso.
La dimensione della sottorete limita il numero di istanze in base al numero di indirizzi IP disponibili. Questo dimensionamento non influisce sul rendimento di Dataflow Controlli di servizio VPC.
Linee guida per la specifica di un parametro di subnet per il VPC condiviso
Quando specifichi l'URL della subnet per la VPC condiviso, assicurati che HOST_PROJECT_ID sia il progetto in cui è ospitata la VPC.
Se la subnet si trova in una rete VPC condiviso, devi utilizzare l'URL completo. Consulta un esempio di URL completo che specifica una sottorete.
Assicurati che la subnet del VPC condiviso sia condivisa con l'account di servizio Dataflow e che abbia il ruolo Utente di rete Compute assegnato alla 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 condivisa.
Seleziona un progetto host.
Nella sezione Accesso a singole subnet, seleziona la tua subnet. Il riquadro Autorizzazioni a livello di subnet mostra le autorizzazioni per questa subnet. Puoi vedere se alla sottorete VPC è stato assegnato il ruolo Utente di rete Compute.
Per concedere le autorizzazioni, fai clic su Aggiungi entità nel riquadro Autorizzazioni a livello di subnet.
Se la rete non è condivisa, quando provi a eseguire il job viene visualizzato il seguente messaggio di errore:
Error: Message: Required 'compute.subnetworks.get' permission
. Per ulteriori informazioni, consulta la sezione Autorizzazione "compute.subnetworks.get" obbligatoria in "Risolvere i problemi relativi alle autorizzazioni di Dataflow".
Esempi di specifiche di reti e subnet
L'esempio seguente mostra un URL completo che specifica una sottorete:
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 hostREGION_NAME
: la regione del job DataflowSUBNETWORK_NAME
: il nome della sottorete Compute Engine
Di seguito è riportato un esempio di URL in cui l'ID progetto host è my-cloud-project
,
la regione è us-central1
e il nome della sottorete è mysubnetwork
:
https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork
Di seguito è riportato un esempio di un modulo breve che specifica una sottorete:
regions/REGION_NAME/subnetworks/SUBNETWORK_NAME
Sostituisci quanto segue:
REGION_NAME
: la regione del job DataflowSUBNETWORK_NAME
: il nome della sottorete 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 sottorete. La rete viene ricavata automaticamente dalla subnet specificata. Per ulteriori informazioni, consulta le linee guida per la specifica di un parametro di rete in questo documento.
L'esempio seguente mostra come eseguire la pipeline dalla riga di comando o utilizzando l'API REST. Questo 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
Vai
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
o entrambi 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 sorgenteHOST_PROJECT_ID
: l'ID progetto hostREGION
: una regione Dataflow, ad esempious-central1
STORAGE_BUCKET
: il bucket di archiviazioneNETWORK_NAME
: il nome della rete Compute Engine
Esegui la pipeline con la sottorete specificata
Se sei un amministratore di progetti di servizio che ha l'autorizzazione a utilizzare solo subnet specifiche in una rete VPC condiviso, devi specificare il parametro subnetwork
con una subnet di cui hai l'autorizzazione all'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
Vai
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
o entrambi 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 sorgenteHOST_PROJECT_ID
: l'ID progetto hostREGION
: una regione Dataflow, ad esempious-central1
STORAGE_BUCKET
: il bucket di archiviazioneSUBNETWORK_NAME
: il nome della sottorete Compute Engine
Disattivare un indirizzo IP esterno
Per disattivare un indirizzo IP esterno, consulta Configurare l'accesso a internet e le regole firewall.