假设您需要在 AWS Lambda 函数上运行 Python 脚本,然后收到此错误?
{ "errorMessage": "Unable to import module 'lambda_function': No module named 'pandas', "errorType": "Runtime.ImportModuleError" ... }
别担心,这是一个常见的错误,我不会说这么长
有多种方法,但我将为您提供在 AWS Lambda 函数中导入 pandas 的最简单方法是添加 Lambda 层?
这是一个? Lambda 函数中的奶酪层包含额外的代码,如库、依赖项等。
AWS Lambda Layers 就像您的函数的构建块。 想象一下您需要额外的工具(如 Pandas 库)来完成一个项目。 AWS 允许您创建工具层(库、依赖项或共享代码),而不是将所有这些工具打包到每个项目中(这会浪费空间和时间)。这些层位于您的主要功能之外,但在您的功能需要时始终可用。
简而言之,Lambda Layers 可以帮助您:
通过将主逻辑与额外的库分开来节省代码空间。
跨多个 Lambda 函数重用库和代码。
轻松更新或管理您的依赖项,而无需更改核心功能代码。
将层视为附加到 Lambda 函数的额外存储盒,可容纳函数顺利运行所需的所有内容。您可以在函数上堆叠多个层,而不会使主代码变得混乱。
只需 3 步即可在 Lambda 函数中成功运行 Pandas
如您所见,我们的 Lambda 函数名称下有一个选项 Layers,在我的例子中,它是 “import-pandas-function”,层数为 0
这一步又分为两步,因为我们需要添加一个包含一些Pandas代码的Python脚本,并用JSON编写一个测试事件来验证代码是否正确运行。
import json import pandas as pd def lambda_handler(event, context): data = event.get('data', []) df = pd.DataFrame(data) if not df.empty: mean_value = df['column_name'].mean() result = { "mean_value": mean_value, "data_shape": df.shape, "summary": df.describe().to_dict() } else: result = { "message": "Empty DataFrame" } # Return the response return { 'statusCode': 200, 'body': json.dumps(result) }
{ "data": [ {"column_name": 10, "other_column": "A"}, {"column_name": 20, "other_column": "B"}, {"column_name": 30, "other_column": "C"}, {"column_name": 40, "other_column": "D"} ] }
按下测试按钮,您可能会收到错误:-
“errorMessage”:“无法导入模块“lambda_function”:没有名为“pandas”的模块,
“errorType”:“Runtime.ImportModuleError”
...
向下滚动到您的 Lambda 函数,您可能可以在页面末尾看到“Layers”单独部分
点击“添加图层”后,您可以看到页面,其中有几个部分“函数运行时设置”和“选择图层”
您可以在“选择层”部分中看到三个选项,单击“AWS 层”。
选择 AWS 层后,您可以看到“AWS 层”下的下拉列表。
在“AWS 层”下拉列表中选择 -> AWSSDKPandas-Python312
在“版本”下拉列表中选择 -> 13(选择最多的一个)
单击“添加”按钮
当您的页面定向到功能概述时,您可以看到该图层添加到功能名称“import-pandas-function”下方
您已成功获得响应"statusCode": 200
{ "statusCode": 200, "body": "{\"mean_value\": 25.0, \"data_shape\": [4, 2], \"summary\": {\"column_name\": {\"count\": 4.0, \"mean\": 25.0, \"std\": 12.909944487358056, \"min\": 10.0, \"25%\": 17.5, \"50%\": 25.0, \"75%\": 32.5, \"max\": 40.0}}}" }
继续编码?
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3