

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.

# Verwenden der Elastic Beanstalk Node.js-Plattform
<a name="create_deploy_nodejs.container"></a>

In diesem Thema wird beschrieben, wie Sie Ihre Node.js -Anwendungen auf Elastic Beanstalk konfigurieren, erstellen und ausführen.

AWS Elastic Beanstalk unterstützt eine Reihe von Plattformzweigen für verschiedene Versionen der Programmiersprache Node.js. Eine vollständige Liste finden Sie unter [Node.js](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs) im Dokument *AWS Elastic Beanstalk Platforms*.

Elastic Beanstalk bietet [Konfigurationsoptionen](command-options.md), mit denen sich die auf den EC2-Instances in der Elastic-Beanstalk-Umgebung ausgeführte Software anpassen lässt. Sie können die von Ihrer Anwendung benötigten [Umgebungsvariablen konfigurieren](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console), 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](environment-configuration-methods-after.md) verfügbar. Um zu verhindern, dass die Umgebungskonfiguration beim Beenden verloren geht, können Sie [gespeicherte Konfigurationen](environment-configuration-savedconfig.md) 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](ebextensions.md) 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 `Package.json`-Datei in Ihr Quell-Bundle aufnehmen](nodejs-platform-dependencies.md#nodejs-platform-packagejson), 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`](nodejs-platform-shrinkwrap.md) 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](nodejs-platform-proxy.md).

Es gibt verschiedene Möglichkeiten, um Ihre Anwendung zu starten. Sie können [Procfile](nodejs-configuration-procfile.md) zu Ihrem Quell-Bundle hinzufügen, um den Befehl anzugeben, mit dem Ihre Anwendung gestartet wird. Wenn Sie kein `Procfile` bereitstellen, aber stattdessen eine `package.json`-Datei verfügbar machen führt Elastic Beanstalk `npm start` aus. Wenn Sie auch dies nicht angeben, sucht Elastic Beanstalk die Datei von `app.js` oder `server.js` (in dieser Reihenfolge) und führt das Script 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](command-options.md).

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](platforms-linux-extend.md).

## Konfiguration der Node.js-Umgebung
<a name="nodejs-platform-console"></a>

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 Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

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

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

1. Wählen Sie in der Konfigurationskategorie **Updates, monitoring and logging ** (Updates, Überwachung und Protokolle) die Option **Edit** (Bearbeiten) aus.

### Container-Optionen
<a name="nodejs-platform-console-settings"></a>

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 NGINX verwendet.

### Protokolloptionen
<a name="nodejs-platform-console-logging"></a>

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.

### Statische Dateien
<a name="nodejs-platform-console-staticfiles"></a>

Um die Leistung zu verbessern, können Sie den Abschnitt **Static files** (Statische Dateien) benutzen, um den Proxy-Server so zu 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](environment-cfg-staticfiles.md).

### Umgebungseigenschaften
<a name="nodejs-platform-console-envprops"></a>

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.

In der Node.js Umgebung, in der ausgeführt wird AWS Elastic Beanstalk, können Sie auf die Umgebungsvariablen zugreifen, indem Sie den Befehl ausführen`process.env.ENV_VARIABLE`.

