【问题标题】:Lambda-specific package doesn't work on AWS lambda特定于 Lambda 的包在 AWS lambda 上不起作用
【发布时间】:2018-11-24 01:23:33
【问题描述】:

我下载了this lambda package from github,以便可以在 AWS 上运行我的 lambda 函数。我没有使用所有文件夹,我只拿了我需要的那些。

所以我的.zip 文件夹包含:lambda_function.pyPillownumpyOpenCVpsycopg2

我将该 .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 实例,这不是我正在做的。

【问题讨论】:

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


【解决方案1】:

因为 AWS lambda 在 amazonlinux 操作系统上运行,您需要上传安装在该操作系统上的软件包。 这个存储库会有所帮助。 https://github.com/hidekuma/lambda-layers-for-python-runtime

【讨论】:

    猜你喜欢
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 2023-03-26
    • 2019-06-19
    相关资源
    最近更新 更多