问题描述
我从我的 ML 模型创建了一个 Google Cloud 函数。它与函数的 GCP 站点上的谷歌“测试”配合良好:
测试截图
该函数托管了 2 次,一次通过身份验证 (Google IAM),第二次未通过身份验证
认证方式
如果我现在想调用该函数,例如在邮递员中,没有身份验证的版本工作正常。 但是有了身份验证,就无法弄清楚如何实现这一点。
如何使用受限 API 密钥访问云功能?`
解决方法
您无法直接使用 API 密钥调用您的函数。您需要实现一个代理层来检查您的 API 密钥并使用 OAuth2 授予的身份令牌执行请求。为此,您可以使用 Cloud Endpoint 或其全新的无服务器实现 API Gateway。我wrote an article on Cloud Endpoint,您可以在 API Gateway 上重复使用它。
如果仅用于 Postman 和您的测试,您可以使用 GCLOUD CLI 生成令牌
gcloud auth print-identity-token
复制结果并将其添加到请求的标题中
Authorization: Bearer <token>
对 1H 有效。执行您的测试,当它过期时,生成一个新的并继续。
我也wrote a small tool for this。使用 Postman 执行预调用以获取令牌,然后如前所述在您的请求中使用它
,要使用 postman 对云函数进行身份验证调用,您需要 jwt_token。
- 首先创建服务帐号
- 授予 Cloud 函数调用者访问此 SA 的权限
- 生成 JWT
memcpy()