АВС Лямбда. Ошибка = 20 (не каталог) при перемещении FFmpeg в /tmp

Я использую ffmpeg-cli-wrapper для запуска FFmpeg из приложения, которое я загружаю на лямбда АВС. Я изначально получал

error=13 Отказано в доступе

при попытке вызвать его через обертки ProcessBuilder. Моим первоначальным решением было chmod 755 ffmpeg перед загрузкой, но это не помогло.

Для информации, мои файлы FFmpeg и ffprobe расположены в следующем пути к классам: static/ffmpeg/ffmpeg и static/ffmpeg/ffprobe. Они также статически связаны.

Разрешение AWS Lambda отклонено при попытке использовать ffmpeg

Я пытался следовать инструкциям, приведенным в приведенном выше примере, но когда я пытаюсь выполнить команду mv или cp:Runtime.exec("mv " + pathToFFmpeg + " /tmp"), я получаю

error=20, не каталог

ошибка.

Я знаю, что у меня есть правильный путь для FFmpeg, потому что следующая команда mv *pathToFFmpeg* *an arbitrary name* выполняется без ошибок, что означает, что файл есть, поэтому команда mv просто переименовывает его, как и предполагалось.


person Omar Riaz    schedule 10.11.2017    source источник
comment
Ошибка кажется бессмысленной, но ваш домашний каталог недоступен для записи, поэтому перемещение не должно работать. Попробуйте cp.   -  person Michael - sqlbot    schedule 11.11.2017
comment
Что ж, я исправил эту проблему, переключившись на ProcessBuilder (раньше использовал Runtime.exec()). Теперь я снова получаю error=13, Permission denied при доступе к ffmpeg в /tmp (даже после chmod 755 'файлов в /tmp), должен ли я задать для этого новый вопрос?   -  person Omar Riaz    schedule 11.11.2017
comment
Я исправил и эту проблему! Сначала я chmod 755 загружал файлы из Windows 10 bash, но обнаружил, что все это время это не имело никакого эффекта. Я нашел способ сделать то же самое в Windows, и теперь я могу использовать FFmpeg. Спасибо за вашу помощь!   -  person Omar Riaz    schedule 11.11.2017
comment
Превосходно. Чтобы другие люди столкнулись с той же проблемой, пожалуйста, напишите ответ, описывающий, как именно вы ее исправили.   -  person Michael - sqlbot    schedule 11.11.2017
comment
Фошо, еще раз спасибо :)   -  person Omar Riaz    schedule 12.11.2017


Ответы (1)


Я создавал JAR из среды Windows, и я понимаю, что из-за этого chmod 755 в лямбда-среде не повлияло.

Решение. Перед выполнением JAR-файла в Windows предоставьте группе «Все» права доступа к файлам или любым каталогам, которые могут содержаться. У меня он не появился, поэтому мне пришлось добавить группу разрешений. Кажется, это устраняет ошибки error=20 и error=13, которые я получал. Скриншот меню. Обратите внимание, что мне ВСЕ ЕЩЕ пришлось включить chmod 755 в лямбда-функцию, иначе я снова получил бы ошибку = 13.

Я также столкнулся с ошибкой = 2 (Нет такого файла или каталога), которую мне удалось решить следующим образом:
а) Переключиться с Runtime.exec() на ProcessBuilder.
(Я полагаю, что Runtime.exec() менее «усовершенствован» и нуждается в дополнительной настройке)
b) Использование cp вместо mv.
c) Запуск ProcessBuilder из того же метода, из которого я вызываю FFmpeg, вместо того, чтобы вызывать для этого разные методы того же класса. Без понятия, почему это...

person Omar Riaz    schedule 11.11.2017