如何在Lambda上使用Node.js执行ping命令?

5

这将在本地运行并返回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);
});

在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);
    });
};

如何让它显示输出?


1
不确定你的问题的目的是什么——你是想获取ping信息,还是想知道Lambda的控制台输出在哪里、何时出现的基本问题? - dwytrykus
Sandeep Patel已经回答了这个根本问题,尽管如果其他人走进来并希望按照字面意思回答这个问题,他们可能在寻找util.promisify - undefined
1个回答

7
很遗憾,目前无法在AWS Lambda内部执行ICMP ping - 主要问题是Lambdas运行的容器环境缺少CAP_NET_RAW功能,这是应用程序使用原始套接字所需的权限。即使尝试在Lambda所在的Amazon Linux容器内部使用命令行ping工具也不起作用。来源:https://github.com/jethrocarr/lambda-ping。他们还提出了一个解决方案,您可以尝试一下。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接