」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 AWS Lambda 函數中匯入 Pandas(庫) - AWS Lambda Layers

如何在 AWS Lambda 函數中匯入 Pandas(庫) - AWS Lambda Layers

發佈於2024-11-08
瀏覽:467

假設您需要在 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]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3