Google Cloud身份验证范围不足以调用云功能

时间:2019-12-11 19:21:26

标签: google-cloud-platform google-cloud-functions google-cloud-pubsub google-cloud-scheduler

我正在尝试调用一个云函数,该函数使用以下命令关闭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 AM启动脚本的cloud函数,并且该函数可以工作,但是我需要能够在脚本完成运行后关闭实例(以避免添加不必要的费用) 。因此,我需要能够从实例本身内部调用该函数。

任何其他实现我目标的建议将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

我相信您必须允许对以服务帐户link运行的实例上的所有Cloud API进行完全访问。

然后将必要的角色分配给服务帐户,以调用云功能(roles / cloudfunctions.invoker)。

  

要更改范围,请在“访问范围”部分中设置适当的   您需要的范围。最佳做法是,仅指定访问权限   VM实例所需的作用域。如果您不确定   要设置适当的访问范围,请选择“允许完全访问所有云”   API,然后确保通过设置IAM角色来限制访问。