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

如何在HTTP API Gateway自定义Lambda授权器中获取请求体?

HTTP API Gateway自定义Lambda授权器获取请求体的解决方案

HTTP API Gateway的Lambda授权器默认(Payload版本1.0)确实只会传递请求头、路径等元数据,不会包含请求体——你遇到的情况是正常的,Amazon Q的说法混淆了HTTP API和REST API Gateway的差异。要获取请求体,可按以下方法处理:

  • 切换到Payload版本2.0
    在HTTP API Gateway的授权器配置页面,将Payload版本设置为2.0。切换后,Lambda授权器收到的事件对象会包含body字段(如果请求有体的话),同时附带isBase64Encoded标识用来判断是否需要解码。

    示例Python处理代码:

    import base64
    import json
    
    def lambda_handler(event, context):
        # 解析请求体
        raw_body = event.get('body')
        if not raw_body:
            # 无请求体的情况处理
            return {"isAuthorized": False}
        
        # 处理Base64编码的请求体
        if event.get('isBase64Encoded'):
            decoded_body = base64.b64decode(raw_body).decode('utf-8')
            body_data = json.loads(decoded_body)
        else:
            body_data = json.loads(raw_body)
        
        # 这里编写你的授权校验逻辑,比如检查body中的特定字段
        if body_data.get('valid_token') == 'authorized':
            return {
                "isAuthorized": True,
                "context": {"user_id": body_data.get('user_id')}
            }
        else:
            return {"isAuthorized": False}
    
  • 注意限制

    • Payload版本2.0仅适用于HTTP API Gateway,REST API的授权器逻辑不适用此设置。
    • 请求体大小不能超过Lambda的事件负载限制(当前为6MB),如果请求体过大,需要考虑先通过集成将请求体存储到S3,再在授权器中读取,但这种方式会增加架构复杂度和延迟。
    • 切换到2.0后,事件结构会变化,比如原1.0中的headers字段会移到requestContext.http.headers下,需要适配原有授权代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:42:43