You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloud Dataflow网络配置报错:缺少合规防火墙规则

解决Dataflow自定义子网下的防火墙规则报错问题

我之前也碰到过一模一样的问题——当指定自定义子网运行Dataflow作业时,即使加了--network参数,还是会触发这个防火墙规则错误。核心原因是:Dataflow Worker之间需要通过TCP 1-65535端口进行内部通信,但你的自定义子网/网络上没有配置符合要求的防火墙规则,而且默认的Dataflow自动创建规则不会自动关联到非默认网络。

下面是具体的解决步骤:

1. 手动创建符合要求的防火墙规则

你需要为自定义网络test创建一条允许内部Dataflow Worker通信的防火墙规则,规则需要满足:

  • 允许TCP 1-65535端口的流量
  • 目标标签设置为dataflow(或者留空,但建议用标签更精准)
  • 关联到你的自定义网络test
  • 源范围覆盖私有IP段(Dataflow Worker会使用这些段)

执行以下gcloud命令创建规则:

gcloud compute firewall-rules create dataflow-internal-communication \
  --network=test \
  --allow=tcp:1-65535 \
  --source-ranges=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 \
  --target-tags=dataflow \
  --description="Allow internal TCP communication between Dataflow workers"

2. 确认代码和命令行的网络配置一致

检查你的配置是否存在以下问题:

  • 代码中指定了subnetwork = 'regions/europe-west1/subnetworks/test',确保这个子网确实属于你命令行指定的--network 'test'网络
  • 如果子网属于其他项目,需要使用完整的资源路径:projects/other-project/regions/europe-west1/subnetworks/test
  • 建议在代码中也显式设置network选项,避免命令行参数和代码配置不一致:
    p_options.view_as(WorkerOptions).network = 'test'
    

3. 验证防火墙规则是否生效

执行以下命令检查规则是否正确关联到你的网络:

gcloud compute firewall-rules list --filter="network:test AND targetTags:dataflow"

确认输出中存在你刚创建的规则,并且ALLOW列显示tcp:1-65535,SOURCE_RANGES包含私有IP段。

额外提示:权限问题

如果之前尝试让Dataflow自动创建规则但失败,可能是你的Dataflow服务账号缺少compute.firewallRules.create权限。你可以给服务账号添加roles/compute.networkAdmin角色(或者更精细的权限),不过手动创建规则更可控,避免权限过大的问题。

做完这些步骤后,重新提交Dataflow作业,应该就能解决这个报错了。

内容的提问来源于stack exchange,提问作者Rim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:34:13