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 verfügt möglicherweise über Abhängigkeiten von einigen Node.js-Modulen, wie z. B. Modulen, die Sie in require()-Anweisungen angeben. Diese Module werden in einem node_modules-Verzeichnis gespeichert. Wenn Ihre Anwendung ausgeführt wird, lädt Node.js die Module aus diesem Verzeichnis. Weitere Informationen finden Sie in der Node.js-Dokumentation unter Laden aus den Ordnern „node_modules“.

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 verfügbar sind, sodass sie von Node.js abgerufen und geladen werden können.

In den folgenden Abschnitten erhalten Sie weitere Informationen zu den 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ßen von Node.js-Abhängigkeiten in ein node_modules-Verzeichnis.

Angeben von 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 Attribute dependencies und devDependencies, um Ihre Abhängigkeiten in der package.json-Datei anzugeben. Das Attribut dependencies bezeichnet Pakete, die Ihre Anwendung in der Produktion benötigt. Das Attribut devDependencies bezeichnet Pakete, die nur für die lokale Entwicklung und das Testen 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 die devDependencies weg. Es verwendet den Befehl npm install --omit=dev.

Beide oben aufgeführten Befehle installieren keine Pakete, bei denen es sich um devDependencies handelt.

Wenn Sie die devDependencies-Pakete installieren müssen, setzen Sie die Umgebungseigenschaft NPM_USE_PRODUCTION auf false. Mit dieser Einstellung werden wir die obigen Optionen nicht verwenden, wenn wir npm install ausführen. Dies führt dazu, dass die devDependencies-Pakete installiert werden.

SSH und HTTPS

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

Beispiel package.json – Node.js 16 unterstützt sowohl HTTPS als auch 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 Schlüsselwort engines in der Datei package.json, um die Node.js-Version anzugeben, 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 Versionsverwaltung mit npm auf der Website Node.js. Das Schlüsselwort engines in der Node.js package.json-Datei ersetzt die ältere Option NodeVersion im aws:elasticbeanstalk:container:nodejs-Namespace.

Beispiel package.json – Einzelne 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 die neueste Node.js-Version, die der Plattform innerhalb des Bereichs zur Verfügung steht. In diesem Beispiel gibt der Bereich an, dass die Version größer oder gleich als Version 10 sein muss, aber kleiner als Version 11. Infolgedessen installiert Elastic Beanstalk die neueste Version von Node.js 10.x.y, die auf der unterstützten Plattform verfügbar ist.

Beachten Sie, dass Sie jeweils nur eine Node.js-Version angeben können, die Ihrem Plattformzweig entspricht. Wenn Sie beispielsweise den Plattformzweig Node.js 16 verwenden, können Sie nur eine 16.x.y-Version Node.js angeben. Sie können die von npm unterstützten Versionsbereichsoptionen verwenden, um eine größere Flexibilität zu ermöglichen. Gültige Versionen von Node.js für jeden Plattformzweig finden Sie unter Node.js im Handbuch AWS Elastic Beanstalk -Plattformen.

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ßen von Node.js-Abhängigkeiten in ein 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 auf einer AL2 Node.js Plattformversion AL2 023/ bereitstellen, 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.jssucht im Verzeichnis nach Abhängigkeiten. node_modules Weitere Informationen finden Sie unter Laden aus node_modules-Ordnern in der 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.