”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 AWS Lambda 函数中导入 Pandas(库) - AWS Lambda Layers

如何在 AWS Lambda 函数中导入 Pandas(库) - AWS Lambda Layers

发布于2024-11-08
浏览:954

假设您需要在 AWS Lambda 函数上运行 Python 脚本,然后收到此错误?

{
  "errorMessage": "Unable to import module 'lambda_function': No module named 'pandas',
  "errorType": "Runtime.ImportModuleError"
  ...
}

别担心,这是一个常见的错误,我不会说这么长

如何在 AWS Lambda Functions 中导入 Pandas?

有多种方法,但我将为您提供在 AWS Lambda 函数中导入 pandas 的最简单方法是添加 Lambda 层?

什么是 AWS Lambda 层?

这是一个? Lambda 函数中的奶酪层包含额外的代码,如库、依赖项等。

简单来说

AWS Lambda Layers 就像您的函数的构建块。 想象一下您需要额外的工具(如 Pandas 库)来完成一个项目。 AWS 允许您创建工具层(库、依赖项或共享代码),而不是将所有这些工具打包到每个项目中(这会浪费空间和时间)。这些层位于您的主要功能之外,但在您的功能需要时始终可用。

简而言之,Lambda Layers 可以帮助您:

通过将主逻辑与额外的库分开来节省代码空间。
跨多个 Lambda 函数重用库和代码。
轻松更新或管理您的依赖项,而无需更改核心功能代码。

将层视为附加到 Lambda 函数的额外存储盒,可容纳函数顺利运行所需的所有内容。您可以在函数上堆叠多个层,而不会使主代码变得混乱。

添加 Lambda 函数层和导入 Pandas 的步骤

只需 3 步即可在 Lambda 函数中成功运行 Pandas

第 1 步 - 通过 AWS 管理控制台打开 Lambda 函数

如您所见,我们的 Lambda 函数名称下有一个选项 Layers,在我的例子中,它是 “import-pandas-function”,层数为 0

How to Import Pandas(library) in AWS Lambda Functions - AWS Lambda Layers

第 2 步 - 在 AWS Lambda 函数中添加脚本

这一步又分为两步,因为我们需要添加一个包含一些Pandas代码的Python脚本,并用JSON编写一个测试事件来验证代码是否正确运行。

2.1 - 添加Python脚本 - 你可以复制这段代码吗?

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)
    }

2.2 - 在测试选项卡中添加 Json 测试脚本 - 您可以复制此代码吗?

{
  "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”
...

第 3 步 - 添加 AWS Lambda 层以在代码中成功运行 Pandas

向下滚动到您的 Lambda 函数,您可能可以在页面末尾看到“Layers”单独部分
How to Import Pandas(library) in AWS Lambda Functions - AWS Lambda Layers

3.1 - 单击“添加图层”

点击“添加图层”后,您可以看到页面,其中有几个部分“函数运行时设置”和“选择图层”
How to Import Pandas(library) in AWS Lambda Functions - AWS Lambda Layers

3.2 - 单击“AWS 层”

您可以在“选择层”部分中看到三个选项,单击“AWS 层”。
How to Import Pandas(library) in AWS Lambda Functions - AWS Lambda Layers

3.3 - 选择“AWS层”

选择 AWS 层后,您可以看到“AWS 层”下的下拉列表。
How to Import Pandas(library) in AWS Lambda Functions - AWS Lambda Layers

3.4 - 选择“AWS层”和“版本”

在“AWS 层”下拉列表中选择 -> AWSSDKPandas-Python312
How to Import Pandas(library) in AWS Lambda Functions - AWS Lambda Layers
在“版本”下拉列表中选择 -> 13(选择最多的一个)
How to Import Pandas(library) in AWS Lambda Functions - AWS Lambda Layers
单击“添加”按钮
How to Import Pandas(library) in AWS Lambda Functions - AWS Lambda Layers

3.5 - 确保“功能概述”

当您的页面定向到功能概述时,您可以看到该图层添加到功能名称“import-pandas-function”下方
How to Import Pandas(library) in AWS Lambda Functions - AWS Lambda Layers

第 4 步 - 测试功能

您已成功获得响应"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}}}"
}

How to Import Pandas(library) in AWS Lambda Functions - AWS Lambda Layers


继续编码?

