google-cloud-platform - 从 Compute Engine 调用 Cloud Functions
问题描述
我正在尝试从在 Compute Engine 实例上运行的节点服务器调用 HTTP 触发的云函数。我已将计算引擎的服务帐户设置为上述函数的调用者,并且作为计算引擎实例的函数都在同一个 VPC 网络上运行。但是,每次尝试从节点服务器调用该函数时,都会收到默认的 403 Forbidden 错误。但是,如果我将 Cloud Function 中的调用规则设置为“allUsers”,则调用成功。
编辑:我在 docker 容器上运行节点服务器。
关于正在发生的事情有什么想法吗?
提前非常感谢。
编辑(解决方案):
所以这里解释了我正在寻找的解决方案。尽管上述链接指向的示例代码可能对某人有所帮助,但我发现遵循本指南(服务帐户 JSON 证书)更有用,该指南指向的代码可以用于获取在请求中提供所需的 OIDC 令牌函数(请记住,创建令牌时的受众必须设置为函数的 url)。
有了前面提到的 OIDC 令牌,就可以使用普通的 HTTP 请求调用云函数,只需按以下格式传递标头 Authorization:授权:Bearer {OIDC 令牌}。
如有任何问题,请随时发布,我会尽力回答所有问题。再次感谢 petomalina 指出了正确的方向。
解决方案
如果您同时调用 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
推荐阅读
- c++ - 如何配置 LLDB 以跳过 std::function 实现细节?
- javascript - 控制台中的角度对象输出“未定义”。无法将数据输入前端
- regex - 正则表达式搜索小数点后的数字
- reactjs - 对于使用 CORS 的 create-react-app 构建的 React 应用程序,如何将 localhost:3000 更改为“custom.domain.dev”
- python - 在 for 循环中分配变量名称
- nlp - 如何检查子动词 obj 三元组的真实性?
- angular - 如何以编程方式扩展primeng树表
- angular - Angular Material多对象拖放与调整大小问题
- docker-compose - 使用网格和 DNSRR 的 Docker 群网络延迟
- javascript - 在 v-data-table 中显示来自 Api 的数据,对象内的对象 vue js,vuetify