从 Compute Engine 调用 Cloud Function
Calling Cloud Function from Compute Engine
我正在尝试从 Compute Engine 实例上的节点服务器 运行 调用 HTTP 触发的 Cloud Function。
我已将计算引擎的服务帐户设置为所述函数的调用者,并且作为计算引擎实例的函数都在同一 VPC 网络上运行。
然而,每次我尝试从我的节点服务器调用该函数时,我都会收到默认的 403 Forbidden 错误。但是,如果我将 Cloud Function 中的调用规则设置为 "allUsers",则调用成功。
编辑:我是 运行 docker 容器上的节点服务器。
对正在发生的事情有什么想法吗?
非常感谢。
编辑(解决方案):
所以我正在寻找的解决方案得到了解释 here. Even though the sample code for which the above link points to might help someone, I found it more useful to follow this 指南(服务帐户 JSON 证书),它指向可以用来获取请求中提供的 OIDC 令牌的代码函数(请记住,创建令牌时必须将受众设置为函数的 url)。
有了上述 OIDC 令牌,只需通过以下格式传递 header 授权,就可以使用普通 HTTP 请求调用云功能:授权:Bearer {OIDC 令牌}。
如有任何关于此的问题,请随时post,我会尽量一一解答。
再次感谢 petomalina 指出正确的方向。
如果您同时调用函数到函数或服务到函数,则需要一个自签名的 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
我正在尝试从 Compute Engine 实例上的节点服务器 运行 调用 HTTP 触发的 Cloud Function。 我已将计算引擎的服务帐户设置为所述函数的调用者,并且作为计算引擎实例的函数都在同一 VPC 网络上运行。 然而,每次我尝试从我的节点服务器调用该函数时,我都会收到默认的 403 Forbidden 错误。但是,如果我将 Cloud Function 中的调用规则设置为 "allUsers",则调用成功。
编辑:我是 运行 docker 容器上的节点服务器。
对正在发生的事情有什么想法吗?
非常感谢。
编辑(解决方案):
所以我正在寻找的解决方案得到了解释 here. Even though the sample code for which the above link points to might help someone, I found it more useful to follow this 指南(服务帐户 JSON 证书),它指向可以用来获取请求中提供的 OIDC 令牌的代码函数(请记住,创建令牌时必须将受众设置为函数的 url)。
有了上述 OIDC 令牌,只需通过以下格式传递 header 授权,就可以使用普通 HTTP 请求调用云功能:授权:Bearer {OIDC 令牌}。
如有任何关于此的问题,请随时post,我会尽量一一解答。 再次感谢 petomalina 指出正确的方向。
如果您同时调用函数到函数或服务到函数,则需要一个自签名的 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