Я пытаюсь захватить вывод из внешней программы, запущенной с AWS Lambda, написанной на NodeJS. Полный пример кода ниже. Подойдет любое тестовое событие, так как оно на самом деле не используется.
exports.handler = async (event) => {
console.log ("Entering lambda" + JSON.stringify(event))
var spawn = require('child_process').spawnSync;
child_process = spawn ('aws', [' --version'], {
stdio: 'inherit',
stderr: 'inherit',
shell: true
})
console.log ("done");
const response = {
statusCode: 200,
body: JSON.stringify('done'),
};
return response;
};
Когда я запускаю его, в качестве вывода я получаю следующее (для краткости я удалил подробности тестового события, поскольку это не имеет значения).
То, что я не вижу , является результатом ожидаемой мной команды aws --version
(я использую ее для проверки правильности вызова интерфейса командной строки AWS, но подойдет любая команда Linux) , Код выполняет синхронно, потому что, если я заменю вызов на child_process = spawn ('sleep', ['1'], {
, время выполнения лямбды вырастет до 1117,85 мс, поэтому произойдет однократный сон. Но в журналах выполнения ничего не зафиксировано.
START RequestId: 0c1287e2-d2ee-4436-a577-bc8ec3608120 Version: $LATEST
2019-01-16T19:12:45.130Z 0c1287e2-d2ee-4436-a577-bc8ec3608120 Entering lambda {...}
2019-01-16T19:12:45.143Z 0c1287e2-d2ee-4436-a577-bc8ec3608120 done
END RequestId: 0c1287e2-d2ee-4436-a577-bc8ec3608120
REPORT RequestId: 0c1287e2-d2ee-4436-a577-bc8ec3608120 Duration: 13.29 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 20 MB
Я что-то не так делаю? Или есть какой-нибудь другой способ записать вывод (код состояния, stdio, stderr) для лямбды, написанной на NodeJS?