一分耕耘,一分收获!既然打开了这篇文章《API 网关 -> Go Lambda 参数》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!
问题内容我正在努力将 api gateway 正确连接到我配置的简单 go lambda。
lambda 是一个非常简单的函数,例如:
func foo(bar string) (string, error) {
return fmt.Println(bar)
}
func main() {
lambda.Start(foo)
}
我可以执行一个值为“helloworld”的简单测试事件,它会按预期返回。
但是,我似乎不知道如何设置 api 网关以允许我只调用 /helloworld 或 ?bar=helloworld 并让它返回。我知道我可以使用 events.apigatewayproxyrequest 作为参数并返回 events.apigatewayproxyresponse,但是没有其他方法吗?这样做似乎让我只能通过 api 网关访问这个函数,这看起来很愚蠢。
解决方案
您的 lambda 函数应具有有效签名,以便由 api gateway 或任何其他事件源触发。对于 api gateway,您的 lambda 函数处理程序将如下所示:
func handler(ctx context.Context, request events.APIGatewayProxyRequest (events.APIGatewayProxyResponse, error) {
}
您可以从 request
获取参数,使用适当的参数调用 foo
函数并返回 apigatewayproxyresponse。这样,您的 foo
函数仅执行其应该执行的操作,并且对 aws 事件一无所知,并且您的 handler
函数负责与 api gateway 进行通信。
今天关于《API 网关 -> Go Lambda 参数》的内容介绍就到此结束,如果有什么疑问或者建议,可以在编程网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!