Questo documento spiega come specificare una rete o una subnet o entrambe le opzioni quando esegui job Dataflow.
Questo documento richiede che sai come creare reti e subnet di Google Cloud. Questo documento richiede inoltre la tua familiarità con i termini di rete trattati nella prossima sezione.
La rete default
dispone di configurazioni
che consentono l'esecuzione dei job Dataflow. Tuttavia, anche altri servizi potrebbero
utilizzare questa rete. 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 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 chiamato rete, un VPC fornisce la connettività per le risorse in un progetto.
Per saperne di più sul VPC, vedi Panoramica della rete VPC.
Rete VPC condivisa. Quando utilizzi un VPC condiviso, designi un progetto come progetto host, a cui colleghi uno o più altri progetti di servizio. Le reti VPC nel progetto host sono chiamate reti VPC condivise. Se un amministratore del VPC condiviso ti definisce come amministratore del progetto di servizio, hai l'autorizzazione per utilizzare almeno alcune delle subnet nelle reti del progetto host.
Per saperne di più sul VPC condiviso, consulta Panoramica del VPC condiviso.
Controlli di servizio VPC. I controlli di servizio VPC di Dataflow aiutano a proteggere da azioni accidentali o mirate da parte di entità esterne o interne, il che contribuisce a ridurre al minimo i rischi di esfiltrazione di dati ingiustificati. Puoi utilizzare Controlli di servizio VPC per creare perimetri che proteggono le risorse e i dati dei servizi da te specificati esplicitamente.
Per saperne di più su Controlli di servizio VPC, consulta Panoramica di Controlli di servizio VPC. Per saperne di più sulle limitazioni dell'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 Configurare l'accesso a internet e le regole del firewall.
Rete e subnet per un job Dataflow
Quando crei un job Dataflow, puoi specificare una rete, una subnet o entrambe.
Considera le seguenti linee guida:
Se hai dubbi su quale parametro utilizzare, specifica solo il parametro della subnet. Il parametro di rete viene quindi specificato in modo implicito.
Se ometti sia i parametri della subnet sia i parametri di rete, Google Cloud presuppone che tu intenda utilizzare una rete VPC in modalità automatica denominata
default
. Se nel tuo progetto non hai una rete denominatadefault
, 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 suo 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 della rete VPC condiviso ti ha concesso il ruolo Utente di rete Compute per l'intero progetto host, in modo che tu possa utilizzare tutte le relative reti e subnet.
In tutti gli altri casi, devi specificare una subnet.
Linee guida per specificare un parametro della subnet
Se specifichi una subnet, Dataflow sceglie la rete per te. Pertanto, 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 della 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 del VPC condiviso.
Le dimensioni della subnet limitano solo il numero di istanze in base al numero di indirizzi IP disponibili. Questo ridimensionamento non influisce sulle prestazioni dei Controlli di servizio VPC di Dataflow.
Linee guida per specificare un parametro di subnet per il 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 condiviso, devi utilizzare l'URL completo. Vedi un esempio di URL completo che specifica una subnet.
Assicurati che la subnet VPC condiviso sia condivisa con l'account di servizio Dataflow e che abbia il ruolo Utente di rete Compute assegnato per la 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.
Seleziona un progetto host.
Nella sezione Accesso a subnet singole, seleziona la tua subnet. Il riquadro Autorizzazioni a livello di subnet mostra le autorizzazioni per questa subnet. Puoi vedere se alla subnet VPC è assegnato il ruolo Utente di rete Compute.
Per concedere le autorizzazioni, nel riquadro Autorizzazioni a livello di subnet, fai clic su Aggiungi entità.
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 Autorizzazione 'compute.subnetworks.get' obbligatoria in "Risolvere i problemi relativi alle autorizzazioni Dataflow".
Specifiche di esempio per rete e subnet
Esempio di un 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
: ID progetto hostREGION_NAME
: la regione del tuo 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
Di seguito è riportato un esempio di un breve formato che specifica una subnet:
regions/REGION_NAME/subnetworks/SUBNETWORK_NAME
Sostituisci quanto segue:
REGION_NAME
: la regione del tuo job Dataflow.SUBNETWORK_NAME
: il nome della subnet Compute Engine
Esegui la pipeline con la rete specificata
Nella maggior parte dei casi, per utilizzare una rete diversa da quella predefinita creata da Google Cloud, devi specificare la subnet. La rete viene automaticamente dedotta 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. 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
, o 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 tuo job Dataflow (solo API)INPUT_PATH
: il percorso dell'origineHOST_PROJECT_ID
: ID progetto hostREGION
: una regione Dataflow, comeus-central1
STORAGE_BUCKET
: il bucket di archiviazioneNETWORK_NAME
: il nome della tua rete Compute Engine
Esegui la pipeline con la subnet specificata
Se sei un amministratore di progetti di servizio e hai l'autorizzazione solo per utilizzare subnet specifiche in una rete VPC condiviso, devi specificare il parametro subnetwork
con una subnet per cui 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
, 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 tuo job Dataflow (solo API)INPUT_PATH
: il percorso dell'origineHOST_PROJECT_ID
: ID progetto hostREGION
: una regione Dataflow, comeus-central1
STORAGE_BUCKET
: il bucket di archiviazioneSUBNETWORK_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.