我已经设置了一个名为的计算实例,以便使用具有以下角色的服务帐户在Google compute engine上运行cronjob:Custom Compute Image User + Deletion rights Compute Admin Compute Instance Admin (beta) Kubernetes Engine Developer Logs Writer Logs Viewer Pub/Sub Editor Source Repository Reader Storage Admin
不幸的是,当我ssh进入这个cronjob运行器实例,然后运行:
sudo gcloud compute --project {REDACTED} instances create e-latest \
--zone {REDACTED} --machine-type n1-highmem-8 --subnet default \
--maintenance-policy TERMINATE \
--scopes https://www.googleapis.com/auth/cloud-platform \
--boot-disk-size 200 \
--boot-disk-type pd-standard --boot-disk-device-name e-latest \
--image {REDACTED} --image-project {REDACTED} \
--service-account NAME_OF_SERVICE_ACCOUNT \
--accelerator type=nvidia-tesla-p100,count=1 --min-cpu-platform Automatic
我得到以下错误:
用户无权访问服务帐户{NAME_OF_SERVICE_ACCOUNT}。用户:{NAME_OF_SERVICE_ACCOUNT}。请求项目所有者授予您服务帐户的iam.serviceAccountUser角色。
除了计算实例管理员之外,我还需要其他权限才能使用实例创建实例吗?
进一步注意:(1)当我尝试不指定--service-account
时,除了我的用户无权访问的服务帐户是默认的'51958873628-compute@developer.gserviceaccount.com'.之外,错误是相同的(2)添加/删除sudo不会改变任何事情
发布于 2018-06-07 04:18:17
创建使用服务帐户的实例需要您对该服务帐户具有compute.instances.setServiceAccount权限。为此,请将iam.serviceAccountUser角色授予您的服务帐户(在整个项目上或在您希望能够用来创建实例的特定服务帐户上)。
发布于 2020-07-22 04:29:27
首先找出你是谁
gcloud
或terraform
:查找包含您的gcloud凭据的json文件(通常命名类似于myproject*.json
),并查看它是否包含<代码>E19电子邮件<代码>E210:jsonGCP IAM更改
#en0# to >转到https://console.cloud.google.com
Service Account User
-> Addin the Role name中的类型
(您可以使用条件来缩小范围,但让它保持简单一段时间)。
发布于 2020-08-08 14:04:22
确保NAME_OF_SERVICE_ACCOUNT是来自当前项目的服务帐户。
如果您更改了项目ID,但没有更改NAME_OF_SERVICE_ACCOUNT,那么您将会遇到此错误。
这可以在Google Console -> IAM & Admin -> IAM上查看。然后查找服务名称...-compute@developer.gserviceaccount.com并检查开头的数字是否正确。每个项目在此服务名称中将具有不同的编号。
https://stackoverflow.com/questions/50721729
复制相似问题