#node.js #aws-lambda #localhost #aws-serverless #serverless-plugins
#node.js #aws-lambda #localhost #aws-бессерверный #бессерверные плагины
Вопрос:
Я запускаю api на http://localhost:80/api/test , я хочу вызвать этот api из лямбда-функции, но я не уверен, какой плагин или что-либо еще я должен использовать для доступа к нему.Причина этого в том, что я хочу провести тестирование lambda и api на этапе разработки
Комментарии:
1. Если API запущен на вашей машине разработки, рассмотрите возможность переноса его также на AWS или выделенный сервер, иначе вам потребуется подключить Lambda к вашей машине разработки для доступа к API (не рекомендуется, если только на очень ранней стадии отладки / разработки)
2. функция, запущенная в aws lambda, не может получить доступ к вашему локальному хосту. Вам нужно поместить его в общедоступное место. Вы можете сделать свой компьютер общедоступным и указать его на свой IP-адрес, но вам, вероятно, будет проще просто использовать экземпляр ec2 или что-то с конвейером разработки. Если вы разрабатываете свой api и lambda параллельно и не хотите постоянно загружать каждое обновление в облако, запустите свой lambda локально с помощью чего-то вроде aws sam
3. проверьте ngrok, который будет передавать трафик из общедоступного разрешаемого домена на ваш локальный компьютер
4. Вот пошаговое руководство , в котором объясняется, как вызвать API, работающий из AWS Lambda в Node
Ответ №1:
Я использовал https://ngrok.com / чтобы решить эту проблему.
Ниже приведена команда для localhost
URL-адресов https. Вы можете заменить номер порта 3000
на свой номер порта.
ngrok http https://localhost:3000 -host-header="localhost:3000"
Ниже приведена моя лямбда-функция:
var https = require('https');
exports.testJob = (event, context, callback) => {
var params = {
host: "90abcdef.ngrok.io",
path: "/api/test"
};
var req = https.request(params, function(res) {
let data = '';
console.log('STATUS: ' res.statusCode);
res.setEncoding('utf8');
res.on('data', function(chunk) {
data = chunk;
});
res.on('end', function() {
console.log("DONE");
console.log(JSON.parse(data));
});
});
req.end();
};
Комментарии:
1. опечатка, это должно быть —host-header