小编典典

尝试使用ffmpeg时拒绝AWS Lambda权限

linux

我想编写一个响应S3
put事件的处理程序,以将上载到mp4的任何avi文件转换为。我使用AWS工具包插件在Java中,Eclipse中进行了此操作。对于视频转换,我将ffmpeg与ffmpeg-
cli-wrapper一起使用
,并且在源代码树中提供了ffmpeg的静态(Linux)二进制文件。

我发现上载函数时,二进制文件被放入/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";
    }
}

和堆栈跟踪的第一行:java.io.IOException: Cannot run program "/var/task/ffmpeg": error=13, Permission denied

如何执行此二进制文件?我已经按照其他人的建议做了,并且chmod 755在上传之前使用了二进制文件,但是并没有改变。


阅读 336

收藏
2020-06-03

共1个答案

小编典典

AWS Lambda在Amazon Linux上运行。这是一个已知问题。尝试构建(启用静态功能)并检查它是否在Amazon
Linux上运行并上传该二进制文件。您没有对chmod中文件的特权/var/task/。或者尝试以下可行的解决方案:

  • 移动ffmpeg/tmp
  • chmod 755 /tmp/ffmpeg
  • 呼叫 /tmp/ffmpeg

有关更多信息,请参见此讨论

2020-06-03