我是Google云计算和评估dataproc集群的新手,核心要求之一就是动态创建集群并处理作业。对于各种文档读取和link,我尝试通过创建服务帐户并添加以“ Dataproc Editor”开头的角色。
我生成了密钥文件并激活了服务帐户
gcloud auth activate-service-account --key-file=<Key File>
并尝试创建集群
gcloud beta dataproc clusters create jill-cluster \
--enable-component-gateway \
--subnet default \
--zone europe-west3-b \
--region europe-west3 \
--master-machine-type n1-standard-4 \
--master-boot-disk-size 50 \
--num-workers 2 \
--worker-machine-type n1-standard-4 \
--worker-boot-disk-type pd-ssd \
--worker-boot-disk-size 100 \
--image https://compute.googleapis.com/compute/v1/projects/poc/global/images/poc-1-5-1-debina10 \
--scopes 'https://www.googleapis.com/auth/cloud-platform' \
--project poc \
--verbosity info \
--autoscaling-policy=poc-auto-scale-policy \
--service-account=<Service account>
我收到此错误
{
"code": 403,
"message": "Not authorized to requested resource.",
"status": "PERMISSION_DENIED"
}
并且我开始向服务帐户添加更多角色,并最终显示如下,但仍然无法创建集群。我不太确定自己想念的是什么。我尝试了命令行以及程序化方法,结果相同。不幸的是,我也无法从日志记录中获得足够的线索。
首先要澄清的是,尽管Dataproc的“工作者”和Dataproc的创建者/用户可以相同,但它们通常不是相同的身份。因此,如果您打算将服务帐户用于create Dataproc群集,则Dataproc Editor
是正确的,但是如果您还打算使群集本身具有服务帐户的身份,则需要授予服务帐户也具有Dataproc Worker
角色:https://cloud.google.com/dataproc/docs/concepts/iam/dataproc-principals
由于您似乎正在使用自定义图像,因此,如果您按照creating a Dataproc custom image的高级说明进行操作,则可能还必须为您的服务帐户授予Compute Image User role。
最后,除此之外,您可能需要检查service-[project-number]@dataproc-accounts.iam.gserviceaccount.com格式的服务帐户,如果您的项目是在2019年9月之前创建的,那么也要检查旧版[project-number]@cloudservices.gserviceaccount.com
服务帐户。如果这些仅具有Dataproc Service Agent
角色,它们可能还需要您将Compute Image user role
添加到那些中才能使用自定义图像。