amazon-web-services - python中的API网关格式错误的Lambda代理响应
问题描述
我用无服务器创建了一个 lambda 函数。我用 lambda 控制台测试了我的 lambda 函数,它运行良好。但是我在转换之前得到端点响应正文:null 并且由于配置错误而执行失败:当我尝试为此函数调用我的 API 端点时,Lambda 代理响应格式错误。
这是我的 serverless.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 问题不熟悉,如果有问题请向我解释。
解决方案
推荐阅读
- wordpress - 更改标签文本(搜索和过滤 wordpress 插件)
- r - 按组 R 计算列中的值
- bash - GIT如何正确拉入SH?
- html - 如何在 Vue.js 中将 datepicker 的下拉面板置于顶部?
- regex - 用于在 PowerShell 中查找相似字符串的 RegEx
- sql - 客户订单总价值 1
- python - 像字典一样索引 NumPy 数组
- c# - 无法使用 aspnet_regsql 连接到 SQL 数据库进行缓存依赖注册
- macos - 无法在 MacOS 应用程序中创建新目录
- angular - NGRX store.dispatch() 循环中的同步/异步调用