首页 > 解决方案 > 每个 api 网关 http 代码的集成 lambda 函数或拆分 lambda

问题描述

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

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

为实例,

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

获取 api.com -> lambda.api.get

POST api.com -> lambda.api.post

  1. 一个 lambda 函数和 Accept all 方法
  1. 获取、发布、删除... 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()

哪种方法有效??

标签: pythondesign-patternsaws-lambdaaws-api-gateway

解决方案


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

  1. 如果您的服务没有定期流量,您将不得不启动容器以保持您的 lambda 温暖。但是在这种情况下,如果您有不同的 lambda,那么您将负担加热两个 lambda 函数的负担。

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

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

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


推荐阅读