Este documento explica como especificar uma rede ou uma sub-rede, ou ambas as opções, quando executa tarefas do Dataflow.
Para seguir os passos, tem de saber como criar redes e sub-redes da Google Cloud Platform. Também tem de estar familiarizado com os termos da rede abordados na secção seguinte.
A rede default
tem configurações que permitem a execução de tarefas do Dataflow. No entanto, outros serviços também podem usar esta rede. Certifique-se de que as alterações à rede default
são compatíveis com todos os seus serviços. Em alternativa, crie uma rede separada para o Dataflow.
Para mais informações sobre como resolver problemas de rede, consulte o artigo Resolva problemas de rede do Dataflow.
Terminologia de rede da Google Cloud Platform
Rede da VPC. Uma rede VPC é uma versão virtual de uma rede física que é implementada na rede de produção da Google. Por vezes, denominada rede, uma VPC oferece conetividade para recursos num projeto.
Para saber mais acerca da VPC, consulte o artigo Redes VPC.
Rede VPC partilhada. Quando usa a VPC partilhada, designa um projeto como um projeto anfitrião e anexa-lhe um ou mais projetos de serviço. As redes VPC no projeto anfitrião são denominadas redes VPC partilhadas. Se um administrador da VPC partilhada definir a sua função como administrador do projeto de serviço, tem autorização para usar, pelo menos, algumas das sub-redes nas redes do projeto anfitrião.
Para saber mais sobre a VPC partilhada, consulte o artigo VPC partilhada.
VPC Service Controls. Os VPC Service Controls do Dataflow ajudam a proteger contra ações acidentais ou direcionadas por entidades externas ou internas, o que ajuda a minimizar os riscos de exfiltração de dados injustificados. Pode usar os VPC Service Controls para criar perímetros que protejam os recursos e os dados dos serviços que especificar explicitamente.
Para saber mais acerca do VPC Service Controls, consulte o artigo Vista geral do VPC Service Controls. Para saber mais sobre as limitações quando usa o Dataflow com os VPC Service Controls, consulte o artigo Produtos suportados e limitações.
Regras de firewall. Use regras de firewall para permitir ou negar tráfego de e para as suas VMs. Para mais informações, consulte o artigo Configure o acesso à Internet e as regras de firewall.
Rede e sub-rede para uma tarefa do Dataflow
Quando cria um trabalho do Dataflow, pode especificar uma rede, uma sub-rede ou ambas as opções.
Considere as seguintes diretrizes:
Se não tiver a certeza de que parâmetro usar, especifique apenas o parâmetro subnetwork. Em seguida, o parâmetro de rede é especificado implicitamente para si.
Se omitir os parâmetros de sub-rede e de rede,o Google Cloud Google Cloud assume que pretende usar uma rede VPC de modo automático denominada
default
. Se não tiver uma rede com o nomedefault
no seu projeto, tem de especificar uma rede ou uma sub-rede alternativa.
Diretrizes para especificar um parâmetro de rede
Para selecionar uma rede VPC de modo automático no seu projeto, use o parâmetro de rede. Para mais informações, consulte o artigo Crie uma rede VPC de modo automático.
Pode especificar uma estação usando apenas o respetivo nome e não o URL completo.
Só pode usar o parâmetro de rede para selecionar uma rede de VPC partilhada se ambas as seguintes condições forem verdadeiras:
A rede de VPC partilhada que selecionar é uma rede de VPC de modo automático.
É administrador do projeto de serviço com autorizações ao nível do projeto para todo o projeto anfitrião de VPC partilhada. Um administrador da VPC partilhada concedeu-lhe a função de utilizador da rede de computação para todo o projeto anfitrião, pelo que pode usar todas as respetivas redes e sub-redes.
Para todos os outros casos, tem de especificar uma sub-rede.
Diretrizes para especificar um parâmetro de sub-rede
Se especificar uma sub-rede, o Dataflow escolhe a rede por si. Por conseguinte, quando especificar uma sub-rede, pode omitir o parâmetro de rede.
Para selecionar uma sub-rede específica numa rede, use o parâmetro subnetwork.
Especifique uma subrede através de um URL completo ou de um caminho abreviado. Se a sub-rede estiver localizada numa rede VPC partilhada, tem de usar o URL completo.
Tem de selecionar uma sub-rede na mesma região que a zona onde executa os seus trabalhadores do Dataflow.
Tem de especificar o parâmetro de sub-rede nas seguintes situações:
A sub-rede que especificar está numa rede VPC de modo personalizado.
É administrador do projeto de serviço com autorizações ao nível da sub-rede para uma sub-rede específica num projeto anfitrião de VPC partilhada.
O número de endereços IP disponíveis é um limite para o número de trabalhadores do Dataflow que podem ser criados. Por exemplo, se o intervalo IPv4 da sub-rede for 10.0.0.0/24, isto fornece 252 endereços IP utilizáveis para VMs de trabalho. Certifique-se de que o espaço de endereços IP é suficientemente grande para as cargas de trabalho esperadas, incluindo a permissão para dimensionamento automático horizontal. Use os testes de carga para validar as suas suposições.
Diretrizes para especificar um parâmetro de sub-rede para a VPC partilhada
Quando especificar o URL da sub-rede para a VPC partilhada, certifique-se de que HOST_PROJECT_ID é o projeto no qual a VPC está alojada.
Se a sub-rede estiver localizada numa rede VPC partilhada, tem de usar o URL completo. Veja um exemplo de um URL completo que especifica uma sub-rede.
Certifique-se de que a sub-rede da VPC partilhada é partilhada com a conta de serviço do Dataflow e tem a função de utilizador da rede de computação atribuída na sub-rede especificada. A função de utilizador da rede de computação tem de ser atribuída à conta de serviço do Dataflow no projeto anfitrião.
Na Google Cloud consola, aceda à página VPC partilhada.
Selecione um projeto anfitrião.
Na secção Acesso individual à sub-rede, selecione a sua sub-rede. O painel Autorizações ao nível da sub-rede apresenta as autorizações para esta sub-rede. Pode ver se à sub-rede da VPC está atribuída a função de utilizador da rede de computação.
Para conceder autorizações, no painel Autorizações ao nível da sub-rede, clique em Adicionar principal.
Se a rede não for partilhada, quando tentar executar a tarefa, é apresentada a seguinte mensagem de erro:
Error: Message: Required 'compute.subnetworks.get' permission
. Para mais informações, consulte a secção Autorização "compute.subnetworks.get" necessária no artigo "Resolva problemas de autorizações do Dataflow".
Exemplo de especificações de rede e sub-rede
O exemplo seguinte mostra um URL completo que especifica uma sub-rede:
https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION_NAME/subnetworks/SUBNETWORK_NAME
Substitua o seguinte:
HOST_PROJECT_ID
: o ID do projeto anfitriãoREGION_NAME
: a região da sua tarefa do DataflowSUBNETWORK_NAME
: o nome da sua sub-rede do Compute Engine
Segue-se um exemplo de um URL em que o ID do projeto anfitrião é my-cloud-project
,
a região é us-central1
e o nome da sub-rede é mysubnetwork
:
https://www.googleapis.com/compute/v1/projects/my-cloud-project/regions/us-central1/subnetworks/mysubnetwork
Segue-se um exemplo de um formulário abreviado que especifica uma sub-rede:
regions/REGION_NAME/subnetworks/SUBNETWORK_NAME
Substitua o seguinte:
REGION_NAME
: a região da sua tarefa do DataflowSUBNETWORK_NAME
: o nome da sua sub-rede do Compute Engine
Execute o pipeline com a rede especificada
Se quiser usar uma rede diferente da rede predefinida criada pelo Google Cloud, na maioria dos casos, tem de especificar a sub-rede. A rede é inferida automaticamente a partir da sub-rede que especificar. Para mais informações, consulte as diretrizes para especificar um parâmetro de rede neste documento.
O exemplo seguinte mostra como executar o pipeline a partir da linha de comandos ou através da API REST. Este exemplo especifica uma rede.
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 estiver a executar um modelo do Dataflow
através da API REST,
adicione network
ou subnetwork
, ou ambos, ao objeto 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"
}
}
Substitua o seguinte:
JOB_NAME
: o nome da sua tarefa do Dataflow (apenas API)INPUT_PATH
: o caminho para a sua fonteHOST_PROJECT_ID
: o ID do projeto anfitriãoREGION
: uma região do Dataflow, comous-central1
STORAGE_BUCKET
: o contentor de armazenamentoNETWORK_NAME
: o nome da sua rede do Compute Engine
Execute o pipeline com a sub-rede especificada
Se for um administrador do projeto de serviço que só tem autorização para usar sub-redes específicas numa rede de VPC partilhada, tem de especificar o parâmetro subnetwork
com uma sub-rede que tenha autorização para usar.
O exemplo seguinte mostra como executar o pipeline a partir da linha de comandos ou através da API REST. O exemplo especifica uma sub-rede. Também pode especificar a rede.
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 estiver a executar um modelo do Dataflow através da API REST,
adicione network
ou subnetwork
, ou ambos, ao objeto 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"
}
}
Substitua o seguinte:
JOB_NAME
: o nome da sua tarefa do Dataflow (apenas API)INPUT_PATH
: o caminho para a sua fonteHOST_PROJECT_ID
: o ID do projeto anfitriãoREGION
: uma região do Dataflow, comous-central1
STORAGE_BUCKET
: o contentor de armazenamentoSUBNETWORK_NAME
: o nome da sua sub-rede do Compute Engine
Desative um endereço IP externo
Para desativar um endereço IP externo, consulte o artigo Configure o acesso à Internet e as regras da firewall.