gpt4 book ai didi

python - AWS Lambda - 无法导入模块 'lambda_function'

转载 作者:太空狗 更新时间:2023-10-29 23:54:26 24 4
gpt4 key购买 nike

像我之前的许多其他人一样,我正在尝试运行 AWS Lambda 函数,当我尝试测试它时,我得到了

"errorMessage": "Unable to import module 'lambda_function'"

我的处理程序设置为 lambda_function.lambda_handler,我确实有一个名为 lambda_function.py 的文件,其中包含一个名为 lambda_handler 的函数。这是一个屏幕截图作为证明: enter image description here

当我在附带的 IDE 中编写内联代码片段时一切正常,但是当我压缩我的完整程序及其所有依赖项并上传时,我遇到了上述错误。

我使用的是 Numpy 和 Scipy 包,它们都非常大。我的压缩目录是 34 MB,我的解压目录是 122 MB。我认为这应该没问题,因为压缩目录的限制是 50 MB。它似乎上传正常,因为我看到消息:

The deployment package of your Lambda function "one-shot-image-classification" is too large to enable inline code editing. However, you can still invoke your function right now.

我看到一些帖子通过使用 virtualenv 解决了这个问题,但我不熟悉该技术并且我不确定如何正确使用它。

我也看到一些帖子说有时依赖关系有依赖关系,我可能需要包括那些,但我不确定如何找到它。

这是 lambda_function.py 的顶部,应该足以看到我正在使用的库并且我确实有一个 lambda_handler 函数:

import os
import boto3
import numpy as np
from scipy.ndimage import imread
from scipy.spatial.distance import cdist

def lambda_handler(event, context):

s3 = boto3.resource('s3')

这是我正在上传的目录的解压缩版本的屏幕截图: enter image description here

如果这可能成为问题,我还可以发布我的 Lambda 正在使用的策略角色。

非常感谢任何见解!

更新:

这是我尝试过的一种解决方案:1. git clone https://github.com/Miserlou/lambda-packages2. 在 Documents 中创建一个名为 new_lambda 的文件夹3. 将我的 lambda_function.py 和 numpy 文件夹从 lambda 包复制到 new_lambda,连同我根据文章使用 Docker for AWS 编译的 scipy 库:https://serverlesscode.com/post/scikitlearn-with-amazon-linux-container/4. 右键单击​​并选择“压缩”来压缩 new_lambda 文件夹

我的结果:

Unable to import module 'lambda_function': No module named 'lambda_function'

重申一下,我的文件名为 lambda_function.py 并包含一个名为 lambda_handler 的函数,该函数接受两个参数(如上所示)。此信息与在 Handler 中看到的信息相匹配,也在上面看到。

如果重要的话,我使用的是 Mac 电脑。

更新 2

如果我按照上述步骤操作,而是通过直接选择我要压缩的文件然后右键单击并选择“压缩”来压缩文件,我反而会收到错误

Unable to import module 'lambda_function': cannot import name 'show_config'

另外,预编译的 lambda 包说它们是为“至少 Python 2.7”编译的,但我的 lambda 运行时是 3.6。这可能是个问题吗?

最佳答案

问题是你的本地 numpy 和 pandas 是为本地机器的架构编译的。由于 AWS Lambda 使用自定义 Linux,因此它们可能不兼容。

所以如果你想使用它们,你有两个选择:

  • 在使用相同 Amazon Linux 的 EC2 实例上编译依赖项版本为 AWS Lambda 并创建部署包。

  • 使用 here 中的预编译包之一

附言我已经阅读了一篇帖子的评论,所以我看到文件名和函数没有问题,而 numpy 给你带来了麻烦。

关于python - AWS Lambda - 无法导入模块 'lambda_function',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49734744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com