首页 > 解决方案 > 从 Compute Engine 调用 Cloud Functions

问题描述

我正在尝试从在 Compute Engine 实例上运行的节点服务器调用 HTTP 触发的云函数。我已将计算引擎的服务帐户设置为上述函数的调用者,并且作为计算引擎实例的函数都在同一个 VPC 网络上运行。但是,每次尝试从节点服务器调用该函数时,都会收到默认的 403 Forbidden 错误。但是,如果我将 Cloud Function 中的调用规则设置为“allUsers”,则调用成功。

编辑:我在 docker 容器上运行节点服务器。

关于正在发生的事情有什么想法吗?

提前非常感谢。

编辑(解决方案):

所以这里解释了我正在寻找的解决方案。尽管上述链接指向的示例代码可能对某人有所帮助,但我发现遵循指南(服务帐户 JSON 证书)更有用,该指南指向的代码可以用于获取在请求中提供所需的 OIDC 令牌函数(请记住,创建令牌时的受众必须设置为函数的 url)。

有了前面提到的 OIDC 令牌,就可以使用普通的 HTTP 请求调用云函数,只需按以下格式传递标头 Authorization:授权:Bearer {OIDC 令牌}。

如有任何问题,请随时发布,我会尽力回答所有问题。再次感谢 petomalina 指出了正确的方向。

标签: google-cloud-platformgoogle-cloud-functionsgoogle-compute-engine

解决方案


如果您同时调用 Function-to-Function 或 Service-to-Function,您将需要一个自签名 JWT,例如从无权访问计算元数据的计算实例。

请参阅此文档以了解服务到功能:https ://cloud.google.com/functions/docs/securing/authenticating#service-to-function

这里还有一个关于程序身份验证的示例:https ://cloud.google.com/iap/docs/authentication-howto#authenticating_from_a_service_account


推荐阅读