Verwenden der Elastic Beanstalk Node.js-Plattform - AWS Elastic Beanstalk

Verwenden der Elastic Beanstalk Node.js-Plattform

Die AWS Elastic Beanstalk-Node.js-Plattform ist eine Reihe von Plattformversionen für Node.js-Webanwendungen, die hinter einem nginx-Proxy-Server ausgeführt werden.

Elastic Beanstalk bietet Konfigurationsoptionen, mit denen sich die auf den EC2-Instances in der Elastic Beanstalk-Umgebung ausgeführte Software anpassen lässt. Sie können die für Ihre Anwendung erforderlichen Umgebungsvariablen konfigurieren, die Protokollrotation an Amazon S3 aktivieren und die Ordner in der Anwendungsquelle, die statische Dateien enthalten, den vom Proxy-Server verwendeten Pfaden zuordnen.

In der Elastic Beanstalk-Konsole sind Konfigurationsoptionen für das Ändern der Konfiguration einer ausgeführten Umgebung verfügbar. Um zu verhindern, dass die Umgebungskonfiguration beim Beenden verloren geht, können Sie gespeicherte Konfigurationen verwenden, um Ihre Einstellungen zu speichern und sie später für eine andere Umgebung zu übernehmen.

Zum Speichern der Einstellungen im Quellcode können Sie Konfigurationsdateien einschließen. Die Einstellungen in Konfigurationsdateien werden jedes Mal verwendet, wenn Sie eine Umgebung erstellen oder Ihre Anwendung bereitstellen. Mit Konfigurationsdateien können Sie auch Pakete installieren, Skripts ausführen und andere Instance-Anpassungen bei Bereitstellungen vornehmen.

Sie können eine Datei Package.json in Ihr Quell-Bundle aufnehmen, um Pakete während der Bereitstellung zu installieren, einen Startbefehl bereitzustellen und die Node.js-Version anzugeben, die Ihre Anwendung verwenden soll. Sie können eine -Datei npm-shrinkwrap.json aufnehmen, um Abhängigkeitsversionen zu sperren.

Die Node.js-Plattform umfasst einen Proxy-Server, um statische Komponenten zu verarbeiten, Datenverkehr an Ihre Anwendung weiterzuleiten und Antworten zu komprimieren. Sie können die für erweiterte Szenarien Proxy-Standardkonfiguration erweitern oder überschreiben.

Es gibt verschiedene Möglichkeiten, um Ihre Anwendung zu starten. Sie können eine Procfile-Datei zu Ihrem Quell-Bundle hinzufügen, um den Befehl anzugeben, mit dem Ihre Anwendung gestartet wird. Wenn Sie kein Procfile bereitstellen, führt Elastic Beanstalk npm start aus, wenn Sie eine package.json-Datei verfügbar machen. Wenn Sie auch dies nicht angeben, sucht Elastic Beanstalk die Dateien app.js oder server.js (in dieser Reihenfolge) und führt sie aus.

Die in der Elastic Beanstalk-Konsole angewendeten Einstellungen überschreiben die entsprechenden Einstellungen in Konfigurationsdateien, falls vorhanden. So sind Standardeinstellungen in Konfigurationsdateien möglich, die Sie mit umgebungsspezifischen Einstellungen in der Konsole überschreiben können. Für weitere Informationen zur Rangfolge und zu anderen Methoden zum Ändern der Einstellungen siehe Konfigurationsoptionen.

Details zu den verschiedenen Möglichkeiten für das Erweitern einer Linux-basierten Elastic Beanstalk-Plattform finden Sie unter Erweitern von Elastic Beanstalk-Linux-Plattformen.

Konfigurieren der Node.js-Umgebung

Mit den Einstellungen der Node.js-Plattform können Sie das Verhalten Ihrer Amazon-EC2-Instances optimieren. Sie können die Amazon-EC2-Instance-Konfiguration der Elastic-Beanstalk-Umgebung mit der Elastic-Beanstalk-Konsole bearbeiten.

Mithilfe der Elastic Beanstalk-Konsole aktivieren Sie die Protokollrotation an Amazon S3 und konfigurieren Variablen, die die Anwendung aus der Umgebung auslesen kann.