版本声明 本文转载于:https://dev.to/heighter/how-to-import-pandaslibrary-in-aws-lambda-functions-aws-lambda-layers-1oen?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    The Mystery of "Broken" Two-Phase Template Instantiation in Microsoft Visual C Problem Statement:Users commonly express concerns that Micro...
    编程 发布于2025-03-12
  • UTF-8 vs. Latin-1:字符编码大揭秘!
    UTF-8 vs. Latin-1:字符编码大揭秘!
    [utf-8和latin1 在他们的应用中,出现了一个基本问题:什么辨别特征区分了这两个编码?超出其字符表现能力,UTF-8具有额外的几个优势。从历史上看,MySQL对UTF-8的支持仅限于每个字符的三个字节,这阻碍了基本多语言平面(BMP)之外的字符的表示。但是,随着MySQL 5.5的出现,...
    编程 发布于2025-03-12
  • 大批
    大批
    [2 数组是对象,因此它们在JS中也具有方法。 切片(开始):在新数组中提取部分数组,而无需突变原始数组。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    编程 发布于2025-03-12
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    在java 中有效地替换多个substring,需要在需要替换一个字符串中的多个substring的情况下,很容易求助于重复应用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    编程 发布于2025-03-12
  • Part SQL注入系列:高级SQL注入技巧详解
    Part SQL注入系列:高级SQL注入技巧详解
    [2 Waymap pentesting工具:单击此处 trixsec github:单击此处 trixsec电报:单击此处 高级SQL注入利用 - 第7部分:尖端技术和预防 欢迎参与我们SQL注入系列的第7部分!该分期付款将攻击者采用的高级SQL注入技术 1。高...
    编程 发布于2025-03-12
  • 为什么PYTZ最初显示出意外的时区偏移?
    为什么PYTZ最初显示出意外的时区偏移?
    与pytz 最初从pytz获得特定的偏移。例如,亚洲/hong_kong最初显示一个七个小时37分钟的偏移: 差异源利用本地化将时区分配给日期,使用了适当的时区名称和偏移量。但是,直接使用DateTime构造器分配时区不允许进行正确的调整。 example pytz.timezone(...
    编程 发布于2025-03-12
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    编程 发布于2025-03-12
  • 我们如何保护有关恶意内容的文件上传?
    我们如何保护有关恶意内容的文件上传?
    对文件上载上传到服务器的安全性问题可以引入重大的安全风险,因为用户可能会提供潜在的恶意内容。了解这些威胁并实施有效的缓解策略对于维持应用程序的安全性至关重要。用户可以将文件名操作以绕过安全措施。避免将其用于关键目的或使用其原始名称保存文件。用户提供的MIME类型可能不可靠。使用服务器端检查确定实际...
    编程 发布于2025-03-12
  • 如何使用JavaScript中的正则表达式从字符串中删除线路断裂?
    如何使用JavaScript中的正则表达式从字符串中删除线路断裂?
    在此代码方案中删除从字符串在JavaScript中解决此问题,根据操作系统的编码,对线断裂的识别不同。 Windows使用“ \ r \ n”序列,Linux采用“ \ n”,Apple系统使用“ \ r。” 来满足各种线路断裂的变化,可以使用以下正则表达式: [&& && &&&&&&&&&&&...
    编程 发布于2025-03-12
  • 为什么使用Firefox后退按钮时JavaScript执行停止?
    为什么使用Firefox后退按钮时JavaScript执行停止?
    导航历史记录问题:JavaScript使用Firefox Back Back 此行为是由浏览器缓存JavaScript资源引起的。要解决此问题并确保在后续页面访问中执行脚本,Firefox用户应设置一个空功能。 警报'); }; alert('inline Alert')...
    编程 发布于2025-03-12
  • 如何使用PHP将斑点(图像)正确插入MySQL?
    如何使用PHP将斑点(图像)正确插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call ...
    编程 发布于2025-03-12
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样,如何?答案:是的,可以将您的Encryption库从McRypt升级到OpenSSL。可以使用openssl。附加说明: [openssl_decrypt()函数要求iv参...
    编程 发布于2025-03-12
  • 在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    For Each Loop vs. Iterator: Efficiency in Collection TraversalIntroductionWhen traversing a collection in Java, the choice arises between using a for-...
    编程 发布于2025-03-12
  • 如何检查对象是否具有Python中的特定属性?
    如何检查对象是否具有Python中的特定属性?
    方法来确定对象属性存在寻求一种方法来验证对象中特定属性的存在。考虑以下示例,其中尝试访问不确定属性会引起错误: >>> a = someClass() >>> A.property Trackback(最近的最新电话): 文件“ ”,第1行, AttributeError: SomeClass...
    编程 发布于2025-03-12
  • Java HashSet/LinkedHashSet随机元素获取方法详解
    Java HashSet/LinkedHashSet随机元素获取方法详解
    在编程中找到一个随机元素,在编程中找到一个随机元素,从集合(例如集合)中选择一个随机元素很有用。 Java提供了多种类型的集合,包括障碍物和链接HASHSET。本文将探讨如何从这些特定集合实现的过程中选择一个随机元素。的java的hashset和linkedhashset a HashSet代表...
    编程 发布于2025-03-12

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3