在云数据流中指定网络的问题

Rim*_*Rim 7 vpc google-cloud-dataflow apache-beam

我没有配置项目,并且每次运行我的作业时都会收到此错误“网络默认设置没有打开 TCP 端口 1-65535 以与其他 VM 进行内部连接的规则。仅具有目标标记“数据流”或空目标标记集的规则适用。如果您不指定这样的规则,则任何具有多于一个工作人员来混洗数据的管道都将挂起。原因:没有与您的网络关联的防火墙规则。'

google_cloud_options = p_options.view_as(GoogleCloudOptions)
google_cloud_options.region = 'europe-west1'
google_cloud_options.project = 'my-project'
google_cloud_options.job_name = 'rim'
google_cloud_options.staging_location = 'gs://my-bucket/binaries'
google_cloud_options.temp_location = 'gs://my-bucket/temp'
p_options.view_as(StandardOptions).runner = 'DataflowRunner'
p_options.view_as(SetupOptions).save_main_session = True
p_options.view_as(StandardOptions).streaming = True
p_options.view_as(WorkerOptions).subnetwork = 'regions/europe-west1/subnetworks/test'
p = beam.Pipeline(options=p_options)
Run Code Online (Sandbox Code Playgroud)

我试图在命令行中指定 --network 'test' 因为它不是默认配置 在此处输入图片说明

Ale*_*ato 8

看起来您的默认防火墙规则已被修改,并且数据流检测到了这一点并阻止了您的作业启动。你能确认你的防火墙规则没有在你的项目中被修改吗?请查看此处文档。您还将在此处找到一个命令来恢复防火墙规则:

gcloud compute firewall-rules create [FIREWALL_RULE_NAME] \
    --network [NETWORK] \
    --action allow \
    --direction ingress \
    --target-tags dataflow \
    --source-tags dataflow \
    --priority 0 \
    --rules tcp:1-65535
Run Code Online (Sandbox Code Playgroud)

为防火墙选择一个名称,并提供一个网络名称。然后在启动数据流作业时使用 --network 传递网络名称。如果您有一个名为“默认”的网络,数据流将尝试自动使用它,因此您无需传入 --network。如果您已删除该网络,您可能希望重新创建它。