spawn EACCES - Aws лямбда-функция получает ошибку - PullRequest
0 голосов
/ 30 ноября 2018

Я вызываю лямбда-функцию aws из консоли aws и получаю сообщение об ошибке. Помогите, пожалуйста, мой код выдал

const ffmpeg = spawn('ffmpeg', ["-framerate", "0.5", "-i", myarray[0], "-i", 
    myarray[1], "-i", myarray[2], "-pix_fmt", "yuv420p", '-codec:v', 'libx264', 
   "/var/task/bin/video.mp4"]);

Ошибка: порождает EACCESв _errnoException (util.js: 1022: 11)в ChildProcess.spawn (internal / child_process.js: 323: 11)в файле export.spawn (child_process.js: 502: 9)at Timeout.setTimeout [as _onTimeout] (/var/task/handler.js:23:22)в ontimeout (timers.js: 482: 11)в tryOnTimeout (timers.js: 317: 5)at Timer.listOnTimeout (timers.js: 277: 5)

Мой код

var AWS = require("aws-sdk");
var s3 = new AWS.S3();
const spawn = require('child_process').spawn;


var myarray = [];
//module.exports.hello
exports.handler = function (event, context, callback) {

return new Promise(function (resolve, reject) {

process.env.PATH = require("path").join(__dirname, "bin") + ":" + process.env['LAMBDA_TASK_ROOT'] +'; chmod 755 /tmp/bin/ffmpeg';

console.log(process.env.PATH);

GetImagesFromS3();

setTimeout(() => {
  const ffmpeg = spawn('ffmpeg', ["-framerate", "0.5", "-i", myarray[0], "-i", myarray[1], "-i", myarray[2], "-pix_fmt", "yuv420p", '-codec:v', 'libx264', '/temp/video.mp4']);
  ffmpeg.stderr.on('data', (data) => {
    console.log(`${data}`);
  });
  ffmpeg.on('close', (code) => {
    console.log('close', code)
  });
  ffmpeg.on('error', (code) => {
    console.log('error', code)
  });
}, 5000);
});
};


// get images from s3 bucket
function GetImagesFromS3() {
return new Promise(function (resolve, reject) {
var params = {
  Bucket: 'hhotimages'
};
s3.listObjects(params, function (err, data) {
  var bucketContents = data.Contents;
  for (var i = 0; i < bucketContents.length; i++) {
    var urlParams = {
      Bucket: 'hhotimages',
      Key: bucketContents[i].Key
    };
    s3.getSignedUrl('getObject', urlParams, function (err, url) {
      console.log('the url of the image is', url);
      myarray.push(url);
    });
    }

  });
  });
 }

1 Ответ

0 голосов
/ 30 ноября 2018

Похоже, вы уже отправляете ffmpeg с вашей лямбда-функцией, иначе вы получите ENOENT.

Однако для упакованного вами ffmpeg требуется набор исполняемых битов (chmod +x ffmpeg до упаковки).Без этого у вас нет разрешения на выполнение ffmpeg, поэтому, вероятно, вы получаете EACCES.

Вы могут также получить это, если ваш ffmpeg был скомпилирован для чего-то другого, кромелямбда-окружение.

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