前一段时间,做了一个对浏览器录制推流的镜像,由于对资源的要求比较高,所以需要服务动态伸缩。后发现aws的一款免费服务lambda,号称可以最高一千个实例,并且免费,就尝试迁移到其上面。研究了几天,最终效果差强人意,现做个记录。
1.问题
lambda想要提供的应该只是简单的服务部署,比如一个spring boot项目,它本意可能并不想用户用其来部署耗费大量cpu或者内存资源的应用,其容器内部做了很多限制,比如不可以直接yum install。由于这些限制,之前调试通过的镜像则不可以简单的复制到lambda中,其中最大的问题就是xvfb,firefox,ffmpeg不可通过install的方式下载安装,但可以将其编译成可执行的二进制程序上传到lambda中调用。
2.解决
2.1 ffmpeg
ffmpeg的问题很好解决,在其官网可以下载可执行程序而不必通过install的方式,不再赘述。
2.2 xvfb
查了很多资料,这方面信息不是很多,无奈只好自己编译,过程中发现,除了xvfb之外,还需要编译xkeyboard和xkbcomp。要注意的是,lambda实例中,工作目录是/var/task。
编译xkeyboard
wget https://www.x.org/archive/individual/data/xkeyboard-config/xkeyboard-config-2.19.tar.gz
tar -xzf xkeyboard-config-2.19.tar.gz && cd /var/task/xkeyboard-config-2.19
//设置LD_LIBRARY_PATH(指定动态连接库路径)
export LD_LIBRARY_PATH=/var/task/lib;
export PKG_CONFIG_PATH=/var/task/share/pkgconfig:/var/task/lib/pkgconfig;
//指定输出文件夹,指定xkb输出路径
./configure --prefix=/var/task --with-xkb-base=/var/task/xkb
make && make install
编译xk