AWS .HttpClient handleRequest не работает в AWS lambda - PullRequest
1 голос
/ 10 марта 2020

Я использую AWS HttpClient handleRequest внутри лямбда-функции, написанной в Node.Js, используя aws sdk для поиска URL-адреса ElasticSearch. Я следую документации 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);
   });
}

1 Ответ

0 голосов
/ 10 марта 2020

У меня возникла та же проблема, когда я следовал примеру кода в aws -Sample здесь Кажется, что хранилище сейчас находится в неактивном состоянии, и никто его не поддерживает.

Меня интересует причина, по которой HttpClient работает не так, как ожидалось. Моя среда Lambda nodejs 12.x и aws -sdk версия должна быть 2.x Решение: 1. Не используйте обработчик Asyn c. Замените его функцией Syn c. 2. Если вы настаиваете на использовании Asyn c, поставьте await перед функцией, где установлено HTTP-соединение с поиском Elasti c.

Хорошая статья для объяснения: https://levelup.gitconnected.com/avoiding-the-pitfalls-of-async-node-js-functions-in-aws-lambda-941220582e7a

Вместо этого вы также можете использовать'asticsearch '. Для получения дополнительной информации перейдите по ссылке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...