无法使用服务帐户创建dataproc集群

问题描述 投票:0回答:1

我是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"
}

并且我开始向服务帐户添加更多角色,并最终显示如下enter image description here,但仍然无法创建集群。我不太确定自己想念的是什么。我尝试了命令行以及程序化方法,结果相同。不幸的是,我也无法从日志记录中获得足够的线索。

google-cloud-platform google-cloud-dataproc
1个回答
0
投票

首先要澄清的是,尽管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添加到那些中才能使用自定义图像。

© www.soinside.com 2019 - 2024. All rights reserved.