Google cloud platform 服务帐户有;“计算管理”;权限,但错误表明需要compute.instances.list

Google cloud platform 服务帐户有;“计算管理”;权限,但错误表明需要compute.instances.list,google-cloud-platform,google-cloud-functions,google-compute-engine,Google Cloud Platform,Google Cloud Functions,Google Compute Engine,我的目标是定期唤醒/关闭GCE实例 我设置了“云调度器”和“云函数”,如链接中所述 接下来,我测试了云函数,然后报告了以下错误 Error: function crashed. Details: Required 'compute.instances.list' permission for 'projects/[project-id]' 因此,我向云功能使用的服务帐户添加了“Compute Admin”权限,但报告了相同的错误 Error: function crashed. Detail

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

我设置了“云调度器”和“云函数”,如链接中所述

接下来,我测试了云函数,然后报告了以下错误

Error: function crashed. Details:
Required 'compute.instances.list' permission for 'projects/[project-id]'
因此,我向云功能使用的服务帐户添加了“Compute Admin”权限,但报告了相同的错误

Error: function crashed. Details:
Required 'compute.instances.list' permission for 'projects/[project-id]'
此外,我更改了VM实例的策略,允许云API使用任何API,但它不起作用


有办法解决此问题吗?

GCF使用两个服务帐户:

  • 云功能服务帐户
  • 运行时服务帐户
云功能服务帐户
服务项目_NUMBER@gcf-admin robot.iam.gserviceaccount.com
用于创建/更新/删除函数

另一方面,运行时服务帐户
项目_ID@appspot.gserviceaccount.com,应用程序引擎默认服务帐户
函数用于在运行时访问其他GCP资源


因此,您需要将
Compute Admin
添加到运行时服务帐户。

GCF使用两个服务帐户:

  • 云功能服务帐户
  • 运行时服务帐户
云功能服务帐户
服务项目_NUMBER@gcf-admin robot.iam.gserviceaccount.com
用于创建/更新/删除函数

另一方面,运行时服务帐户
项目_ID@appspot.gserviceaccount.com,应用程序引擎默认服务帐户
函数用于在运行时访问其他GCP资源


因此,您需要将
Compute Admin
添加到运行时服务帐户。

函数和GCE在同一个项目中?您将Compute Admin角色分配给了错误的服务帐户。默认情况下,云功能使用App Engine默认服务帐户。角色
roles/compute.admin
具有
compute.instances.list
。重新创建这些函数,然后它们运行。(但实例不会停止。)@yutaaa您是否确保VM实例位于云函数所在的同一项目和区域?我已经能够按照指南的要求,使用订阅发布/子主题的函数成功启动/停止VM。函数和GCE在同一个项目中?您已将Compute Admin角色分配给错误的服务帐户。默认情况下,云功能使用App Engine默认服务帐户。角色
roles/compute.admin
具有
compute.instances.list
。重新创建这些函数,然后它们运行。(但实例不会停止。)@yutaaa您是否确保VM实例位于云函数所在的同一项目和区域?我已经能够按照指南成功地启动/停止具有订阅发布/订阅主题的函数的VM。可能存在错误。我在创建函数后第一次将权限分配给了正确的SA,然后它就不起作用了。但是,我重新创建了这些函数,然后它们就运行了。(但实例不会停止。)可能有一个bug。我在创建函数后第一次将权限分配给了正确的SA,然后它就不起作用了。但是,我重新创建了函数,然后它们就运行了(但实例不会停止)