```
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](nodejs-platform-proxy.md).

Weitere Informationen finden Sie unter [Umgebungsvariablen und andere Softwareeinstellungen](environments-cfg-softwaresettings.md).

### Konfigurieren einer Amazon Linux AMI (Vorgängerversion von Amazon Linux 2) Node.js-Umgebung
<a name="nodejs-platform-console.alami"></a>

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.

**Hinweise**  
Die Informationen in diesem Thema gelten nur für Plattformbranches, die auf Amazon Linux AMI (AL1) basieren. AL2023/AL2 Plattformbranches sind nicht mit früheren Amazon Linux AMI (AL1) -Plattformversionen kompatibel und *erfordern andere Konfigurationseinstellungen*.
 [Am 18. Juli 2022](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **hat Elastic Beanstalk den Status aller Plattformbranches, die auf Amazon Linux AMI (AL1) basieren, auf eingestellt gesetzt.** Weitere Informationen zur Migration zu einem aktuellen und vollständig unterstützten Plattformzweig für Amazon Linux 2023 finden Sie unter [Migrieren der Elastic-Beanstalk-Linux-Anwendung zu Amazon Linux 2023 oder Amazon Linux 2](using-features.migration-al.md).

#### Container-Optionen — Amazon Linux AMI (AL1)
<a name="nodejs-platform-console-settings"></a>

Geben Sie auf der Konfigurationsseite Folgendes ein:
+ **Proxy Server** (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** – Gibt die Version von Node.js an. Die Liste der unterstützten Node.js-Versionen finden Sie unter [https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs) im Handbuch für *AWS Elastic Beanstalk -Plattformen*.
+ **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.

## Node.js-Konfigurations-Namespace
<a name="nodejs-namespaces"></a>

Mithilfe einer [Konfigurationsdatei](ebextensions.md) können Sie im Rahmen der Bereitstellung Konfigurationsoptionen festlegen und andere Instance-Konfigurationsaufgaben durchführen. Die Konfigurationsoptionen können [plattformspezifisch](command-options-specific.md) sein oder für [alle Plattformen](command-options-general.md) im Elastic Beanstalk-Service als Ganzes gelten. *Die Konfigurationsoptionen sind in Namespaces organisiert.*

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.

**Example .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](environment-cfg-staticfiles.md).

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](command-options.md).

## Die Amazon Linux AMI (Vorgängerversion von Amazon Linux 2) Node.js-Plattform
<a name="nodejs.alami"></a>

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.

**Hinweise**  
Die Informationen in diesem Thema gelten nur für Plattformbranches, die auf Amazon Linux AMI (AL1) basieren. AL2023/AL2 Plattformbranches sind nicht mit früheren Amazon Linux AMI (AL1) -Plattformversionen kompatibel und *erfordern andere Konfigurationseinstellungen*.
 [Am 18. Juli 2022](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **hat Elastic Beanstalk den Status aller Plattformbranches, die auf Amazon Linux AMI (AL1) basieren, auf eingestellt gesetzt.** Weitere Informationen zur Migration zu einem aktuellen und vollständig unterstützten Plattformzweig für Amazon Linux 2023 finden Sie unter [Migrieren der Elastic-Beanstalk-Linux-Anwendung zu Amazon Linux 2023 oder Amazon Linux 2](using-features.migration-al.md).

### Node.jsplattformspezifische Konfigurationsoptionen — Amazon Linux AMI () AL1
<a name="nodejs.alami.options"></a>

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);
});
```

### Node.jsSprachversionen — Amazon Linux AMI (AL1)
<a name="nodejs.alami.versions"></a>

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 [https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs) im Handbuch für *AWS Elastic Beanstalk -Plattformen*.

