为了账号安全,请及时绑定邮箱和手机立即绑定

将 golang 服务器应用程序移植到 aws lambda + api 网关

将 golang 服务器应用程序移植到 aws lambda + api 网关

Go
POPMUISE 2022-07-11 15:20:55
我正在尝试将运行小型 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、apex/gateway的这个插入式替换存储库,但我认为我错过了让它工作的基本步骤。我所做的是下载和导入库import (    ...        "github.com/apex/gateway/v2")然后只需替换 main、zip 中的函数并上传到 aws lambdafunc 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 函数。它不起作用。我想我错过了一些东西,但我不知道是什么。从apex/gateway repo 上的示例中,我看不出我缺少什么。该应用程序是Tinygraphs fwiw。谢谢编辑:根据 Adrians 的评论,当我转到 api 链接时,我得到{"message":"Not Found"}
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

嘿用户我相信你不了解 API Gateway 和 Lambda 是如何正常工作的


您不需要在 8080 上设置路由监听,这实际上是 API Gateway 正在执行的操作,然后将请求转发到在 lambda 上运行的代码。通常采用这种格式:


package main


import (

        "fmt"

        "context"

        "github.com/aws/aws-lambda-go/lambda"

)


type MyEvent struct {

        Name string `json:"name"`

}


func HandleRequest(ctx context.Context, name MyEvent) (string, error) {

        return fmt.Sprintf("Hello %s!", name.Name ), nil

}


func main() {

        lambda.Start(HandleRequest)

}


查看完整回答
反对 回复 2022-07-11
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

是一个非常愚蠢的错误。

我将 api 路径定义为 / 而不是 /{proxy+},因此它不接受非 root url,而调用 url 是这样的: https://XXXXXXXX.execute-api.us-east-1。 amazonaws.com/squares/tinygraphs?theme=frogideas&numcolors=4&size=220&fmt=svg

感谢所有看到这个的人。

(关于端口,根据this,指定的端口只是被gateway.ListenAndServe忽略)


查看完整回答
反对 回复 2022-07-11
  • 2 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号