【发布时间】:2018-11-24 01:23:33
【问题描述】:
我下载了this lambda package from github,以便可以在 AWS 上运行我的 lambda 函数。我没有使用所有文件夹,我只拿了我需要的那些。
所以我的.zip 文件夹包含:lambda_function.py、Pillow、numpy、OpenCV 和 psycopg2。
我将该 .zip 文件上传到我的 lambda 函数。但是在测试时它会返回此错误:
Unable to import module 'lambda_function': No module named 'PIL'
不知道为什么在我的代码中导入了 PIL(代码由 AWS 提供)时出现此错误:
lambda_function.py
from __future__ import print_function
import boto3
import os
import sys
import uuid
from PIL import Image
import PIL.Image
s3_client = boto3.client('s3')
def resize_image(image_path, resized_path):
with Image.open(image_path) as image:
image.thumbnail(tuple(x / 2 for x in image.size))
image.save(resized_path)
def handler(event, context):
for record in event['Records']:
bucket = record['s3']['bucket']['name']
key = record['s3']['object']['key']
download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
upload_path = '/tmp/resized-{}'.format(key)
s3_client.download_file(bucket, key, download_path)
resize_image(download_path, upload_path)
s3_client.upload_file(upload_path, '{}resized'.format(bucket), key)
知道为什么会出现此错误吗?
编辑:重复的解决方案建议创建一个 EC2 实例,这不是我正在做的。
【问题讨论】:
-
您必须添加已编译的库,您可以使用 docker 或使用 EC2 实例制作自定义包,您可以按照以下步骤操作:stackoverflow.com/questions/50711722/…
标签: python django amazon-web-services amazon-s3 aws-lambda