我下载了this lambda package from github,因此我可以在AWS上运行我的lambda函数。我没有使用所有的文件夹,我只拿了我需要的文件夹。
因此,我的Pillow
文件夹包含:numpy
,OpenCV
,psycopg2
,Unable to import module 'lambda_function': No module named 'PIL'
和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)
。
我将.zip文件上传到我的lambda函数。但是在测试时会返回此错误:
RecyclerView
不确定为什么我收到此错误,因为我的代码中导入了PIL(代码由AWS提供):
lambda_function.py
itemView
知道我为什么会收到此错误?
编辑:重复的解决方案建议创建一个EC2实例,这不是我正在做的。
答案 0 :(得分:0)
由于AWS lambda在amazonlinux操作系统上运行,因此您需要上载该OS上安装的软件包。 该存储库将有所帮助。 https://github.com/hidekuma/lambda-layers-for-python-runtime