【发布时间】:2018-12-15 11:19:56
【问题描述】:
我在 Python 3.6 中创建了一个 lambda 函数来将少量记录返回到 API 网关。根据documentation的返回标准必须是:
{
"isBase64Encoded" : "boolean",
"statusCode": "number",
"headers": { ... },
"body": "JSON string"
}
但是,我需要返回从列表中缓存并解析为 JSON 格式的数据,以便以所需的格式返回,但它没有通过,显然,我无法将变量分配给 body:
def lambda_handler(event, context):
if event["httpMethod"] == "GET":
param1 = event["queryStringParameters"]["param1"]
param2 = event["queryStringParameters"]["param2"]
info = redshift_get_output(param1,param2)
payload = json.dumps(info)
print(payload)
outcome = {
"isBase64Encoded": 'false',
"statusCode": 200,
"headers": { "header": "headerValue" },
"body": payload
}
return outcome
当我像这样运行它时,我会在我的 API Gateway 执行中收到成功消息,但正文不包含任何内容:(
请有人知道我该如何解决这个问题。非常感谢
【问题讨论】:
-
print(payload)是否向 Lambda 日志写入任何内容? -
不,这不仅仅是为了验证我真的得到了我需要的字符串,但似乎我无法在变量中发送我的 json 数据,它必须是硬编码的:(
-
我想不出它为什么不起作用。我认为您的变量恰好包含空数组的 JSON 表示。将其记录在 Lambda 日志中,然后进行验证。
-
@Michael-sqlbot 实际上这就是为什么我得到一个先前的打印来验证它没有变空,它不是所以我真的不知道为什么 API 不能打印它。
-
我之前问过你,
print(payload)是否记录了任何内容,你说没有,但现在你说是。是记录还是不记录?
标签: python-3.x amazon-web-services aws-lambda api-gateway