从命令行部署时,gcp 云函数返回 404

如果我在控制台中部署示例 hello world ,则 url/trigger 有效。如果我从命令行部署,它看起来与云功能控制台中的代码/属性完全相同,但 url 是 404。我无法发现差异/问题。


如果从命令行以这种方式部署,则部署的触发器/url 显示以下 hello world 示例的“404 page not found”。


gcloud functions deploy hellogo --entry-point=HelloWorld --trigger-http --region=us-central1 --memory=128MB --runtime=go116 --allow-unauthenticated

// Package p contains an HTTP Cloud Function.

package p


import (

    "encoding/json"

    "fmt"

    "html"

    "io"

    "log"

    "net/http"

)


// HelloWorld prints the JSON encoded "message" field in the body

// of the request or "Hello, World!" if there isn't one.

func HelloWorld(w http.ResponseWriter, r *http.Request) {

    var d struct {

        Message string `json:"message"`

    }


    if err := json.NewDecoder(r.Body).Decode(&d); err != nil {

        switch err {

        case io.EOF:

            fmt.Fprint(w, "Hello World!")

            return

        default:

            log.Printf("json.NewDecoder: %v", err)

            http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest)

            return

        }

    }


    if d.Message == "" {

        fmt.Fprint(w, "Hello World!")

        return

    }

    fmt.Fprint(w, html.EscapeString(d.Message))

}


眼眸繁星
浏览 73回答 2
2回答

四季花海

试图重现您的错误,但我无法复制。我使用了与您相同的命令,并且可以成功访问 url 或通过 HTTP 调用触发部署的 hello world 云功能。gcloud functions deploy hellogo --entry-point=HelloWorld --trigger-http --region=us-central1 --memory=128MB --runtime=go116 --allow-unauthenticated成功卷曲的输出:我建议您根据此 GCP文档检查您尝试访问的网址:如果您尝试调用不存在的函数,Cloud Functions 会使用 HTTP/2 302 重定向进行响应,该重定向会将您带到 Google 帐户登录页面。这是不正确的。它应该以 HTTP/2 404 错误响应代码进行响应。问题正在得到解决。解决方案确保正确指定函数的名称。您始终可以使用 gcloud 函数调用进行检查,该函数调用会为缺少的函数返回正确的 404 错误。您还可以参考此完整指南,以使用 Go 运行时快速启动 CF 创建和部署。

波斯汪

我陷入困境的项目中的代码不仅仅是这个函数。在尝试在更大的项目中部署单个函数/文件后,我走上了这条路。如果我简化为仅包含 a 的文件夹,hello.go并且go.mod确实可以:-/ 从命令行部署它:gcloud functions deploy hellogo --entry-point=HelloWorld --trigger-http --region=us-central1 --memory=128MB --runtime=go116 --allow-unauthenticated// go.modmodule github.com/nickfoden/hellogo 1.16感谢您的快速回复和帮助。而不是尝试在现有项目中创建具有更大 go.sum、多个文件夹、现有服务器/api 等的单个函数。我将从这里开始,拥有一个具有云功能的单个文件并在其之上构建并查看什么点/如果我再次卡住。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go