如何在 lambda 上的 Nodejs 中执行 ping 命令?

red*_*888 5 node.js aws-lambda

这在本地运行并返回 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);
});
Run Code Online (Sandbox Code Playgroud)

在 lambda 中运行它完成,但我从未看到输出:

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);
    });
};
Run Code Online (Sandbox Code Playgroud)

我如何让它显示输出?

San*_*tel 7

遗憾的是,目前无法从 AWS Lambda 内部执行 ICMP ping - 主要问题是 Lambda 在内部运行的容器环境缺乏允许应用程序使用原始套接字所需的 CAP_NET_RAW 功能。

没有办法解决这个问题,即使尝试在运行 Lambda 的 Amazon Linux 容器内使用命令行 ping 实用程序也不起作用。

来源: https: //github.com/jethrocarr/lambda-ping。他们还提出了一个您可以尝试的解决方案。