Как я могу выполнить команду ping в nodejs на лямбде? - PullRequest
0 голосов
/ 11 декабря 2019

Это выполняется локально и возвращает вывод ping:

var exec = require('child_process').exec;
function execute(command, callback){
    exec(command, function(error, stdout, stderr){ callback(stdout); });
}
execute("ping -c 3 localhost", function(name){
  console.log(name);
});

Запуск этого в лямбда-режиме завершается, но я никогда не вижу вывод:

exports.handler = (event, context, callback) => {
    var exec = require('child_process').exec;
    function execute(command, callback){
        exec(command, function(error, stdout, stderr){ callback(stdout); });
    }
    execute("ping -c 3 localhost", function(name){
      console.log(name);
    });
};

Как мне заставить его отображать вывод

1 Ответ

2 голосов
/ 11 декабря 2019

К сожалению, в настоящее время нет способа выполнять эхо-запросы ICMP изнутри AWS Lambda - основная проблема заключается в том, что в среде контейнера, в которой запускается Lambdas, отсутствует возможность CAP_NET_RAW, необходимая для того, чтобы приложение могло использовать необработанные сокеты.

Обойти это невозможно, даже попытка использовать утилиту ping для командной строки внутри контейнера Amazon Linux, внутри которого работает Lambda, не будет работать.

Источник: https://github.com/jethrocarr/lambda-ping. Они также предложили вам решениеможно попробовать.

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