如何解决Google Cloud Dataflow部署时cloudservices机器人账户缺失问题
解决Terraform部署Dataflow Job报错:缺少cloudservices机器人账户
问题重现
之前成功用Terraform在Google Cloud部署google_dataflow_job资源,Dataflow API也已启用多年,但当前执行terraform plan时抛出以下错误:
Error: Error when reading or editing Dataflow job 2020-10-07_06_20_01-18099947630909311965: googleapi: Error 400: (10a8bef84dbdde13): There is no cloudservices robot account for your project. Please ensure that the Dataflow API is enabled for your project., failedPrecondition
解决方案
cloudservices机器人账户格式为service-<项目编号>@gcp-sa-dataflow.iam.gserviceaccount.com,需手动添加该账户并配置必要权限,步骤如下:
1. 获取项目编号
通过gcloud命令查询你的项目编号:
gcloud projects describe <你的项目ID> --format="value(projectNumber)"
2. 创建服务账户并绑定Dataflow角色
执行命令创建该服务账户(若尚未存在):
gcloud iam service-accounts create service-<项目编号> --display-name="Dataflow Cloudservices Robot"
为账户赋予Dataflow服务代理角色:
gcloud projects add-iam-policy-binding <你的项目ID> \ --member="serviceAccount:service-<项目编号>@gcp-sa-dataflow.iam.gserviceaccount.com" \ --role="roles/dataflow.serviceAgent"
3. 重置Dataflow API(可选)
若上述操作后仍报错,可尝试先禁用再重新启用Dataflow API,触发GCP自动生成所需服务账户:
gcloud services disable dataflow.googleapis.com sleep 60 gcloud services enable dataflow.googleapis.com
4. 验证账户添加结果
执行命令检查账户是否已成功添加:
gcloud iam service-accounts list --project <你的项目ID> | grep gcp-sa-dataflow
完成以上步骤后,重新执行terraform plan即可解决该报错。
内容的提问来源于stack exchange,提问作者Miloune
相关产品推荐
相关产品推荐

