Konfiguration der Abhängigkeiten Ihrer Anwendung von Elastic Beanstalk - AWS Elastic Beanstalk

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfiguration der Abhängigkeiten Ihrer Anwendung von Elastic Beanstalk

Ihre Anwendung hat möglicherweise Abhängigkeiten von einigen Node.js Module, z. B. die, die Sie in require() Anweisungen angeben. Diese Module werden in einem node_modules-Verzeichnis gespeichert. Wenn Ihre Anwendung ausgeführt wird, Node.js lädt die Module aus diesem Verzeichnis. Weitere Informationen finden Sie unter Laden aus den Ordnern node_modules im Node.js -Dokumentation.

Sie können diese Modul-Abhängigkeiten mithilfe einer package.json-Datei angeben. Wenn Elastic Beanstalk diese Datei erkennt und kein node_modules-Verzeichnis vorhanden ist, führt Elastic Beanstalk npm install als der webapp-Benutzer aus. Der npm install-Befehl installiert die Abhängigkeiten in dem node_modules-Verzeichnis, das Elastic Beanstalk zuvor erstellt hat. Der npm install-Befehl greift auf die in der package.json-Datei aufgeführten Pakete aus der öffentlichen npm-Registrierung oder von anderen Orten zu. Weitere Informationen finden Sie auf der Website npm-Dokumente.

Wenn Elastic Beanstalk das node_modules-Verzeichnis erkennt, führt Elastic Beanstalk npm install nicht aus, auch wenn eine package.json-Datei existiert. Elastic Beanstalk geht davon aus, dass die Abhängigkeitspakete im node_modules Verzeichnis für verfügbar sind Node.js zum Zugreifen und Laden.

In den folgenden Abschnitten finden Sie weitere Informationen zur Einrichtung Ihres Node.js Modulabhängigkeiten für Ihre Anwendung.

Anmerkung

Wenn bei der Ausführung von npm install durch Elastic Beanstalk Probleme bei der Bereitstellung auftreten, sollten Sie einen alternativen Ansatz in Betracht ziehen. Fügen Sie das node_modules-Verzeichnis mit den Abhängigkeiten zu Ihrem Anwendungs-Quell-Bundle hinzu. Dadurch können Sie Probleme bei der Installation von Abhängigkeiten aus der öffentlichen npm-Registry umgehen, während Sie das Problem untersuchen. Da die Abhängigkeitsmodule aus einem lokalen Verzeichnis stammen, kann dies auch dabei helfen, die Bereitstellungszeit zu verkürzen. Weitere Informationen finden Sie unter Einschließlich Node.js Abhängigkeiten in einem node_modules-Verzeichnis

Spezifizieren Node.js Abhängigkeiten mit einer package.json-Datei

Sie können mithilfe einer package.json-Datei im Stammverzeichnis Ihrer Projektquelle Abhängigkeitspakete angeben und einen Startbefehl bereitstellen. Wenn eine package.json-Datei vorhanden ist und kein node_modules-Verzeichnis im Stammverzeichnis Ihrer Projektquelle vorhanden ist, wird Elastic Beanstalk npm install als webapp-Benutzer ausführen, um Abhängigkeiten aus der öffentlichen npm-Registry zu installieren. Außerdem wird Elastic Beanstalk die Anwendung mit dem Befehl start starten. Weitere Informationen zur package.json-Datei finden Sie unter Angeben von Abhängigkeiten in einer package.json-Datei auf der npm-Docs-Website.

Geben Sie mit dem Schlüsselwort scripts einen Startbefehl an. Derzeit wird das Schlüsselwort scripts anstelle der Legacy-Option NodeCommand im Namespace aws:elasticbeanstalk:container:nodejs verwendet.

Beispiel package.json – Express
{ "name": "my-app", "version": "0.0.1", "private": true, "dependencies": { "ejs": "latest", "aws-sdk": "latest", "express": "latest", "body-parser": "latest" }, "scripts": { "start": "node app.js" } }
Produktionsmodus und Entwicklungsabhängigkeiten

Verwenden Sie die Abhängigkeiten und Attribute, um Ihre Abhängigkeiten in der package.json Datei anzugeben. devDependencies Das Attribut dependencies bezeichnet Pakete, die Ihre Anwendung in der Produktion benötigt. Das devDependenciesAttribut kennzeichnet Pakete, die nur für lokale Entwicklung und Tests benötigt werden.

Elastic Beanstalk wird npm install als webapp-Benutzer mit den folgenden Befehlen ausführen. Die Befehlsoptionen variieren je nach der npm-Version, die im Plattformzweig enthalten ist, auf dem Ihre Anwendung ausgeführt wird.

  • npm v6 – Elastic Beanstalk installiert die Abhängigkeiten standardmäßig im Produktionsmodus. Es verwendet den Befehl npm install --production.

  • npm v7 oder höher — Elastic Beanstalk lässt das weg. devDependencies Es verwendet den Befehl npm install --omit=dev.

Beide oben aufgeführten Befehle installieren nicht die Pakete, die es sind. devDependencies

Wenn Sie die devDependenciesPakete installieren müssen, setzen Sie die PRODUCTION Umgebungseigenschaft NPM USE _ _ auffalse. Mit dieser Einstellung werden wir die obigen Optionen nicht verwenden, wenn wir npm install ausführen. Dies führt dazu, dass die devDependenciesPakete installiert werden.

