3 回答

TA贡献2039条经验 获得超7个赞
在此线程中的所有帖子的帮助下,这里是记录的解决方案:
要使其正常工作,您需要:
EC2用至少2GO RAM 启动一个实例(以便能够编译NumPy&SciPy)
安装所需的依赖项
sudo yum -y update
sudo yum -y upgrade
sudo yum -y groupinstall "Development Tools"
sudo yum -y install blas --enablerepo=epel
sudo yum -y install lapack --enablerepo=epel
sudo yum -y install Cython --enablerepo=epel
sudo yum install python27-devel python27-pip gcc
virtualenv ~/env
source ~/env/bin/activate
pip install scipy
pip install numpy
pip install moviepy
将目录中所有目录的内容(_markerlib,pip *,pkg_resources,setuptools *和easyinstall *除外)复制到您的语言环境计算机中stack:
home/ec2-user/env/lib/python2.7/dist-packages
home/ec2-user/env/lib64/python2.7/dist-packages
从您的EC2实例获取所有必需的共享库:
libatlas.so.3
libf77blas.so.3
liblapack.so.3
libptf77blas.so.3
libcblas.so.3
libgfortran.so.3
libptcblas.so.3
libquadmath.so.0
将它们放在lib文件夹的子stack文件夹中
imageio是的依赖项moviepy,您需要下载其依赖项的一些二进制版本:libfreeimage和ffmpeg;他们可以在这里找到。将它们放在堆栈文件夹的根目录并重命名libfreeimage-3.16.0-linux64.so为libfreeimage.so
您现在应该拥有一个stack包含以下内容的文件夹:
根目录下的所有python依赖项
lib子文件夹中的所有共享库
ffmpeg 根目录二进制
libfreeimage.so 根源
压缩此文件夹: zip -r9 stack.zip . -x ".*" -x "*/.*"
使用以下内容lambda_function.py作为您的切入点lambda
from __future__ import print_function
import os
import subprocess
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
LIB_DIR = os.path.join(SCRIPT_DIR, 'lib')
FFMPEG_BINARY = os.path.join(SCRIPT_DIR, 'ffmpeg')
def lambda_handler(event, context):
command = 'LD_LIBRARY_PATH={} IMAGEIO_FFMPEG_EXE={} python movie_maker.py'.format(
LIB_DIR,
FFMPEG_BINARY,
)
try:
output = subprocess.check_output(command, shell=True)
print(output)
except subprocess.CalledProcessError as e:
print(e.output)
写一个movie_maker.py依赖于脚本moviepy,numpy...
将这些脚本添加到您的stack.zip文件中 zip -r9 lambda.zip *.py
上载zip S3并将其用作您的源lambda
您也可以在stack.zip 此处下载。
添加回答
举报