2016-08-04 7 views
0

Получение ошибки zip: command not found на AWS лямбда при попытке использовать zip команду застегнуть папку:модуль зип не доступен на AWS лямбда

const exec = require('child_process').exec; 
exec('touch /tmp/test.txt', (error, stdout, stderr) => { 
     console.log(stdout); 
    }) 
    exec('zip /tmp/test.zip /tmp/test.txt', (error, stdout, stderr) => { 
     if (error) { 
      console.error(`exec error: ${error}`); 
      return; 
     } else { 
     console.log(stdout); 
    } 
    }) 
    exec('ls /tmp/', (error, stdout, stderr) => { 
     console.log(stdout); 
    }) 

Также при размещении молнию внутри папки BIN, он дает разрешение отказано ошибка , Как установить zip-модуль на AWS лямбда?

ответ

0

На сервере Amazon Linux не установлен пакет zip, на котором работает ваша функция Lambda. Так что у вас есть два варианта:

1) Предоставьте двоичное приложение zip в качестве части пакета функций, который вы загружаете в Лямбду. Приложение zip необходимо будет скомпилировать на Amazon Linux или статически связать.

2) Используйте библиотеку Node.js, которая не имеет зависимости от исполняемых файлов.

Я лично использовал вариант # 2 и может порекомендовать отличную "yazl" библиотеку можно посмотреть здесь:

https://github.com/thejoshwolfe/yazl

Вы будете в конечном итоге делает что-то вроде этого:

var yazl = require('yazl'); 

var zipfile = new yazl.ZipFile(); 
zipfile.addBuffer(fs.readFileSync('/tmp/file.txt'), "file.txt", { 
    mtime: new Date(), 
    mode: 0100664, // -rw-rw-r-- 
}); 
zipfile.outputStream.pipe(fs.createWriteStream('/tmp/test.zip')).on("close", function() { 
    console.log("done zipping files"); 
}); 
zipfile.end(); 
+0

Метод 1: Использование двоичного кода из экземпляра AMI '/ usr/bin/zip' ничего не происходило, нет ошибки - ничего не записывать. Способ 2: Использование yazl дает проблему с памятью для большого файла с видео. –

+0

Память будет проблемой независимо от того, как вы ее застегните. Сколько памяти вы выделили для своей функции? Или вы говорите о дисковой памяти? Вы получаете только 512 МБ дискового пространства/tmp. –

Смежные вопросы