我正在尝试调用一个云函数,该函数使用以下命令关闭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函数,并且该函数可以工作,但是我需要能够在脚本完成运行后关闭实例(以避免添加不必要的费用) 。因此,我需要能够从实例本身内部调用该函数。
任何其他实现我目标的建议将受到高度赞赏。
答案 0 :(得分:2)
我相信您必须允许对以服务帐户link运行的实例上的所有Cloud API进行完全访问。
然后将必要的角色分配给服务帐户,以调用云功能(roles / cloudfunctions.invoker)。
要更改范围,请在“访问范围”部分中设置适当的 您需要的范围。最佳做法是,仅指定访问权限 VM实例所需的作用域。如果您不确定 要设置适当的访问范围,请选择“允许完全访问所有云” API,然后确保通过设置IAM角色来限制访问。