【问题标题】:A service account has "Compute Admin" permission but an error says that compute.instances.list is needed服务帐户具有“计算管理员”权限,但错误提示需要 compute.instances.list
【发布时间】:2019-09-06 23:31:38
【问题描述】:

我的目标是定期唤醒/关闭 GCE 实例。

https://cloud.google.com/scheduler/docs/start-and-stop-compute-engine-instances-on-a-schedule

我按照链接中的说明设置了“Cloud Scheduler”和“Cloud Functions”。

接下来我测试了Cloud Function,然后报如下错误。

Error: function crashed. Details:
Required 'compute.instances.list' permission for 'projects/[project-id]'

于是我在Cloud Function使用的服务账号中添加了“Compute Admin”权限,但还是报了同样的错误。

此外,我更改了 VM 实例的策略以允许 Cloud API 使用任何 API,但它不起作用。

有没有办法解决这个问题?

【问题讨论】:

  • Function 和 GCE 在同一个项目中?
  • 您将计算管理员角色分配给了错误的服务帐户。 Cloud Functions 默认使用 App Engine 默认服务帐户。角色roles/compute.admin 具有compute.instances.list。
  • 重新创建这些函数,然后它们运行。(但实例不会停止。)
  • @yutaaa 您是否确保 VM 实例与 Cloud Functions 位于同一项目和区域中?我已经能够按照指南成功启动/停止具有订阅 Pub/Sub 主题的功能的 VM。

标签: google-cloud-platform google-cloud-functions google-compute-engine


【解决方案1】:

GCF 使用了两个服务帐号:

  • Cloud Functions 服务帐号
  • 运行时服务帐号

Cloud Functions 服务帐号service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com 用于创建/更新/删除函数。

另一方面,运行时服务帐户PROJECT_ID@appspot.gserviceaccount.com, App Engine default service account 被函数用来在运行时访问其他 GCP 资源。

所以您需要将Compute Admin 添加到运行时服务帐户。

【讨论】:

  • 可能存在错误。我在创建函数后第一次将权限分配给正确的 SA,然后它不起作用。但是,我重新创建了函数,然后它们运行了。(但实例不会停止。)
猜你喜欢
  • 2018-11-16
  • 2021-08-12
  • 2020-06-19
  • 2014-05-31
  • 2011-07-10
  • 2021-05-10
  • 1970-01-01
  • 2019-08-17
  • 1970-01-01
相关资源
最近更新 更多