So konfigurieren Sie Ihre Node.js-Umgebung in der Elastic Beanstalk-Konsole

  1. Öffnen Sie die Elastic-Beanstalk-Konsole und wählen Sie in der Liste Regions (Regionen) Ihre AWS-Region aus.

  2. Wählen Sie im Navigationsbereich Environments (Umgebungen) aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

    Anmerkung

    Wenn Sie viele Umgebungen haben, verwenden Sie die Suchleiste, um die Umgebungsliste zu filtern.

  3. Wählen Sie im Navigationsbereich Configuration (Konfiguration) aus.

  4. Wählen Sie in der Software-Konfigurationskategorie Edit (Bearbeiten) aus.

Containeroptionen

Sie können die folgenden plattformspezifischen Optionen angeben:

  • Proxy server (Proxy-Server) – Der Proxy-Server, der in Ihren Umgebungs-Instances verwendet werden soll. Standardmäßig wird NGNIX verwendet.

Protokolloptionen

Im Abschnitt mit den Protokolloptionen sind zwei Einstellungen vorhanden:

  • Instance profile (Instance-Profil) – Gibt das Instance-Profil an, das zum Zugriff auf den mit der Anwendung verknüpften Amazon-S3-Bucket berechtigt ist.

  • Enable log file rotation to Amazon S3 (Protokolldateirotation für Amazon S3 aktivieren) – Gibt an, ob die Protokolldateien für die Amazon EC2-Instances der Anwendung in den der Anwendung zugeordneten Amazon S3-Bucket kopiert werden sollen.

Statische Dateien

Um die Leistung zu verbessern, können Sie im Abschnitt Static files (Statische Dateien) den Proxy-Server so konfigurieren, dass er statische Dateien (z. B. HTML oder Bilder) aus Verzeichnissen innerhalb Ihrer Webanwendung bereitstellt. Legen Sie für jedes Verzeichnis den virtuellen Pfad zum Verzeichnis-Mapping fest. Wenn der Proxy-Server eine Anfrage nach einer Datei unter dem angegebenen Pfad erhält, stellt er die Datei direkt bereit, anstatt die Anfrage an Ihre Anwendung weiterzuleiten.

Weitere Informationen zum Konfigurieren statischer Dateien mit der Elastic Beanstalk-Konsole finden Sie unter Bereitstellen von statischen Dateien.

Umgebungseigenschaften

Im Bereich Environment Properties (Umgebungseigenschaften) können Sie die Einstellungen für die Umgebungskonfiguration der Amazon-EC2-Instances angeben, auf denen die Anwendung ausgeführt wird. Diese Einstellungen werden als Schlüsselwert-Paare an die Anwendung weitergeleitet.

Innerhalb der Node.js-Umgebung, die in AWS Elastic Beanstalk ausgeführt wird, können Sie die Umgebungsvariablen mit process.env.ENV_VARIABLE wie im folgenden Beispiel hinzufügen.

var endpoint = process.env.API_ENDPOINT

Die Node.js-Plattform legt die PORT-Umgebungsvariable auf den Port fest, an den der Proxy-Server den Datenverkehr weiterleitet. Weitere Informationen finden Sie unter .Konfigurieren des Proxy-Server

Weitere Informationen finden Sie unter Umgebungseigenschaften und andere Softwareeinstellungen.

Konfigurieren einer Amazon Linux AMI Node.js-Umgebung (Vorgängerversion von Amazon Linux 2)

Die folgenden Konfigurationskategorien für Konsolensoftware werden nur in einer Elastic Beanstalk Node.js-Umgebung unterstützt, die eine Amazon Linux AMI-Plattformversion (vor Amazon Linux 2) verwendet.

Anmerkung

Amazon Linux 2-Plattformversionen sind mit früheren Amazon Linux AMI-Plattformversionen nicht kompatibel. Wenn Sie Ihre Elastic Beanstalk-Anwendung zu Amazon Linux 2 migrieren, lesen Sie Migrieren Ihrer Elastic-Beanstalk-Linux-Anwendung auf Amazon Linux 2.