SSHund HTTPS

Ab der Amazon Linux 2-Plattformversion vom 7. März 2023 können Sie auch die HTTPS Protokolle SSH und verwenden, um Pakete aus einem Git-Repository abzurufen. Plattformzweig Node.js 16 unterstützt sowohl die als SSH auch die HTTPS Protokolle. Node.js 14 unterstützt nur das HTTPS Protokoll.

Beispiel package.json — Node.js 16 unterstützt sowohl als HTTPS SSH
... "dependencies": { "aws-sdk": "https://github.com/aws/aws-sdk-js.git", "aws-chime": "git+ssh://git@github.com:aws/amazon-chime-sdk-js.git" }

Versionen und Versionsbereiche

Wichtig

Die Funktion zur Angabe von Versionsbereichen ist für Plattformzweige von Node.js, die auf AL2 023 ausgeführt werden, nicht verfügbar. Wir unterstützen nur eine Version von Node.js innerhalb eines bestimmten Node.js -Zweigs auf AL2 023. Wenn Ihre package.json-Datei einen Versionsbereich angibt, ignorieren wir diesen und verwenden standardmäßig die Version des Plattformzweigs von Node.js.

Verwenden Sie das engines Schlüsselwort in der package.json Datei, um Folgendes anzugeben Node.js Version, die Ihre Anwendung verwenden soll. Mit der npm-Notation können Sie auch einen Versionsbereich angeben. Weitere Informationen zur Syntax für Versionsbereiche finden Sie unter Semantische Versionierung mit npm auf der Node.js Webseite. Das engines Schlüsselwort in der Node.js package.jsonfile ersetzt die ältere NodeVersion Option im aws:elasticbeanstalk:container:nodejs Namespace.

Beispiel package.json— Einzeln Node.js version
{ ... "engines": { "node" : "14.16.0" } }
Beispiel package.json – Node.js Versionsbereich
{ ... "engines": { "node" : ">=10 <11" } }

Wenn ein Versionsbereich angegeben wird, installiert Elastic Beanstalk den neuesten Node.js Version, die auf der Plattform innerhalb des Bereichs verfügbar ist. In diesem Beispiel gibt der Bereich an, dass die Version größer oder gleich als Version 10 sein muss, aber kleiner als Version 11. Aus diesem Grund installiert Elastic Beanstalk die neueste Node.js version 10.x.y, das auf der unterstützten Plattform verfügbar ist.

Beachten Sie, dass Sie nur eine angeben können Node.js Version, die Ihrem Plattformzweig entspricht. Wenn Sie zum Beispiel die verwenden Node.js 16 Plattformzweig, Sie können nur einen angeben 16.x.y Node.js Version. Sie können die von npm unterstützten Versionsbereichsoptionen verwenden, um eine größere Flexibilität zu ermöglichen. Für gültig Node.js Versionen für jeden Plattformzweig finden Sie unter Node.jsim AWS Elastic Beanstalk Plattformhandbuch.

Anmerkung

Wenn die von Ihnen verwendete Version von Node.js von der Plattform nicht mehr unterstützt wird, müssen Sie die Einstellung der Node.js-Version vor der Ausführung einer Plattform-Aktualisierung ändern oder löschen. Dieser Fall kann eintreten, wenn eine Schwachstelle bei einer oder mehreren Versionen von Node.js identifiziert wird.

In diesem Fall schlägt die Aktualisierung auf eine neue Plattformversion, die die konfigurierte Node.js-Version nicht unterstützt, fehl. Um zu vermeiden, dass eine neue Umgebung erstellt werden muss, ändern Sie die Einstellung der Node.js-Version in package.json in eine Node.js-Version, die sowohl von der alten als auch von der neuen Version unterstützt wird. Sie können einen Node.js-Versionsbereich angeben, der eine unterstützte Version enthält, wie oben in diesem Thema beschrieben. Außerdem können Sie die Einstellung entfernen und dann das neue Quellpaket bereitstellen.

Einschließlich Node.js Abhängigkeiten in einem node_modules-Verzeichnis

Wenn Sie Abhängigkeitspakete zusammen mit Ihrem Anwendungscode in Umgebungsinstances bereitstellen möchten, fügen Sie sie in das Verzeichnis node_modules im Stammverzeichnis der Projektquelle ein. Weitere Informationen finden Sie unter Pakete lokal herunterladen und installieren auf der npm-Docs-Website.

Wenn Sie ein node_modules Verzeichnis in einem 023/ bereitstellen AL2 AL2 Node.js Bei der Plattformversion geht Elastic Beanstalk davon aus, dass Sie Ihre eigenen Abhängigkeitspakete bereitstellen, und vermeidet die Installation von Abhängigkeiten, die in einer package.json-Datei angegeben sind. Node.js sucht im Verzeichnis nach Abhängigkeiten. node_modules Weitere Informationen finden Sie unter Laden aus node_modules-Ordnern im Node.js -Dokumentation.

Anmerkung

Wenn bei der Ausführung von npm install durch Elastic Beanstalk Probleme bei der Bereitstellung auftreten, sollten Sie bei der Untersuchung des Problems den in diesem Thema beschriebenen Ansatz als Workaround verwenden.