我正在跟踪快速入门链接以运行数据流作业 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运行数据流作业的权限,还是应该使用服务帐户?
任何人都可以告诉我在生产环境中运行数据流作业的最佳方法。
关于, 帕里
答案 0 :(得分:0)
因此,您将必须授予VM的Dataflow管理员权限才能运行Dataflow作业。此外,如果您的数据流工作涉及BigQuery,则您必须提供BigQuery编辑器角色,依此类推。
您还可以创建服务帐户并提供运行作业所需的角色。 希望这会有所帮助。
答案 1 :(得分:0)
要提供精细的访问权限,您可以利用Dataflow Roles:
当您有一个需要自动执行Dataflow作业而无需用户干预的自动化应用程序时,建议使用服务帐户。
实际上,要在生产环境中部署它,我建议创建一个自动过程来部署和执行管道,这是我的建议,您可以利用基于Apache Airflow的Cloud Composer,并且可以启动数据流作业(composer 1.0.0 or later in supported Dataflow regions)。
答案 2 :(得分:0)
如果使用的是气流,请创建一个有权访问数据流中使用的组件的服务帐户,并在气流UI中创建具有必需范围的连接。完成后,使用DataflowJavaOperator / DataflowTemplateOperator提交作业并通过气流进行编排
如果您需要进一步的帮助,请对此答案发表评论。