如何使用python创建AWS lambda包?

时间:2016-12-14 06:26:46

标签: amazon-web-services amazon-s3 aws-lambda

我已经使用内联代码编辑器创建了lambda函数,用于使用zencoder进行视频转换过程,它的工作正常。

现在我必须调整3种不同尺寸的图像,从一个桶到另一个桶。

对于这种情况,我需要导入一些python模块。但它表示没有模块发现图像的错误。

这是我的lambda代码。

import boto3
import cStringIO
import urllib
import os
import image
fp=urllib.urlopen('iamgeurl')
img = cStringIO.StringIO(fp.read())
im = Image.open(img)
im2 = im.resize((500, 100), Image.NEAREST)  
out_im2 = cStringIO.StringIO()
im2.save(out_im2, 'PNG')
conn = boto.connect_s3()
b = conn.get_bucket('Bucketname')
k = b.new_key('example.png')  
k.set_contents_from_string(out_im2.getvalue())

2 个答案:

答案 0 :(得分:2)

首先,从lambda仪表板导出代码。然后执行以下操作:

将下载的包解压缩到一个目录中,例如project-dir。

使用pip安装任何库。同样,您可以在目录的根级别安装这些库。

pip install module-name -t / path / to / project-dir 压缩project-dir目录的内容,这是您的部署包。

压缩目录内容,而不是目录。 Zip文件的内容可用作Lambda函数的当前工作目录。例如:/project-dir/codefile.py/lib/yourlibraries

将zip文件上传回lambda函数。

有关详细信息:http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

答案 1 :(得分:0)

要使用您的依赖项和源文件构建zip,我使用的是为此特定情况创建的名为juniper的库。

使用非常简单的清单,您可以轻松创建需要在控制台或通过awscli输入的zip工件。

在您的情况下,如果您有带有image==1.5.27的requirements.txt或所需的任何版本。带有以下清单:

functions:
  converter:
    requirements: ./src/requirements.txt.
    include:
    - ./src/lambda_function.py

运行juni build后,您将具有包含图像依赖项的 converter.zip 文件。