You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS API Gateway中使用统一Python文件管理Lambda处理器?

单个Python文件实现多Lambda处理器的两种方案

完全可以用单个Python文件管理所有API Gateway对应的Lambda业务逻辑,有两种常见实现方式,根据需求选择即可:

方案一:多个Lambda函数共享同一代码包,指定不同处理函数

  1. 编写单个Python文件(比如命名为api_handlers.py),在里面定义所有需要的处理函数:
def handle_get_users(event, context):
    # 处理GET /users的业务逻辑
    return {
        "statusCode": 200,
        "body": "返回用户列表数据"
    }

def handle_create_user(event, context):
    # 处理POST /users的业务逻辑
    return {
        "statusCode": 201,
        "body": "用户创建成功"
    }

def handle_delete_user(event, context):
    # 处理DELETE /users/{id}的业务逻辑
    user_id = event["pathParameters"]["id"]
    return {
        "statusCode": 200,
        "body": f"ID为{user_id}的用户已删除"
    }
  1. 将这个文件打包成ZIP包(如果有第三方依赖,要把依赖一起打包到根目录)。
  2. 创建多个Lambda函数,每个函数上传同一个ZIP包,然后在**Lambda控制台的“配置”→“常规配置”→“处理程序”**里指定不同的函数名:
    • 对应GET /users的Lambda:设置处理程序为api_handlers.handle_get_users
    • 对应POST /users的Lambda:设置处理程序为api_handlers.handle_create_user
  3. 在API Gateway里,把每个端点分别集成到对应的Lambda函数即可。

这种方式的好处是每个Lambda可以独立配置内存、超时时间和权限,适合不同端点资源需求差异较大的场景。

方案二:单个Lambda函数内部路由,统一处理所有请求

如果不想维护多个Lambda函数,可以用一个主入口函数,根据API Gateway的请求信息(比如HTTP方法、路径)路由到对应的处理函数:

  1. 编写Python文件(比如api_router.py):
def main_handler(event, context):
    # 从API Gateway的事件中获取请求方法和路径
    http_method = event["requestContext"]["http"]["method"]
    path = event["requestContext"]["http"]["path"]

    # 根据方法和路径路由到对应处理函数
    if http_method == "GET" and path == "/users":
        return handle_get_users(event, context)
    elif http_method == "POST" and path == "/users":
        return handle_create_user(event, context)
    elif http_method == "DELETE" and path.startswith("/users/"):
        return handle_delete_user(event, context)
    else:
        return {
            "statusCode": 404,
            "body": "请求路径或方法不支持"
        }

# 下面是各个业务处理函数
def handle_get_users(event, context):
    return {"statusCode": 200, "body": "用户列表"}

def handle_create_user(event, context):
    return {"statusCode": 201, "body": "用户创建成功"}

def handle_delete_user(event, context):
    user_id = event["pathParameters"]["id"]
    return {"statusCode": 200, "body": f"用户{user_id}已删除"}
  1. 打包ZIP后上传到单个Lambda函数,把处理程序设置为api_router.main_handler。
  2. 在API Gateway里,把所有需要的端点都集成到这个Lambda函数即可。

这种方式的优势是只需要维护一个Lambda函数,部署一次就能覆盖所有端点,适合业务逻辑相对简单、资源需求统一的场景。

打包注意事项

如果你的代码用到第三方库(比如requests、boto3以外的包),需要先把依赖安装到当前目录再打包:

# 安装依赖到当前目录
pip install 依赖包名 -t .
# 打包所有文件
zip -r api_handlers.zip .

内容的提问来源于stack exchange,提问作者Joymaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 14:33:28