AWS.HttpClient handleRequest在AWS Lambda中不起作用

时间:2020-03-09 22:57:17

标签: javascript node.js elasticsearch aws-lambda elasticsearch-query

我正在用handleRequest搜索Node.Js的lambda函数中使用AWS HttpClient aws sdk来搜索ElasticSearch url。我正在关注AWS文档。

https://docs.amazonaws.cn/en_us/elasticsearch-service/latest/developerguide/es-request-signing.html

请查看下面的代码块。在那个控制台日志中 仅记录{},并且根本不调用handle Request方法。

var client = new AWS.HttpClient();
//logs only {}
console.log("client", client);

//Not being called and no logs at all
client.handleRequest(request, null, function(response) {
    console.log(response.statusCode + ' ' + response.statusMessage);
    var responseBody = '';
    response.on('data', function (chunk) {
    responseBody += chunk;
    });
    response.on('end', function (chunk) {
    console.log('Response body: ' + responseBody);
    });
    }, function(error) {
     console.log('Error: ' + error);
   });
}

1 个答案:

答案 0 :(得分:0)

在aws-sample here中遵循示例代码时,我遇到了同样的问题。似乎该存储库现在处于孤立状态,没有人维护它。

我对HttpClient无法按预期工作的原因感兴趣。我的环境是Lambda nodejs 12.x,aws-sdk版本应为2.x
解决方案:
1.不要使用异步处理程序。将其替换为同步功能。
2.如果您坚持使用Async,请在建立与Elastic search的HTTP连接的函数之前放置 await

一篇很好的文章来解释:https://levelup.gitconnected.com/avoiding-the-pitfalls-of-async-node-js-functions-in-aws-lambda-941220582e7a

您也可以改用“ elasticsearch”。点击this链接以获取更多信息。