我试图调用一个云函数,该函数通过以下方式关闭VM实例:
gcloud functions call stopInstancePubSub --data '{"data":"<instance data in base64>"}' 当我从本地机器或gcloud控制台运行它时,它工作得非常好。但是我需要能够从实例本身运行它,当我尝试这样做时,就会抛出这个错误:
ERROR: (gcloud.functions.call) ResponseError: status=[403], code=[Forbidden], message=[Request had insufficient authentication scopes.]本质上,我希望能够安排一个脚本每天运行(它将运行2-3个小时)。因此,我使用云调度器调用云函数,该函数每天12点启动脚本,它可以工作,但我需要能够在脚本运行完成后关闭实例(以避免不必要的费用增加)。因此,我需要能够从实例本身调用函数。
任何其他的建议,以实现我的目标,将不胜感激。
发布于 2019-12-11 21:48:08
我相信您必须允许完全访问作为服务帐户链接运行的实例上的所有Cloud。
然后将必要的角色分配给服务帐户,以调用云函数( roles /cloudfunctions.invoker)。
若要更改作用域,请在“访问范围”部分中,为您的需要设置适当的作用域。作为最佳实践,只指定VM实例所需的访问范围。如果您不确定要设置哪些适当的访问范围,请选择“允许完全访问所有Cloud”,然后通过设置IAM角色确保限制访问。
https://stackoverflow.com/questions/59292665
复制相似问题