AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
Wie behebe ich die Fehler „Cannot find module“ oder „Cannot find Package“, wenn ich Lambda-Code in Node.js ausführe?
Ich erhalte die Fehlermeldung „Cannot find module“ oder „Cannot find Package“, wenn ich AWS Lambda-Code in Node.js ausführe.
Kurzbeschreibung
Wenn die Lambda-Umgebung die angegebene Bibliothek im Code von Node.js nicht finden kann, erhältst du einen dieser Fehler. Diese Fehler treten auf, weil Lambda nicht mit allen Bibliotheken von Node.js vorverpackt ist.
Wenn bei CommonJS ein Modul fehlt, erhältst du die folgende Fehlermeldung: Runtime.ImportModuleError: Fehler: Modul kann nicht gefunden werden.
Wenn bei JavaScript ES6 ein Modul fehlt, erhalten Sie die folgende Fehlermeldung: **Fehler \ [ERR\ _MODULE\ _NOT\ _FOUND]: Paket kann nicht gefunden werden. **
Lösung
Um diese Fehler zu beheben, erstelle ein Bereitstellungspaket oder eine Lambda-Ebene, die die Bibliotheken enthält, die du im Node.js-Code verwenden möchtest.
Für Node.js Runtimes 16 und früher unterstützt Lambda keine geschichteten JavaScript-ES-Modulabhängigkeiten. Du musst die Abhängigkeiten in die Bereitstellung einbeziehen. Lambda unterstützt JavaScript-ES-Modulabhängigkeiten für Node.js 20.
Erstelle einen Lambda-Ebene anstelle eines Bereitstellungspakets, damit du die Ebene für mehrere Lambda-Funktionen wiederverwenden kannst. Jede Lambda-Runtime fügt der PATH-Variablen bestimmte /opt-Verzeichnisordner hinzu. Wenn die Ebene dieselbe Ordnerstruktur verwendet, kann der Code der Lambda-Funktion auf der Ebenen-Inhalt zugreifen, ohne den Pfad anzugeben.
Wichtig: Die Bibliothek, die du für Node.js importierst, muss sich in der Ordnerstruktur nodejs/node\ _modules befinden.
Es hat sich bewährt, eine Lambda-Ebene auf demselben Betriebssystem zu erstellen, auf dem deine durch Lambda unterstützte Laufzeit basiert. Beispielsweise basieren die aktuellsten Versionen von Node.js auf Amazon Linux 2023 Amazon Machine Images (AMIs).
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI-Version verwendest.
Gehe wie folgt vor, um eine Lambda-Ebene für eine Node.js-Bibliothek zu erstellen:
-
Erstelle eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance aus einem Amazon Linux 2-AMI.
-
Erstelle eine AWS Identity and Access Management (IAM)-Rolle mit Berechtigungen zum Aufrufen der API für die publish-layer-version.
-
Füge die IAM-Rolle der Amazon-EC2-Instance an.
Hinweis: Die EC2-Instance verfügt jetzt über Berechtigungen zum Hochladen von Lambda-Ebenen für den API-Aufruf zur publish-layer-version. -
Verwende SSH, um eine Verbindung zu deiner EC2-Instance herzustellen.
-
Installiere Node.js:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash$ . ~/.nvm/nvm.sh nvm install node -
Erstelle einen ** nodejs**-Ordner:
mkdir nodejs -
Installiere die aws-xray-sdk-Bibliothek im Ordner nodejs:
cd nodejs$ npm init ***answer all queries for initialization that create a package.json file*** npm install --save aws-xray-sdkHinweis: Ersetze die aws-xray-sdk-Beispielbibliothek durch die Bibliothek Node.js, die du importieren möchtest.
-
Erstelle ein Zip-Archiv für die aws-xray-sdk-Bibliothek:
zip -r layer.zip nodejs**Hinweis:**Die aws-xray-sdk-Bibliothek hat das erforderliche Ordnerformat für eine Node.js -Ebene: nodejs/node\ _modules.
-
Um die Lambda-Ebene zu veröffentlichen, führe den folgenden Befehl publish-layer-version aus:
aws lambda publish-layer-version --layer-name xray --zip-file fileb://layer.zip --compatible-runtimes nodejs12.x --region your-regionHinweis: Ersetze your-region durch die AWS-Region.
Informationen zum Hinzufügen der Module ECMAScript 6 (ES6) oder CommonJS im Code findest du unter JavaScript ES6/CommonJS-Syntax.
Ähnliche Informationen
Wie erstelle ich ein Lambda-Bereitstellungspaket für Node.js?
- Themen
- ServerlessCompute
- Tags
- AWS Lambda
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor 7 Monaten
AWS OFFICIALAktualisiert vor 2 Jahren
AWS OFFICIALAktualisiert vor 4 Jahren