【发布时间】:2021-02-09 18:29:57
【问题描述】:
我正在尝试将运行小型 golang 应用程序的服务器移植到 AWS Lambda。我对 golang 不是很熟悉,要部署到我刚刚按照 repo 中的说明进行部署的服务器。
它运行一个带有net/http的服务器,main.go如下:
func main() {
r := new(route.Router)
r.HandleFunc("/squares", squares.Random)
// ... more Handlers
log.Println("Listening on " + os.Getenv("PORT"))
err := http.ListenAndServe(":"+os.Getenv("PORT"), r)
if err != nil {
log.Fatal("ListenAndServe:", err)
}
}
现在我在 Github 上为 ListenAndServe 找到了这个插入式替换 repo,apex/gateway,但我认为我错过了让它发挥作用的基本步骤。
我所做的是下载和导入库
import (
...
"github.com/apex/gateway/v2"
)
然后简单地替换 main 中的函数,压缩并上传到 aws lambda
func main() {
r := new(route.Router)
r.HandleFunc("/squares", squares.Random)
// ... more Handlers
// log.Println("Listening on 8080")
err := gateway.ListenAndServe(":8080", r)
if err != nil {
log.Fatal("ListenAndServe:", err)
}
}
然后我设置了一个 http API 网关并链接到 lambda 函数。
它不起作用。我想我错过了一些东西,但我不知道是什么。从example on the apex/gateway repo,我看不出我缺少什么。
应用程序是Tinygraphs fwiw。
谢谢
编辑: 根据 Adrians 的评论,当我转到 api 链接时,我得到了
{"message":"Not Found"}
【问题讨论】:
-
发布时,提供更多关于问题的详细信息而不是“它不起作用”会很有帮助。具体是什么问题?你有错误吗?如果是这样,错误是什么?如果不是,你是如何确定它不起作用的?究竟发生了什么?
-
“内部服务器错误”表示您需要查看后端日志。 AWS Lambda 日志或 API Gateway 日志以查看实际错误是什么。如果没有这些信息,任何人都只能猜测问题所在。
-
正确的错误是 {"message":"Not Found"},对不起
标签: amazon-web-services go aws-lambda