Запросить POST-запрос AWS Lambda HTTP (Node.js)

Я относительно новичок в функции lambda AWS и nodejs. Я работаю над тем, чтобы попытаться получить список из 5 городов в стране, используя HTTP-запрос POST с этого веб-сайта: « http://www.webservicex.net/globalweather.asmx?op=GetCitiesByCountry »

Я искал, как выполнить запрос HTTP POST в lambda-функции, но я не могу найти для этого хорошего объяснения. Любая помощь, которую я бы оценил. Извините за мой английский. Спасибо.

Поиски, которые я нашел для http post:

https://www.npmjs.com/package/http-post Как сделать запрос HTTP POST в node.js?

Попробуйте следующий пример, вызывая HTTP GET или POST-запрос в nodejs из AWS lambda

const options = { hostname: 'hostname', port: port number, path: urlpath, method: 'method type' }; const req = https.request(options, (res) => { res.setEncoding('utf8'); res.on('data', (chunk) => { // code to execute }); res.on('end', () => { // code to execute }); }); req.on('error', (e) => { callback(null, "Error has occured"); }); req.end(); 

Рассмотрим образец

Используйте объект HTTP и используйте POST в качестве типа запроса. HTTP-запросы в AWS Lambda ничем не отличаются от HTTP-запросов с использованием NodeJS.

Дайте мне знать, если вам нужна дополнительная помощь.

Мне не удалось выполнить другие ответы, поэтому я отправляю то, что сработало для меня.

В этом случае функция получает url, path и post data

Лямбда-функция

 var querystring = require('querystring'); var http = require('http'); exports.handler = function (event, context) { var post_data = querystring.stringify( event.body ); // An object of options to indicate where to post to var post_options = { host: event.url, port: '80', path: event.path, method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': Buffer.byteLength(post_data) } }; // Set up the request var post_req = http.request(post_options, function(res) { res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('Response: ' + chunk); context.succeed(); }); res.on('error', function (e) { console.log("Got error: " + e.message); context.done(null, 'FAILURE'); }); }); // post the data post_req.write(post_data); post_req.end(); } 

Пример параметров вызова

  { "url": "example.com", "path": "/apifunction", "body": { "data": "your data"} <-- here your object }