只有当Dataflow作业执行成功时,我才想触发Cloud Function。
如果Dataflow作业失败,则不应触发Cloud Function。
我正在使用Dataflow UI中的Dataflow模板(jdbc到BigQuery(运行Dataflow作业。
在作业执行后,没有触发任何云功能或其他功能的选项。此外,我无法更改模板代码。触发Cloud Function的方法是什么?
目前还没有为此构建它的功能,但我可以提出一个解决方法。
- 转到云日志并转到高级过滤器(或新UI(
- 输入此筛选器
resource.type="dataflow_step"
textPayload="Worker pool stopped."
- 然后创建接收器(操作-在新UI中创建接收器(
- 选择PubSub作为接收目标(为此创建一个新主题(
- 保存
- 然后将主题链接到您的云函数(可以通过推送订阅HTTP触发的云函数,也可以通过主题触发的云功能
像这样,每次数据流作业结束时,都会向PubSub发布一条新消息,并触发您的云功能。
我以前也做过类似的事情。
https://beam.apache.org/releases/javadoc/2.5.0/org/apache/beam/sdk/PipelineResult.html
PipelineResult result = pipeline.run();
State s = result.waitUntilFinish();
if (s.compareTo(State.DONE) == 0)
return callCloudFunction();
然后,您可以设置由http请求触发的云功能。https://cloud.google.com/functions/docs/calling/http
当Dataflow完成时,您可能会发现触发云函数的此功能请求非常有用。
可以通过命令行确定数据流作业是失败还是成功。您可以列出作业并检查其当前状态,例如,要检查单个作业,您可以运行:
gcloud beta dataflow jobs describe <JOB_ID>
JDBC到BigQuery模板的源代码可以在GitHub上找到。如果需要进行任何特定的更改,您可以始终创建一个自定义模板。