403来自Google Cloud Functions的响应

时间:2018-09-27 14:32:53

标签: google-cloud-platform google-cloud-functions

尝试从网络执行Cloud Function端点时收到以下错误:

<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
  <title>Error 403 (Forbidden)!!1</title>
  <style>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5pxno-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
  </style>
  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
  <p><b>403.</b> <ins>That’s an error.</ins>
  <p>Access is forbidden.  <ins>That’s all we know.</ins>

我遵循了本教程:https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/functions/helloworld/main.py

当按以下说明调用函数时:https://cloud.google.com/functions/docs/writing/http,我收到403错误。我已登录gcloud项目并使用了正确的用户。

部署命令:

gcloud beta functions deploy hello_get --runtime python37 --trigger-http

来自此文档:https://cloud.google.com/functions/docs/concepts/python-runtime

使用以下命令调用它: curl -X POST https://<REGION-PROJECT_ID>.cloudfunctions.net/hello_get

来自此文档:https://cloud.google.com/functions/docs/writing/http

这很奇怪,因为这大约是在3周前开始的。旧功能停止工作并返回403响应。我在UI中部署了示例函数,该函数仅在从UI部署时有效,但在通过http请求到达端点时失败,并显示403。

此外,使用命令gcloud functions call hello_get

时,函数成功执行

过去两周中GCF身份验证是否发生了变化?

更新 我能够找出问题所在。我参与的项目和用户处于beta身份验证程序中。切换到不在程序中的用户和项目后,我便能够访问端点。

谢谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我浏览了更多与同一错误相关的帖子。他们中的大多数建议检查this链接以获得许可。还提到使用this文档使用稳定版本进行部署,然后重试。始终建议不要使用beta,直到需要任何beta标志才能使用该命令。在执行此操作之前,请确保您使用的是current版的Google Cloud SDK。有一点还不清楚,如果您用于在UI中部署同样应该使用端点的功能。

答案 1 :(得分:0)

在我看来,其他IAM功能已添加到Google Cloud Functions中,因此,您可能尚未打开allUser对功能的访问权限(仅供参考,这使整个网络都可以访问)。

  1. 在Cloud Functions主页上,突出显示要添加所有访问权限的Cloud Function。

  2. 单击右上角的“显示信息面板”。

  3. 单击“添加成员”并键入“ allUsers”,然后在“角色”框中的“云功能”下选择“云功能调用者”。

  4. 单击“保存”