Wie erstelle ich ein Lambda-Bereitstellungs-Paket für Node.js?

Lesedauer: 4 Minute
0

Ich möchte ein Bereitstellungs-Paket für eine AWS Lambda-Funktion in Node.js erstellen, erhalte aber während des Aufrufs die Fehlermeldung „Modul kann nicht gefunden werden“.

Kurzbeschreibung

Der Fehler Modul kann nicht gefunden werden tritt normalerweise aus einem von drei Gründen auf:

  • Das Bereitstellungspaket der Lambda-Funktion hat nicht die richtige Ordnerstruktur, damit der Lambda-Dienst die erforderlichen Module und Bibliotheken laden kann.
  • Das Bereitstellungspaket hat nicht die richtigen Dateiberechtigungen.
  • Das Bereitstellungspaket enthält nicht das Modul, das importiert wird.

Hinweis: Lambda benötigt globale Leseberechtigungen.

Lösung

Gehen Sie wie folgt vor, um ein Bereitstellungs-Paket mit Funktionscode im Stammordner der ZIP-Datei zu erstellen und dann Lese- und Ausführungsberechtigungen für alle Dateien anzuwenden.

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten,stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Für Linux und macOS

Installieren Sie Abhängigkeiten in den Projektordner der Funktion

Hinweis: Die meisten Module von Node.js sind plattformunabhängig, einige wurden jedoch für bestimmte Betriebssystemumgebungen kompiliert. Lambda läuft in einer Linux-Umgebung. Bei der Installation von Modulen mit npm empfiehlt es sich, die ZIP-Datei in einer Linux-Umgebung zu erstellen, um sicherzustellen, dass die richtigen Plattformabhängigkeiten enthalten sind.

1.    Ändern Sie in der Befehlszeile die Verzeichnisse in Ihren Projektordner. Zum Beispiel:

cd /project-folder-name

Wichtig: Stellen Sie sicher, dass Sie project-folder-name durch den Namen Ihres tatsächlichen Projektordners ersetzen.

2.    Installieren Sie Ihre Abhängigkeiten lokal in Ihrem Funktionsprojektordner, indem Sie den folgenden Befehl für jedes Modul ausführen, das für Ihre Funktion erforderlich ist:

Hinweis: Fügen Sie auch die Handler-Quelldatei hinzu.

npm install package-name

Wichtig: Achten Sie darauf, den package-name durch den tatsächlichen Paketnamen zu ersetzen. Es gibt auch ein Limit von 250 MB für Ihre Funktionsgröße für entpackte Dateien. Fügen Sie nur die Bibliotheken hinzu, die Sie für das Funktionieren Ihrer Funktion benötigen.

Um beispielsweise das AWS-SDK für JavaScript-Module im Stammverzeichnis eines Projektordners zu installieren, führen Sie den folgenden Befehl aus:

npm install aws-sdk

Hinweis: Lambda enthält das AWS-SDK für JavaScript-Bibliotheken als Teil der Basiscontainerkonfiguration. Um eine andere Version der Bibliothek zu verwenden, können Sie auch eine lokale Kopie hinzufügen. Weitere Informationen zur aktuellen Lambda-Umgebung und zu unterstützten Bibliotheken finden Sie unter Lambda-Laufzeiten.

Erstellen Sie das Bereitstellungs-Paket

Führen Sie in der Befehlszeile den folgenden Befehl aus:

zip -r ../function-name.zip .

Hinweis: Ersetzen Sie function-name durch den Dateinamen, den Sie Ihrem Bereitstellungs-Paket geben möchten. Dadurch werden alle Dateien im Projektordner in einer ZIP-Datei gespeichert, die sich im übergeordneten Ordner befindet.

Überprüfen Sie das Bereitstellungs-Paket

1.    Führen Sie in der Befehlszeile den folgenden Befehl aus:

zipinfo ../function-name.zip

Hinweis: Ersetzen Sie den function-name durch den tatsächlichen Dateinamen Ihres Bereitstellungs-Pakets. Oder Sie können unzip -l für die ZIP-Datei ausführen, um den Inhalt aufzulisten, aber die Ausgabe wird nicht so detailliert sein.

2.    Überprüfen Sie die Ausgabe, um sicherzustellen, dass sich die Function-Handler-Quelldatei im Stammverzeichnis der ZIP-Datei befindet.

3.    Überprüfen Sie die Ausgabe, um sicherzustellen, dass Ihre Dateien über globale Leseberechtigungen verfügen. Weitere Informationen finden Sie unter Wie behebe ich die Fehler „Berechtigung verweigert“ oder „Modul kann nicht importiert werden“ beim Hochladen eines Lambda-Bereitstellungs-Pakets?

Für Windows

Erstellen Sie das Bereitstellungs-Paket

1.    Öffnen Sie im Datei-Explorer Ihren Projektordner.

2.    Wählen Sie alle Projektdateien aus und klicken Sie dann mit der rechten Maustaste, um das Kontextmenü zu öffnen.

3.    Wählen Sie Senden an und dann Komprimierter (gezippter) Ordner.

4.    Geben Sie einen Namen für die .zip-Datei ein.

Laden Sie das Bereitstellungs-Paket hoch und überprüfen Sie es

1.    Wählen Sie in der Lambda-Konsole Ihre Funktion aus.

2.    Wählen Sie unter Funktionscode für Codeeingabetyp die Option Eine ZIP-Datei hochladen aus.

3.    Wählen Sie unter Funktionspaket die Option Hochladen aus.

4.    Wählen Sie die von Ihnen erstellte ZIP-Datei aus, und wählen Sie dann Öffnen.

5.    Wählen Sie oben in der Konsole Speichern aus.

Tipp: Sie können den update-function-code auch über die AWS-CLI ausführen, um Ihre ZIP-Datei hochzuladen.

6.    Nachdem der Upload abgeschlossen ist, wählen Sie Test.

Tipp: Sie können 7-Zip auch von der Befehlszeile aus verwenden, um die Dateiberechtigungen Ihres Bereitstellungs-Pakets zu überprüfen. Laden Sie es von der 7-Zip-Website herunter.


Ähnliche Informationen

Stellen Sie die Lambda-Funktionen von Node.js mit ZIP-Dateiarchiven bereit

Lambda-Bereitstellungspakete

Lambda-Funktionen mit Node.js erstellen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren