【问题标题】:Google cloud dataflow java API not reading other project's pubsub topic谷歌云数据流 java API 不读取其他项目的 pubsub 主题
【发布时间】:2017-12-04 04:33:23
【问题描述】:

我只有一个主题是在生产项目中创建的。我想在需要使用生产 pubsub 主题的开发环境中运行我的数据流作业。当我在开发项目中提交我的数据流作业时,它不工作,它总是显示在数据流 UI 中运行,但没有从 pubsub 读取任何元素。如果我提交到生产项目,它会完美运行。

为什么它不读取来自不同项目主题的消息?我正在使用 java-sdk 2.1,运行器是“dataflowrunner”

PCollection<String> StreamData = p.apply("Read pubsub message",PubsubIO.readStrings().fromSubscription(options.getInputPubSub()));

使用mvn提交数据流作业

mvn compile exec:java -Dexec.mainClass=dataflow.streaming.SampleStream  -Dexec.args="—project=project-dev-1276 --stagingLocation=gs://project-dev/dataflow/staging --tempLocation=gs://project-dev/dataflow/bq_temp  --zone=europe-west1-c  --bigQueryDataset=stream_events --bigQueryTable=events_sample --inputPubSub=projects/project-prod/subscriptions/stream-events --streaming=true --runner=dataflowRunner"

注意:如果我使用的是 directrunner,它可以工作并使用来自不同项目 pubsub 主题的消息。

队列中没有添加任何元素,也没有估计大小。

【问题讨论】:

  • 您解决了这个问题吗?

标签: google-cloud-dataflow google-api-java-client google-cloud-pubsub dataflow apache-beam-io


【解决方案1】:

您需要在生产项目中为您的工作将使用的用户(服务帐户)添加Pub/Sub Subscriber 权限。默认情况下,工作人员使用您项目的 Compute Engine 服务帐户作为控制器服务帐户。此服务帐户 (&lt;project-number&gt;-compute@developer.gserviceaccount.com) 应授予 Pub/Sub Subscriber 权限。

在此处阅读更多信息 https://cloud.google.com/dataflow/docs/concepts/security-and-permissions 和此处 https://cloud.google.com/pubsub/docs/access-control

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-10
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 2014-08-11
    相关资源
    最近更新 更多