集成lambda函数或根据api网关拆分lambda http代码



我正在设置一个aws-apigateway lambda,我是该服务的新手。

我想知道如何使用lambda获取单个方法(POST、GET…)?

例如,

  1. 每个http方法创建单个lambda函数

GET api.com->lambda.api.GET

POST api.com->lambda.api.POST

  1. 一个lambda函数和Accept all方法
  1. GET、POST、DELETE。。。api.com->lambda.api
def lambda_function(event,context):
method = event["http-method"]
if method == 'GET': return receive_get()
elif method == 'POST': return receive_post()

哪种方式是有效的??

如果您考虑一个流量相等的两个lambda函数,并且加热的容器数量大致相同,那么两个lambda的处理时间大致相等。因此,它实际上取决于lambda服务的流量模式。例如,我们考虑两种情况:

  1. 如果您的服务没有正常流量,您将不得不旋转容器以保持lambda的温度。但在这种情况下,如果你有不同的lambda,那么你将有两个lambda函数的升温负担。

  2. 您的服务有正常的流量,那么lambda中就没有太多的冷启动问题,并且只有一个或两个lambda在处理方面不会有太大的差异,除非同时包含这两个方法会使您的代码过于广泛和繁重,从而使lambda容器的旋转更加耗时。但在正常的获取和发布方法的情况下,情况并非如此。

所以,基本上你必须决定在同一个lambda中同时包含get和post方法是否会让你的代码变得沉重。如果它这样做,这可能会增加启动新lambda容器的时间。当您使用python时,它增加的冷启动时间非常少,最好将两个方法放在同一个lambda中。

对于与lambda冷启动相关的问题,您可以查看以下内容:

  • https://www.robertvojta.com/aws-journey-api-gateway-lambda-vpc-performance/
  • 如何保持所需数量的AWS Lambda功能容器的温度

最新更新