我正在尝试使用Gradle在Java中创建数据流。我创建了一个gradle任务,用于通过DataflowRunner
将作业上传到GCP并通过environment "GOOGLE_APPLICATION_CREDENTIALS", "....json"
设置我的凭据,但是当我查看该作业时,所看到的只是:
Workflow failed. Causes: There was a problem refreshing your credentials. Please check:
1. Dataflow API is enabled for your project.
2. There is a robot service account for your project:
service-[project number]@dataflow-service-producer-prod.iam.gserviceaccount.com
should have access to your project.
If this account does not appear in the permissions tab for your project, contact Dataflow support.
我已经确保为我的项目启用了数据流API,并且该服务帐户存在并且具有editor
和Cloud Dataflow Service Agent
角色。我已经在getting started
页面上对我的代码和示例代码进行了测试,同样的问题。
答案 0 :(得分:0)
在新GCP项目中首次使用Dataflow时,需要启用API(快速入门中的第3步),这可能需要几分钟。在此步骤中,创建了两个service accounts:
Cloud Dataflow服务帐户: service-<project-number>@dataflow-service-producer-prod.iam.gserviceaccount.com
。
控制器服务帐户: <project-number>-compute@developer.gserviceaccount.com
。
第一个帐户是错误帐户。我认为您尚未启用Dataflow API或在启用API的同时执行了作业。正如您提到的那样,验证步骤是,nex步骤是检查默认服务帐户是否已被修改,例如,它们是重新创建的还是默认权限已更改。这些修订也适用于Controller服务帐户。
此外,请不要忘记将the proper permissions分配给执行Dataflow作业的帐户。
更新:
如果问题仍然存在,则说明服务帐户很可能已损坏,在这种情况下,建议使用新的服务帐户或Contact Cloud Support创建一个新的GCP项目。
答案 1 :(得分:0)