Stellen Sie sich vor, Sie müssen ein Python-Skript für die AWS Lambda-Funktion ausführen und erhalten diese Fehlermeldung?
{ "errorMessage": "Unable to import module 'lambda_function': No module named 'pandas', "errorType": "Runtime.ImportModuleError" ... }
Keine Sorge, das ist ein häufiger Fehler und ich werde nicht so lange darauf eingehen
Es gibt mehrere Möglichkeiten, aber ich werde Ihnen die einfachste Möglichkeit nennen, Pandas in AWS Lambda zu importieren. Funktion ist das Hinzufügen einer Lambda-Ebene?
Es ist ein ? Käseschicht in der Lambda-Funktion, die zusätzlichen Code wie Bibliotheken, Abhängigkeiten usw. enthält.
AWS Lambda Layers sind wie Bausteine für Ihre Funktionen. Stellen Sie sich vor Sie benötigen zusätzliche Tools (wie die Pandas-Bibliothek), um ein Projekt abzuschließen. Anstatt all diese Tools in jedes einzelne Projekt zu packen (was Platz und Zeit verschwendet), können Sie mit AWS Schichten von Tools erstellen (Bibliotheken, Abhängigkeiten oder gemeinsam genutzten Code). Diese Ebenen befinden sich außerhalb Ihrer Hauptfunktion, sind jedoch immer verfügbar, wenn Ihre Funktion sie benötigt.
Kurz gesagt, Lambda Layers helfen Ihnen:
Sparen Sie Platz in Ihrem Code, indem Sie die Hauptlogik von den zusätzlichen Bibliotheken trennen.
Verwenden Sie Bibliotheken und Code über mehrere Lambda-Funktionen hinweg wieder.
Aktualisieren oder verwalten Sie Ihre Abhängigkeiten ganz einfach, ohne Ihren Kernfunktionscode zu ändern.
Stellen Sie sich Ebenen als zusätzliche Aufbewahrungsbox vor, die an Ihrer Lambda-Funktion angebracht ist und alles enthält, was Ihre Funktion für einen reibungslosen Betrieb benötigt. Sie können mehrere Ebenen auf Ihrer Funktion stapeln, ohne Ihren Hauptcode zu überladen.
Es sind nur 3 Schritte erforderlich, um Pandas in Ihrer Lambda-Funktion erfolgreich auszuführen
Wie Sie sehen können, haben wir eine Option Layers unter dem Namen unserer Lambda-Funktion, in meinem Fall ist es "import-pandas-function" und die Anzahl der Layer ist 0
Dieser Schritt ist weiter in zwei Schritte unterteilt, da wir ein Python-Skript hinzufügen müssen, das etwas Pandas-Code enthält, und ein Testereignis in JSON schreiben müssen, um zu überprüfen, ob der Code korrekt ausgeführt wird.
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"} ] }
Drücken Sie die Testtaste. Sie erhalten wahrscheinlich den Fehler ?error:-
„errorMessage“: „Modul ‚lambda_function‘ konnte nicht importiert werden: Kein Modul namens ‚pandas‘,
„errorType“: „Runtime.ImportModuleError“
...
Scrollen Sie nach unten zu Ihrer Lambda-Funktion. Am Ende der Seite sehen Sie wahrscheinlich den separaten Abschnitt „Ebenen“
Nachdem Sie auf „Ebene hinzufügen“ geklickt haben, wird die Seite mit den Abschnitten „Funktionslaufzeiteinstellungen“ und „Ebene auswählen“ angezeigt.
Sie können drei Optionen im Abschnitt „Ebene auswählen“ sehen. Klicken Sie auf „AWS-Ebenen“.
Nach der Auswahl der AWS-Ebenen sehen Sie das Dropdown-Menü unter „AWS-Ebenen“.
Wählen Sie in einem Dropdown-Menü mit „AWS-Ebenen“ -> AWSSDKPandas-Python312
Wählen Sie in einem Dropdown-Menü unter „Version“ -> 13 (wählen Sie die am häufigsten verwendete aus)
Klicken Sie auf die Schaltfläche „Hinzufügen“
Wenn Ihre Seite zur Funktionsübersicht weitergeleitet wird, können Sie sehen, dass die Ebene unter dem Funktionsnamen „import-pandas-function“ hinzugefügt wird
Sie haben die Antwort erfolgreich erhalten "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}}}" }
Codierung fortsetzen?
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3