Geben Sie auf der Konfigurationsseite Folgendes ein:

  • Proxy Server – Gibt den Webserver an, der für Proxy-Verbindungen zu Node.js verwendet werden soll. Standardmäßig wird NGINX verwendet. Wenn Sie none (keine) auswählen, sind statische Dateizuordnungen nicht wirksam und die GZIP-Komprimierung ist deaktiviert.

  • Node.js version (Version von Node js) – Gibt die Version von Node.js an. Die Liste der unterstützten Node.js-Versionen finden Sie unter Node.js im Handbuch für AWS Elastic Beanstalk-Plattformen.

  • Gzip compression (Gzip-Komprimierung) – Gibt an, ob die GZIP-Komprimierung aktiviert ist. Die GZIP-Komprimierung ist standardmäßig aktiviert.

  • Node Command (Knotenbefehl) – Hier können Sie den Befehl eingeben, der zum Starten der Node.js-Anwendung verwendet wird. Eine leere Zeichenfolge (Standard) bedeutet, dass Elastic Beanstalk erst app.js, dann server.js und dann npm start verwendet.

Namespace für Node.js-Konfigurationen

Mithilfe einer Konfigurationsdatei können Sie im Rahmen der Bereitstellung Konfigurationsoptionen festlegen und andere Instance-Konfigurationsaufgaben durchführen. Konfigurationsoptionen können durch den Elastic Beanstalk-Service oder die verwendete Plattform definiert und in Namespaces organisiert werden.

Sie können mittels des Namespace aws:elasticbeanstalk:environment:proxy den Proxy auswählen, der für die Instances Ihrer Umgebung verwendet werden soll. Im folgenden Beispiel wird Ihre Umgebung für die Verwendung des Apache HTTPD-Proxy-Server konfiguriert.

Beispiel .ebextensions/nodejs-settings.config

option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: apache

Sie können den Proxy so konfigurieren, dass statische Dateien mittels des Namespace aws:elasticbeanstalk:environment:proxy:staticfiles bereitgestellt werden. Weitere Informationen sowie ein Beispiel finden Sie unter Bereitstellen von statischen Dateien.

Elastic Beanstalk bietet zahlreiche Konfigurationsoptionen für die Anpassung Ihrer Umgebung. Neben den Konfigurationsdateien können Sie die Konfigurationsoptionen auch unter Verwendung der Konsole, gespeicherter Konfigurationen, der EB CLI oder der AWS CLI einrichten. Weitere Informationen finden Sie unter Konfigurationsoptionen.

Die Amazon Linux AMI Node-js-Plattform (Vorgängerversion von Amazon Linux 2)

Anmerkung

Amazon Linux 2-Plattformversionen sind mit früheren Amazon Linux AMI-Plattformversionen nicht kompatibel. Wenn Sie Ihre Elastic Beanstalk-Anwendung zu Amazon Linux 2 migrieren, lesen Sie Migrieren Ihrer Elastic-Beanstalk-Linux-Anwendung auf Amazon Linux 2.

Wenn die Elastic-Beanstalk-Node.js-Umgebung eine Amazon-Linux-AMI-Plattformversion verwendet (vor Amazon Linux 2), beachten Sie die speziellen Konfigurationen und Empfehlungen in diesem Abschnitt.

Elastic Beanstalk unterstützt einige plattformspezifische Konfigurationsoptionen für Amazon Linux AMI Node.js-Plattformversionen. Sie können auswählen, welchen Proxy-Server Sie vor Ihrer Anwendung ausführen möchten, eine bestimmte Version von Node.js für die Ausführung verwenden und den Befehl wählen, um Ihre Anwendung auszuführen.

Für Proxyserver können Sie einen NGINX- oder Apache-Proxy-Server verwenden. Sie können den Wert none auf die Option ProxyServer festlegen. Mit dieser Einstellung führt Elastic Beanstalk Ihre Anwendung als eigenständige Anwendung aus und nicht hinter einem Proxy-Server. Wenn in Ihrer Umgebung eine eigenständige Anwendung ausgeführt wird, aktualisieren Sie den Code so, dass dem Port zugehört wird, an den NGINX den Datenverkehr weiterleitet.

var port = process.env.PORT || 8080; app.listen(port, function() { console.log('Server running at http://127.0.0.1:%s', port); });

In Bezug auf die unterstützte Sprachversion unterscheidet sich die Amazon-Linux-AMI-Node.js-Plattform von anderen von Elastic Beanstalk verwalteten Plattformen. Das liegt daran, dass jede Node.js-Plattformversion nur wenige Node.js-Sprachversionen unterstützt. Die Liste der unterstützten Node.js-Versionen finden Sie unter Node.js im Handbuch für AWS Elastic Beanstalk-Plattformen.

Sie können eine plattformspezifische Konfigurationsoption verwenden, um die Sprachversion festzulegen. Detaillierte Anweisungen finden Sie unter Konfigurieren der Node.js-Umgebung. Alternativ können Sie die Elastic-Beanstalk-Konsole verwenden, um die Node.js-Version zu aktualisieren, die Ihre Umgebung als Teil der Aktualisierung Ihrer Plattformversion verwendet.

Anmerkung

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

In diesem Fall tritt bei dem Versuch, ein Upgrade auf eine neue Plattformversion, die die konfigurierte NodeVersion nicht unterstützt, ein Fehler auf. Um keine neue Umgebung erstellen zu müssen, ändern Sie die Konfigurationsoption NodeVersion in eine Node.js-Version, die sowohl von der alten als auch von der neuen Plattformversion unterstützt wird, oder entfernen Sie die Optionseinstellung und führen Sie dann die Plattformaktualisierung aus.

So konfigurieren Sie die Node.js-Version Ihrer Umgebung in der Elastic Beanstalk-Konsole

  1. Öffnen Sie die Elastic-Beanstalk-Konsole und wählen Sie in der Liste Regions (Regionen) Ihre AWS-Region aus.

  2. Wählen Sie im Navigationsbereich Environments (Umgebungen) aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

    Anmerkung

    Wenn Sie viele Umgebungen haben, verwenden Sie die Suchleiste, um die Umgebungsliste zu filtern.

  3. Wählen Sie auf der Umgebungsübersichtsseite unter Platform (Plattform) die Option Change (Ändern) aus.

  4. Wählen Sie im Dialogfeld Update platform version (Plattformversion aktualisieren) eine Node.js-Version aus.

    
                Bestätigen der Aktualisierung der Elastic-Beanstalk-Plattformversion
  5. Wählen Sie Save (Speichern) aus.

Die Node.js-Amazon Linux AMI-Plattform definiert zusätzliche Optionen in den Namespaces aws:elasticbeanstalk:container:nodejs:staticfiles und aws:elasticbeanstalk:container:nodejs.

Die folgende Konfigurationsdatei weist Elastic Beanstalk an, zum Ausführen der Anwendung npm start zu verwenden. Sie legt auch den Proxytyp auf Apache fest und aktiviert die Komprimierung. Zuletzt konfiguriert sie den Proxy, um statische Dateien aus zwei Quellverzeichnissen bereitzustellen. Eine Quelle besteht aus HTML-Dateien unter dem Pfad html im Stammverzeichnis der Website aus dem statichtmlQuellverzeichnis von . Die andere Quelle besteht aus Image-Dateien unter dem Pfad images im Stammverzeichnis der Website aus dem staticimagesQuellverzeichnis.

Beispiel .ebextensions/node-settings.config

option_settings: aws:elasticbeanstalk:container:nodejs: NodeCommand: "npm start" ProxyServer: apache GzipCompression: true aws:elasticbeanstalk:container:nodejs:staticfiles: /html: statichtml /images: staticimages

Elastic Beanstalk bietet zahlreiche Konfigurationsoptionen für die Anpassung Ihrer Umgebung. Neben den Konfigurationsdateien können Sie die Konfigurationsoptionen auch unter Verwendung der Konsole, gespeicherter Konfigurationen, der EB CLI oder der AWS CLI einrichten. Weitere Informationen finden Sie unter Konfigurationsoptionen.