【问题标题】:AWS.HttpClient handleRequest is not working in AWS lambdaAWS.HttpClient handleRequest 在 AWS lambda 中不起作用
【发布时间】:2020-06-21 20:48:00
【问题描述】:

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

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

请看下面的代码块。在那一个控制台日志 仅记录 {} 并且根本不调用句柄请求方法。

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);
   });
}

【问题讨论】:

  • 请发布您的完整代码。

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


【解决方案1】:

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

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

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

您也可以改用“elasticsearch”。关注this链接了解更多信息。

【讨论】:

  • 非常感谢杰森。等待是我所缺少的,您的回答在艰难时期确实有所帮助。谢谢各位。
  • 您好!抱歉,我不明白await 应该去哪里。 var client = await new AWS.HttpClient();await client.handleRequest(...) 都不起作用?
猜你喜欢
  • 2020-12-02
  • 2019-04-14
  • 2023-03-26
  • 2019-06-19
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 2019-06-20
相关资源
最近更新 更多