2016-04-02 3 views
0

Ich führe ein Videoverarbeitungsskript auf AWS Lambda.'Modul nicht flüssig-ffmpeg gefunden' auf AWS Lambda

Während es vollkommen lokal scheint zu funktionieren (getestet mit lambda-local), ich bin ein seltsames Problem mit, wenn es läuft auf Lambda:

{ 
    "errorMessage": "Cannot find module 'fluent-ffmpeg'", 
    "errorType": "Error", 
    "stackTrace": [ 
    "Function.Module._resolveFilename (module.js:338:15)", 
    "Function.Module._load (module.js:280:25)", 
    "Module.require (module.js:364:17)", 
    "require (module.js:380:17)", 
    "Object.<anonymous> (/var/task/processing.js:2:14)", 
    "Module._compile (module.js:456:26)", 
    "Object.Module._extensions..js (module.js:474:10)", 
    "Module.load (module.js:356:32)", 
    "Function.Module._load (module.js:312:12)", 
    "Module.require (module.js:364:17)" 
    ] 
} 

Die ZIP Ich bin das Hochladen enthält die folgenden Dateien:

~$ find . -maxdepth 2 
. 
./bin 
./bin/ffmpeg 
./config.js 
./event-samples 
./event-samples/custom.js 
./event-samples/dynamodb-update.js 
./event-samples/kinesis.js 
./event-samples/s3-put.js 
./frames 
./Gulpfile.js 
./index.js 
./node_modules 
./node_modules/async 
./node_modules/aws-sdk 
./node_modules/fluent-ffmpeg 
./node_modules/gulp 
./node_modules/gulp-awslambda 
./node_modules/gulp-zip 
./package.json 
./processing.js 
./utils.js 

(Der Buggy benötigen befindet sich in processing.js)

Wenn ich die ZIP öffnen, node_modules/fluent-ffmpeg/* existiert.

Ich habe versucht, das Modul schließen ein:

  • require("./node_modules/fluent-ffmpeg/index")
  • require(__dirname + "./node_modules/fluent-ffmpeg/index")
  • require(process.env.LAMBDA_TASK_ROOT + "/node_modules/fluent-ffmpeg/index")

Aber keiner von ihnen das Problem gelöst. Ich versuchte auch, Knoten und npm auf meiner Maschine, rm -rf node_modules und npm install neu zu installieren (nur für den Fall).

Da Lambda Knoten 0.10.36 ausführt, habe ich auch versucht, diese Version auf meiner Maschine zu verwenden, um die npm install zu tun, aber das ändert auch nichts.

Hilfe geschätzt.

Danke!

+1

Vielleicht versuchen Sie die [AWS Gabel statt] (https://github.com/binoculars/aws-lambda-ffmpeg)? – Andy

+0

Wenn ich mich nicht irre, ist diese Bibliothek zum Ändern der Größe und zum Erstellen von Video-Thumbnails, oder? In diesem Fall gilt das nicht für das, was ich tun muss (extrahieren jedes Frame eines Videos) – christophetd

+0

Entschuldigung, ich dachte, es wäre die gleiche Bibliothek. – Andy

Antwort

1

Gelöst. Meine Entwicklungsmaschine läuft Windows 7, und das ist anscheinend, was das Problem verursacht ... Wäre aber an den Gründen interessiert.

Wie auch immer, läuft npm install auf einer Linux-Installation und Upload der Code zu Lambda hat den Trick.