Sie können eine plattformspezifische Konfigurationsoption verwenden, um die Sprachversion festzulegen. Detaillierte Anweisungen finden Sie unter [Konfiguration der Node.js-Umgebung](#nodejs-platform-console). 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](using-features.platform.upgrade.md) ä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 schlägt der Versuch [NodeVersion](command-options-specific.md#command-options-nodejs)fehl, auf eine neue Version der Plattform zu aktualisieren, die die konfigurierte Version nicht unterstützt. Um zu vermeiden, dass eine neue Umgebung erstellt werden muss, ändern Sie die *NodeVersion*Konfigurationsoption in eine Version von Node.js, die sowohl von der alten als auch von der neuen Plattformversion unterstützt wird, oder [entfernen Sie die Optionseinstellung](environment-configuration-methods-after.md) und führen Sie dann das Plattformupdate durch.

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

1. Öffnen Sie die [Elastic Beanstalk Beanstalk-Konsole](https://console.aws.amazon.com/elasticbeanstalk) und wählen Sie in der Liste **Regionen** Ihre aus. AWS-Region

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

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

1. Wählen Sie im Dialogfeld **Plattformversion aktualisieren** eine Node.js-Plattformversion aus.  
![\[Bestätigen der Aktualisierung der Elastic-Beanstalk-Plattformversion\]](http://docs.aws.amazon.com/de_de/elasticbeanstalk/latest/dg/images/platform-nodejs-update-node-version.png)

1. Wählen Sie **Save** aus.

### Node.jsKonfigurations-Namespaces — Amazon Linux AMI () AL1
<a name="nodejs.alami.namespaces"></a>

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

Die folgende Konfigurationsdatei weist Elastic Beanstalk an, `npm start` zum Ausführen der Anwendung 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 Quellverzeichnis von `statichtml`. Die andere Quelle besteht aus Image-Dateien unter dem Pfad `images` im Stammverzeichnis der Website aus dem Quellverzeichnis von `staticimages`.

**Example .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](command-options.md).

# Konfiguration benutzerdefinierter Startbefehle mit einem Procfile auf Elastic Beanstalk
<a name="nodejs-configuration-procfile"></a>

Sie können eine Datei namens `Procfile` in das Stammverzeichnis des Quell-Bundles einfügen, um den Befehl anzugeben, mit dem Ihre Anwendung gestartet wird.

**Example Procfile**  

```
web: node index.js
```

Informationen zur `Procfile` Verwendung finden Sie unter. [Buildfile und Procfile](platforms-linux-extend.build-proc.md)

**Anmerkung**  
Dieses Feature ersetzt die ältere Option `NodeCommand` im Namespace `aws:elasticbeanstalk:container:nodejs`.

# Konfiguration der Abhängigkeiten Ihrer Anwendung von Elastic Beanstalk
<a name="nodejs-platform-dependencies"></a>

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\$1modules“](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders).

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](https://docs.npmjs.com/about-the-public-npm-registry). 

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\$1modules-Verzeichnis](#nodejs-platform-nodemodules).

## Angeben von Node.js-Abhängigkeiten mit einer package.json-Datei
<a name="nodejs-platform-packagejson"></a>

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](https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file) 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.

**Example 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.

Wenn Sie die *devDependencies*-Pakete installieren müssen, setzen Sie die Umgebungseigenschaft NPM\$1USE\$1PRODUCTION 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.

