您的位置 首页 知识分享

使用 API Gateway HTTP API 解决 Go Lambda 函数中的空路径问题

将基于 / 的 http api 部署到 aws lambda 时,您可能会遇到 apigatewayprox…

将基于 / 的 http api 部署到 aws lambda 时,您可能会遇到 apigatewayproxyrequest 中的路径属性为空的问题。发生这种情况是因为 lambda 函数正在从 api gateway http api (v2) 接收事件,与 rest api (v1) 相比,它使用不同的事件结构。

问题

apigatewayproxyrequest 是为较旧的 rest api 设计的,与 http api 一起使用时将导致空路径字段。解决方案是使用正确的事件结构:apigatewayv2httprequest.

解决方案

切换到使用 apigatewayv2httprequest 结构,其中包含 rawpath 字段以正确处理路由。

他们文档中的原始代码(不起作用):

package main  import (     "context"     "github.com/aws/aws-lambda-go/events"     "github.com/aws/aws-lambda-go/lambda" )  func handler(ctx context.context, event events.apigatewayproxyrequest) (events.apigatewayproxyresponse, error) {     response := events.apigatewayproxyresponse{         statuscode: 200,         body:       ""hello from lambda!"",     }     return response, nil }  func main() {     lambda.start(handler) } 
登录后复制

这是更新的 lambda 函数示例:

package main  import (     "github.com/aws/aws-lambda-go/events"     "github.com/aws/aws-lambda-go/lambda" )  func handler(request events.APIGatewayV2HTTPRequest) (*events.APIGatewayV2HTTPResponse, error) {     if request.RawPath == "/health" {         return &events.APIGatewayV2HTTPResponse{             StatusCode: 200,             Body:       "Health check passed",         }, nil     }     return &events.APIGatewayV2HTTPResponse{         StatusCode: 404,         Body:       "Not Found",     }, nil }  func main() {     lambda.Start(handler) } 
登录后复制

部署您的 lambda

  1. 将 lambda 函数部署到 aws。
  2. 在 api gateway 中创建 http api 并将其与您的 lambda 函数集成。
  3. 测试端点:向 /health 发送请求应该返回成功消息,而任何其他路径都会返回 404。

结论

切换到 apigatewayv2httprequest 可解决使用 api gateway http api (v2) 时 lambda 函数中的空路径问题。请务必测试您的端点以确保路径路由按预期工作。

源自 hub 问题:

https://github.com/aws/aws-lambda-go/issues/60

以上就是使用 API Gateway HTTP API 解决 Go Lambda 函数中的空路径问题的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表甲倪知识立场,转载请注明出处:http://www.spjiani.cn/wp/6894.html

作者: nijia

发表评论

您的电子邮箱地址不会被公开。

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部