我已经用ffmpeg上传了一个lambda的zip文件。我已经运行了ls -l
命令来验证ffmpeg
实用程序是否存在(尽管没有权限)。
要运行它,我知道我需要将其复制到/tmp
文件夹中并更改那里的权限。我尝试用以下方法做到这一点:
/bin/sh -c echo 'step0' && cp /var/task/ffmpeg /tmp && echo 'step1' && chmod 755 /tmp/ffmpeg && echo 'step2' && ls /tmp/
,但我看到的只是测试lambda功能输出中的step0
。
似乎复制命令以某种方式失败。
注意:我使用的是Java Lambda,但是在lambda调用和命令似乎可以通过的情况下,我看不到如何在此级别上有所作为。
非常感谢。
更新:
public class Lambda implements RequestHandler<FragmentsRequest, String> {
@Override
public String handleRequest(final FragmentsRequest input, final Context context) {
final List<String> command = Stream.of(input.getCommand().split(",")).collect(Collectors.toList());
final String output = runCommandForOutput(command);
return output;
}
public static String runCommandForOutput(List<String> params) {
final ProcessBuilder pb = new ProcessBuilder(params);
Process p;
String result = "";
try {
p = pb.start();
final BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
final StringJoiner sj = new StringJoiner(System.getProperty("line.separator"));
reader.lines().iterator().forEachRemaining(sj::add);
result = sj.toString();
p.waitFor();
p.destroy();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}