根据媒体编码的内存使用/成本选择AWS Lambda运行时选项

时间:2015-08-18 17:38:01

标签: java node.js amazon-web-services lambda aws-lambda

我正在使用AWS lambda方法从mp4视频文件到mp3的媒体提取来评估我的需求。

主要要求是一旦新的mp4文件可用或由自定义应用程序保存在某个S3存储桶中,Lambda函数将被触发并将元数据发送到Dynamo DB,然后lambda函数将提取音频并将其存储在另一个S3桶。

如下所述,有四个选项可用于设计Lambda函数:

  1. 例如,使用Java plus JAVE编码器库来完成工作(使用 在lib / jar中嵌入ffmpeg二进制文件

  2. 将NodeJS与带有媒体编码容量的npm包一起使用 (包括spawn ffmpeg过程)

  3. 将NodeJS与AWS弹性转码服务一起使用

  4. 将Java与AWS弹性转码服务一起使用

  5. 上面哪个选项会降低资源(内存/ CPU使用等级)的成本?

    我猜这两个初始场景听起来更业余但可能更便宜。但我怀疑在内存和CPU资源方面,NodeJS或Java之间的选择使用是否会影响由于内存或lambda函数执行任务所需的时间而导致的丢失量。

    我需要关注这些方面,我们希望尽可能少花费AWS Lambda用于此类任务吗?

    在NodeJs或Java之间进行选择无关紧要?

    我是否应该考虑使用弹性转码服务而不是lambda函数中的自定义库?

    感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

费用实际上取决于您的吞吐量和内容的长度。请注意,目前Lambdaexecution timeout and other limits

我认为Java选项实际上比Node.js方法更强大。我可能会使用Elastic Transcode,因为它可以管理,可能更容易开发和维护。

答案 1 :(得分:1)

看看一些测试结果:

AWS Lambda cold start (pseudo-)benchmark

希望这有帮助