har*_*ini 5 python windows amazon-web-services aws-lambda
我需要使用通过 API 网关触发的 AWS Lambda。我有 python 脚本,它从 S3bucket 加载机器学习模型,并从 api 调用获取输入并预测结果。我可以成功触发用 python 内联编写的 lambda 函数。但我想使用机器学习包来预测 lambda 函数。所以我知道我需要上传安装在虚拟环境中的包的代码,我做到了。但是 lambda 在触发时给出错误“无法导入模型 lambda_function”。我有 lambda_function.py 和方法“处理程序”。请告诉我我是否做得正确(创建虚拟环境并安装包并上传)以及为什么会出现此错误。另外,让我了解 Windows 和 AWS 控制台的解决方案。我已经看到许多有关 Linux 命令和使用 aws cli 的答案。
更新:
这真让我抓狂!。我已经尝试了答案中找到的所有方法,但没有一个对我有用。它给出了相同的错误:“无法导入模块:lambda_function”所以我无法理解错误在哪里。如果您有任何建议,请帮助我。在你说函数名称之前:我有正确的名称:lambda_function.lambda_handler。我压缩了内容而不是目录。请参阅 lambda json 文件下面的我的 lambda 代码和 lambda 设置
Lambda函数代码:
import boto3
import os
import uuid
import sklearn
import pickle
def lambda_handler(event, context):
s3_client = boto3.client('s3')
s_desc=event['params']['querystring']['token']
X_test1=[]
X_test1.append(s_desc)
#load model
bucket = 'harshini-snow-bucket'
key = 'model.pkl'
download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
s3_client.download_file(bucket, key, download_path)
f = open(download_path, 'rb')
model = pickle.load(f)
f.close()
#class_predicted = model.predict(X_test1)
return X_test1
Run Code Online (Sandbox Code Playgroud)
请告诉我是否还有其他方法..我会尝试一切以使其发挥作用。
更新2:
您必须使用docker或EC2为 lambda 制作自定义部署包。如果您在本地计算机中制作软件包,它将无法工作,因为它不会编译所需的库。
这是完整的示例,说明如何制作自定义包,此示例将python 的PILLOW图像处理库与 lambda 代码一起打包,您可以以相同的方式将模型所需的所有其他库与相同的包一起打包太平洋石油公司
请记住一件事,在示例中文件名是CreateThumbnail.py,您可以给它任何名称,但始终以这种方式配置处理程序 filename.handler-function ,例如disco.lambda_handler其中disco.py是文件名,lambda_handler是代码处理程序模块拉姆达
| 归档时间: |
|
| 查看次数: |
8681 次 |
| 最近记录: |