在此线程中的所有帖子的帮助下,这里是记录的解决方案:
要使其正常工作,您需要:
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 subprocessscript_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此处下载。