## Einschließen von Node.js-Abhängigkeiten in ein node\$1modules-Verzeichnis
<a name="nodejs-platform-nodemodules"></a>

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](https://docs.npmjs.com/downloading-and-installing-packages-locally) auf der *npm-Docs-Website*. 

Wenn Sie ein `node_modules` Verzeichnis für eine AL2 Node.js Plattformversion von AL2023/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](#nodejs-platform-packagejson) angegeben sind. Node.jssucht im Verzeichnis nach Abhängigkeiten. `node_modules` Weitere Informationen finden Sie unter [Laden aus node\$1modules-Ordnern](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders) 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.   
 

### Überlegungen zu Node.js auf Amazon Linux 2
<a name="nodejs-al2-considerations"></a>

Lesen Sie diesen Abschnitt, wenn Sie einen Plattformzweig von *Node.js* verwenden, der auf *Amazon Linux 2* ausgeführt wird.

#### Überlegungen zu Node.js auf Amazon Linux 2
<a name="nodejs-al2-considerations-detail"></a>

**Anmerkung**  
Die Informationen in diesem Thema beziehen sich auf Node.js Plattformbranches, die auf Amazon Linux 2 ausgeführt werden. In diesem Artikel werden AL2 spezifische Funktionen und Verhaltensweisen beschrieben, die sich von AL2023 unterscheiden.

**Varianten von Befehlen**  
Die Befehlsoptionen variieren je nach der npm-Version, die im Amazon Linux 2-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. 

**SSH- und HTTPS-Protokolle für Git-Abhängigkeiten**  
Ab der Amazon Linux 2-Plattformversion vom 7. März 2023 können Sie die Protokolle SSH und HTTPS 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.

**Example 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**  
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](https://nodejs.dev/learn/semantic-versioning-using-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.

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

**Example `package.json` – Einzelne Node.js-Version**  

```
{
    ...
    "engines": { "node" : "14.16.0" }
  }
```

**Example `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](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs) 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 [https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs) 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](using-features.platform.upgrade.md) ä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.

# Sperren von Abhängigkeiten mit npm shrinkwrap auf Elastic Beanstalk
<a name="nodejs-platform-shrinkwrap"></a>

Die Node.js-Plattform führt `npm install` als *webapp*-Benutzer bei jeder Bereitstellung aus. Wenn neue Versionen Ihrer Abhängigkeiten verfügbar sind, werden diese installiert, wenn Sie Ihre Anwendung bereitstellen. Dadurch kann die Bereitstellung möglicherweise sehr lange dauern.

Sie können eine Aktualisierung Ihrer Abhängigkeiten vermeiden, indem Sie eine `npm-shrinkwrap.json`-Datei erstellen, die die Abhängigkeiten Ihrer Anwendung von der aktuellen Version sperrt.

```
$ npm install
$ npm shrinkwrap
wrote npm-shrinkwrap.json
```

Fügen Sie diese Datei in Ihr Quell-Bundle sein, um sicherzustellen, dass Abhängigkeiten nur einmal installiert werden.

# Konfigurieren des Proxy-Server
<a name="nodejs-platform-proxy"></a>

Elastic Beanstalk kann NGINX oder Apache-HTTPD als Reverse-Proxy verwenden, um die Anwendung dem Load Balancer von Elastic Load Balancing auf Port 80 zuzuweisen. Der Standardwert ist NGINX. Elastic Beanstalk bietet eine Proxy-Standard-Proxykonfiguration, die Sie entweder erweitern oder gänzlich mit einer eigenen Konfiguration überschreiben können.

Standardmäßig wird der Proxy von Elastic Beanstalk für die Weiterleitung von Anforderungen an die Anwendung auf Port 5000 konfiguriert. Sie können den Standardport überschreiben, indem Sie für die `PORT`-[Umgebungseigenschaft](create_deploy_nodejs.container.md#nodejs-platform-console) den Überwachungsport Ihrer Hauptanwendung festlegen.

**Anmerkung**  
Der Port, den Ihre Anwendung überwacht, hat keinen Einfluss auf den Port, den der NGINX-Server überwacht, um Anfragen vom Load Balancer zu empfangen.

**Konfigurieren des Proxy-Servers auf Ihrer Plattformversion**  
Alle AL2023 AL2 /-Plattformen unterstützen eine einheitliche Proxy-Konfigurationsfunktion. Weitere Informationen zur Konfiguration des Proxyservers auf Ihren Plattformversionen, auf denen AL2023/ausgeführt wirdAL2, finden Sie unter[Reverse-Proxy-Konfiguration](platforms-linux-extend.proxy.md). 

## Konfigurieren des Proxys in Amazon Linux AMI (Vorgängerversion von Amazon Linux 2)
<a name="nodejs-platform-proxy.alami"></a>

Wenn Ihre Elastic Beanstalk Node.js-Umgebung eine Amazon-Linux-AMI-Plattformversion verwendet (Vorgängerversion von Amazon Linux 2), lesen Sie die Informationen in diesem Abschnitt.

**Hinweise**  
Die Informationen in diesem Thema gelten nur für Plattformbranches, die auf Amazon Linux AMI (AL1) basieren. AL2023/AL2 Plattformbranches sind nicht mit früheren Amazon Linux AMI (AL1) -Plattformversionen kompatibel und *erfordern andere Konfigurationseinstellungen*.
 [Am 18. Juli 2022](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **hat Elastic Beanstalk den Status aller Plattformbranches, die auf Amazon Linux AMI (AL1) basieren, auf eingestellt gesetzt.** Weitere Informationen zur Migration zu einem aktuellen und vollständig unterstützten Plattformzweig für Amazon Linux 2023 finden Sie unter [Migrieren der Elastic-Beanstalk-Linux-Anwendung zu Amazon Linux 2023 oder Amazon Linux 2](using-features.migration-al.md).

### Erweiterung und Außerkraftsetzung der Standard-Proxykonfiguration — Amazon Linux AMI () AL1
<a name="nodejs-platform-proxy.alami.extending"></a>

Die Node.js-Plattform verwendet einen Reverse-Proxy-Server, um Anforderungen von Port 80 auf der Instance an die Anwendung weiterzuleiten, welche Port 8081 überwacht. Elastic Beanstalk bietet eine Proxy-Standard-Proxykonfiguration, die Sie entweder erweitern oder gänzlich mit einer eigenen Konfiguration überschreiben können.

Um die Standardkonfiguration zu erweitern, fügen Sie `.conf`-Dateien zu `/etc/nginx/conf.d` mit einer Konfigurationsdatei hinzu. Ein spezifisches Beispiel finden Sie unter [Beenden von HTTPS auf EC2-Instances, auf denen Node.js ausgeführt wird](https-singleinstance-nodejs.md).

Die Node.js-Plattform legt die PORT-Umgebungsvariable auf den Port fest, an den der Proxy-Server den Datenverkehr weiterleitet. Lesen Sie diese Variable in Ihrem Code, um den Port Ihrer Anwendung zu konfigurieren.

```
    var port = process.env.PORT || 3000;

    var server = app.listen(port, function () {
        console.log('Server running at http://127.0.0.1:' + port + '/');
    });
```

Die standardmäßige NGINX-Konfiguration leitet Datenverkehr an einen Upstream-Server mit dem Namen `nodejs` auf `127.0.0.1:8081` weiter. Sie können die Standardkonfiguration entfernen und Ihre eigene in einer [Konfigurationsdatei](ebextensions.md) bereitstellen.

**Example .ebextensions/proxy.config**  
Im folgenden Beispiel wird die Standard-Konfiguration entfernt und eine benutzerdefinierte Konfiguration hinzugefügt, die Datenverkehr an Port 5000 anstatt an 8081 weiterleitet.  

```
files:
  /etc/nginx/conf.d/proxy.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      upstream nodejs {
        server 127.0.0.1:5000;
        keepalive 256;
      }

      server {
        listen 8080;

        if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
            set $year $1;
            set $month $2;
            set $day $3;
            set $hour $4;
        }
        access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;
        access_log  /var/log/nginx/access.log  main;

        location / {
            proxy_pass  http://nodejs;
            proxy_set_header   Connection "";
            proxy_http_version 1.1;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        gzip on;
        gzip_comp_level 4;
        gzip_types text/html text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        location /static {
            alias /var/app/current/static;
        }

      }

  /opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh:
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/bin/bash -xe
      rm -f /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf
      service nginx stop 
      service nginx start

container_commands:
  removeconfig:
    command: "rm -f /tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf"
```
Die Beispielkonfiguration (`/etc/nginx/conf.d/proxy.conf`) verwendet die Standardkonfiguration unter `/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf` als Basis, um den Standard-Serverblock mit Komprimierungs- und Protokolleinstellungen und eine statische Dateizuordnung einzuschließen.  
Der `removeconfig`-Befehl entfernt die Standardkonfiguration für den Container, um sicherzustellen, dass der Proxy-Server die benutzerdefinierte Konfiguration verwendet. Elastic Beanstalk erstellt die Standardkonfiguration während jeder Konfigurationsbereitstellung neu. Um dies zu berücksichtigen, wird im folgenden Beispiel ein post-configuration-deployment Hook (`/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh`) hinzugefügt. Dadurch wird die Standardkonfiguration entfernt und der Proxy-Server neu gestartet.

**Anmerkung**  
Die Standardkonfiguration kann sich in späteren Versionen der Node.js-Plattform ändern. Verwenden Sie die neueste Version der Konfiguration als Grundlage für Ihre Anpassungen, um Kompatibilität sicherzustellen.

Wenn Sie die Standardkonfiguration überschreiben, müssen Sie alle statischen Dateizuordnungen und die GZIP-Komprimierung definieren. Das liegt daran, dass die Plattform die [Standardeinstellungen](create_deploy_nodejs.container.md#nodejs-namespaces) nicht anwenden kann.