Amazon web services python中API网关格式不正确的Lambda代理响应

Amazon web services python中API网关格式不正确的Lambda代理响应,amazon-web-services,aws-lambda,aws-api-gateway,python-3.7,aws-serverless,Amazon Web Services,Aws Lambda,Aws Api Gateway,Python 3.7,Aws Serverless,我用serverless创建了一个lambda函数。我用lambda控制台测试了我的lambda函数,效果很好。但我在转换之前得到了端点响应正文:null,由于配置错误,执行失败:当我尝试调用此函数的API端点时,Lambda代理响应格式错误 这是我的无服务器.yml org: orgname app: appname service: report provider: name: aws runtime: python3.7 stage: ${opt:stage,'dev'} tim

我用serverless创建了一个lambda函数。我用lambda控制台测试了我的lambda函数,效果很好。但我在转换之前得到了端点响应正文:null,由于配置错误,执行失败:当我尝试调用此函数的API端点时,Lambda代理响应格式错误

这是我的无服务器.yml

org: orgname
app: appname
service: report

provider:
 name: aws
 runtime: python3.7
 stage: ${opt:stage,'dev'}
 timeout: 120

role: arn:aws:iam::xxxxxxxx:role/rolexxxx

plugins:
 - serverless-python-requirements

functions:
 reportgen:
  handler: xlsx_generator.main
  events:
   - http:
      path: main
      method: get
      cors: true

custom:
 pythonRequirements:
  dockerizePip: true

package:
  exclude:
    - node_modules/**
    - venv/**
这是xlsx_generator.py的片段:

def main(event, context):
    log.basicConfig(level=log.DEBUG)

    if "queryStringParameters" in event.keys() and 'start_date' in event["queryStringParameters"].keys():
        if "end_date" in event["queryStringParameters"].keys():
            end_date = event["queryStringParameters"]['end_date']
        else:
            end_date = event["queryStringParameters"]['start_date']
        try:
            generate(event["queryStringParameters"]['start_date'],
                     end_date,
                     event["queryStringParameters"]['output'])
        except (ClientError, Exception, RuntimeError) as e:
            raise e
    else:
        body = json.dumps({
            "message": "Missing parameter",
            "event": event
        })
        return {
            "isBase64Encoded": False,
            "statusCode": 400,
            "headers": {
                "Access-Control-Allow-Origin": '*'
            },
            "body": body
        }
我通过添加查询字符串参数来调用我的端点:
?start_date=2019-11-1&end_date=2019-11-30&output=reporthugree.xlsx


我不知道为什么当我的函数已经返回了来自的格式的响应时,我仍然得到格式错误的Lambda代理响应。我对整个AWS问题还不熟悉,请向我解释是否有什么问题。

事实证明,我的主函数handler函数不包含来自generate函数的返回值,因此lambda会给出null值作为响应。当集成代理尝试将此空响应转换为API网关响应时,此空响应将导致错误的lambda代理响应。激活Lambda proxy integration时,请确保您的函数始终根据返回有效的响应格式。这会节省你的时间

我发现我的问题有点重复