Google Compute Engine写入/读取元数据

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

尝试从计算引擎实例(从实例内部)向计算引擎实例添加元数据时遇到了问题。

在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
google-cloud-platform google-compute-engine service-accounts
2个回答
2
投票

有两个可能导致此错误的问题:

  1. 您的VM实例没有所需的范围。
  2. 您的服务帐户没有所需的IAM角色。

计算引擎的默认服务帐户只具有编辑角色。但是,这经常被改变,所以我指定了一个两步过程来解决这个问题。

您需要关闭实例以更改实例的设置。

  • 转到计算引擎 - > VM实例。
  • 关闭您的实例。
  • 单击您的实例。
  • 单击顶部的“编辑”按钮。
  • 向下滚动到底部,然后单击“为每个API设置访问权限”。
  • 向下滚动到“计算引擎”
  • 将权限更改为“读写”。
  • 单击“保存”并启动实例。

请注意,VM实例“Cloud API访问范围”无法为您的服务帐户所没有的VM实例提供权限。如果您仍然有相同的错误消息,则需要将角色roles/iam.serviceAccountUser添加到您的服务帐户。

  • 走IAM与管理 - > IAM
  • 找到您的服务帐户。位于右侧的是铅笔图标。点击它。
  • 单击“添加另一个角色”
  • 向下滚动到服务帐户。选择服务帐户用户。
  • 单击“保存”。
  • 返回到计算引擎 - > VM实例并启动您的实例。

0
投票

当我将roles/iam.serviceAccountUser添加到我的服务帐户时,它可以工作。由于用户是服务帐户(User == ServiceAccount),我不明白为什么我必须添加此角色?

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