尝试从计算引擎实例(从实例内部)向计算引擎实例添加元数据时遇到了问题。
在IAM中,我使用Compute Instance Admin(v1)角色[email protected]
创建了一个特定的服务帐户
实例化VM时,我指定以前的服务帐户:[email protected]
当我将ssh连接到VM时,我可以看到该帐户已设置为正确的服务帐户。
gcloud config list
[core]
account = [email protected]
disable_usage_reporting = True
project = test-project
Your active configuration is: [default]
然后,当我尝试向我的VM添加元数据(来自VM本身)时,我收到此错误。
gcloud compute instances add-metadata --metadata "start=true" --zone europe-
west1-b <INSTANCE_NAME>
ERROR: (gcloud.compute.instances.add-metadata) Could not fetch resource:
- The user does not have access to service account '[email protected]'. U
ser: '[email protected]'. Ask a project owner to grant you the iam.service
AccountUser role on the service account
有两个可能导致此错误的问题:
计算引擎的默认服务帐户只具有编辑角色。但是,这经常被改变,所以我指定了一个两步过程来解决这个问题。
您需要关闭实例以更改实例的设置。
请注意,VM实例“Cloud API访问范围”无法为您的服务帐户所没有的VM实例提供权限。如果您仍然有相同的错误消息,则需要将角色roles/iam.serviceAccountUser
添加到您的服务帐户。
当我将roles/iam.serviceAccountUser
添加到我的服务帐户时,它可以工作。由于用户是服务帐户(User == ServiceAccount),我不明白为什么我必须添加此角色?