在AWS lambda上将ImageMagick作为python子进程运行

在AWS lambda上将ImageMagick作为python子进程运行,python,amazon-web-services,amazon-s3,imagemagick-convert,aws-lambda,Python,Amazon Web Services,Amazon S3,Imagemagick Convert,Aws Lambda,我希望通过给AWS lambda一系列来自s3存储桶的图像来生成动画GIF,并将其下载到/tmp/文件夹中 我在文档中读到imagemagick预装在lambda上,但由于某些原因,我无法通过python子进程调用它: import subprocess # ... some code later ... # Now, generate the gif input_dir = '/tmp/' output_dir = '/tmp/' args = (['convert', '-dela

我希望通过给AWS lambda一系列来自s3存储桶的图像来生成动画GIF,并将其下载到/tmp/文件夹中

我在文档中读到imagemagick预装在lambda上,但由于某些原因,我无法通过python子进程调用它:

import subprocess

# ... some code later ...

# Now, generate the gif  
input_dir = '/tmp/'
output_dir = '/tmp/'

args = (['convert', '-delay', '60', '-dispose', 'Background', '+page'] +
        files_list +
        ['-loop', '0', os.path.join(output_dir, 'animation.gif')])

try:
    subprocess.check_call(args)
    print("gif was generated")
except subprocess.CalledProcessError as e:
    print("gif produced errors ...")
    print(e.output)

知道如何通过lambda上的子进程调用imagemagick吗?我已经能够在本地和ec2上工作,但在lambda上没有运气。我得到的唯一响应是,它生成一个空白的.gif文件,并在输出“gif生成的错误…”后返回一个空的异常线程。

Imagemagick仅在lambda函数是在Node.js中编写的情况下预安装。但是您的lambda函数是用Python编写的

AWS Lambda支持以下运行时版本:

  • Node.js:v0.10.36
  • Java:Java8
  • Python:Python2.7
如果你是作者 Lambda函数代码在Node.js中,提供以下库 在AWS Lambda执行环境中,因此不需要包括 他们:

ImageMagick:使用默认设置安装。用于版本控制 有关详细信息,请参阅imagemagick nodejs包装器和imagemagick本机 二进制(搜索“ImageMagick”)。AWS SDK:AWS SDK for JavaScript 版本2.2.12

如果您使用Python编写Lambda函数代码 以下库在AWS Lambda执行中可用 环境,因此您不需要将它们包括在内:

AWS Python SDK(Boto 3)版本1.2.1

没有额外的限制 Java可用的库


该死的。。。你知道我还能做什么吗?也可以打包imagemagick吗?看起来我必须将整个脚本从lambda移到服务器上,毕竟…以前从未使用过。您可以尝试PythonMagick,它是ImageMagick的Python接口。“您可以尝试PythonMagick,它是ImageMagick的Python接口。”是的,但是PythonMagick没有预先安装在AWS Lambda上,因此您必须将其包含在部署包中,这并不容易。有关说明,请参见。您看过本教程吗?