我想编写一个响应S3事件处理程序来处理上传到mp4的所有avi文件。我在Eclipse中使用AWS工具箱插件在Java中执行此操作。对于视频转换,我使用了ffmpeg和ffmpeg-cli-wrapper,并且我在源码树中提供了一个ffmpeg的静态(linux)二进制文件。尝试使用ffmpeg时AWS Lambda权限被拒绝
我发现,当我上传的功能,二进制放在/var/task
得到,但是当我尝试使用我写的测试功能,我得到一个“权限被拒绝”的错误。
import net.bramp.ffmpeg.FFmpeg;
public class LambdaFunctionHandler implements RequestHandler<S3Event, String> {
private static final String FFMPEG = "/var/task/ffmpeg";
public String handleRequest(S3Event event, Context context) {
try {
FFmpeg ff = new FFmpeg(FFMPEG);
System.out.println(ff.version());
} catch (Exception e) {
e.printStackTrace();
}
return "foo";
}
}
并且stacktrace的第一行:java.io.IOException: Cannot run program "/var/task/ffmpeg": error=13, Permission denied
。
如何执行这个二进制文件?我已经按照其他人的建议和chmod 755
完成了上传之前的二进制文件,但它没有任何区别。
如何移动文件?是我能从命令行执行一次的事情,还是我需要在方法开始时的代码中执行此操作?该方法的开始处为 – moarCoffee
。如果'mv'失败,请尝试'cp'。它一直为我工作。 – helloV
对不起,没有回复你。我用'ProcessBuilder'来完成,就像你说的那样,它一切正常。谢谢您的帮助! – moarCoffee