从Compute Engine运行数据流作业

时间:2018-07-14 09:21:28

标签: google-cloud-platform google-compute-engine google-cloud-dataflow apache-beam

我正在跟踪快速入门链接以运行数据流作业 https://cloud.google.com/dataflow/docs/quickstarts/quickstart-java-maven

当我从Google Cloud Shell运行mvn命令时,效果很好。

  mvn compile exec:java \
      -Dexec.mainClass=com.example.WordCount \
      -Dexec.args="--project=<my-cloud-project> \
      --stagingLocation=gs://<my-wordcount-storage-bucket>/staging/ \
      --output=gs://<my-wordcount-storage-bucket>/output \
      --runner=DataflowRunner"

但是,当我尝试启动VM并从中运行命令时,出现权限被拒绝错误。 如果我授予对VM的完全API访问权限,则命令将成功运行。

我应该授予VM运行数据流作业的权限,还是应该使用服务帐户?

任何人都可以告诉我在生产环境中运行数据流作业的最佳方法。

关于, 帕里

3 个答案:

答案 0 :(得分:0)

因此,您将必须授予VM的Dataflow管理员权限才能运行Dataflow作业。此外,如果您的数据流工作涉及BigQuery,则您必须提供BigQuery编辑器角色,依此类推。

您还可以创建服务帐户并提供运行作业所需的角色。 希望这会有所帮助。

答案 1 :(得分:0)

要提供精细的访问权限,您可以利用Dataflow Roles

  • 开发人员。执行和操作数据流作业。
  • 查看器。对Dataflow相关资源的只读访问权限
  • 工人。为服务帐户提供执行数据流管道工作单元的权限。

当您有一个需要自动执行Dataflow作业而无需用户干预的自动化应用程序时,建议使用服务帐户。

实际上,要在生产环境中部署它,我建议创建一个自动过程来部署和执行管道,这是我的建议,您可以利用基于Apache Airflow的Cloud Composer,并且可以启动数据流作业(composer 1.0.0 or later in supported Dataflow regions)。

答案 2 :(得分:0)

如果使用的是气流,请创建一个有权访问数据流中使用的组件的服务帐户,并在气流UI中创建具有必需范围的连接。完成后,使用DataflowJavaOperator / DataflowTemplateOperator提交作业并通过气流进行编排

如果您需要进一步的帮助,请对此答案发表评论。