【问题标题】:Cannot send POST data to Lambda无法将 POST 数据发送到 Lambda
【发布时间】:2017-08-31 12:36:34
【问题描述】:

我正在尝试向我的 lambda 函数发送数据,但是该函数没有获取我的数据,event 变量为空。我没有收到任何错误,当我在我的 API Gateway 中测试该功能时,它工作正常。所以我不确定发生了什么。我向 Lambda 发送数据的代码如下。

var options = { 
    method: 'POST', 
    url: 'correct api url', 
    contentType: "application/json",
    dataType: "json",
    data: s
}

data: s 在我的控制台中看起来像这样data: '{"article_url":"a url here"}'

知道问题出在哪里吗?

【问题讨论】:

  • 您使用的是直通还是特定的 API 网关映射模板?如果您有映射模板,请将其包含在您的问题中。
  • @MarkB 没有模板,所以我认为这是通过
  • 您是否将整个事件对象发送到日志并验证它是否完全为空?
  • @MarkB 更正整个事件为空

标签: node.js post aws-lambda


【解决方案1】:

在“集成请求”配置中,确保您已选中“使用 Lambda 代理集成”复选框。

并确保您的输出与此处定义的架构相匹配以避免错误:

http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html#api-gateway-simple-proxy-for-lambda-output-format

{
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headerName": "headerValue", ... },
    "body": "..."
}

【讨论】:

  • 当我这样做时,我收到错误Execution failed due to configuration error: Malformed Lambda proxy response
  • 这是我从 lambda 函数 callback(null, {"statusCode": 200, "body": JSON.stringify(response.sentences)}); 的回调,是否缺少标头,为什么它说 JSON 格式错误?
  • 这可能是问题所在。您将需要标头指示您的有效负载是 application/json
  • ok 将其更改为测试,但仍然收到错误 Execution failed due to configuration error: Malformed Lambda proxy response 我的测试响应是 callback(null, {"statusCode": 200, headers: {"Content-Type": "application/json"}, "body": {'testing':'test'}});
  • 正文不是有效的 JSON 字符串。尝试对 {testing} 对象进行字符串化。
猜你喜欢
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
相关资源
最近更新 更多