

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo della piattaforma Node.js di Elastic Beanstalk
<a name="create_deploy_nodejs.container"></a>

Questo argomento descrive come configurare, creare ed eseguire le applicazioni Node.js su Elastic Beanstalk.

AWS Elastic Beanstalk supporta una serie di rami di piattaforma per diverse versioni del linguaggio di programmazione Node.js. Per un elenco completo, consulta [Node.js](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs) nel documento *AWS Elastic Beanstalk Platforms*.

Elastic Beanstalk fornisce le [opzioni di configurazione](command-options.md) che puoi utilizzare per personalizzare il software in esecuzione sulle istanze EC2 nell'ambiente Elastic Beanstalk. È possibile [configurare le variabili di ambiente](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console) necessarie per l'applicazione, abilitare la rotazione dei log su Amazon S3 e mappare le cartelle nel codice sorgente dell'applicazione che contengono i file statici ai percorsi serviti dal server proxy.

Sono disponibili opzioni di configurazione specifiche della piattaforma nella console Elastic Beanstalk per la [modifica della configurazione di un ambiente in esecuzione](environment-configuration-methods-after.md). Per conservare la configurazione dell'ambiente una volta terminata, puoi utilizzare [configurazioni salvate](environment-configuration-savedconfig.md) per salvare le impostazioni e applicarle successivamente a un altro ambiente.

Per salvare le impostazioni nel codice sorgente, puoi includere i [file di configurazione](ebextensions.md). Le impostazioni nei file di configurazione vengono applicate ogni volta che crei un ambiente o distribuisci l'applicazione. Puoi inoltre utilizzare i file di configurazione per installare pacchetti, eseguire script o altre operazioni di personalizzazione delle istanze durante le distribuzioni.

Puoi [includere un file `Package.json`](nodejs-platform-dependencies.md#nodejs-platform-packagejson) nel bundle di origine per installare i pacchetti durante l'implementazione, per fornire un comando start e per specificare la versione di Node.js che desideri sia utilizzata dall'applicazione. Puoi includere un [file `npm-shrinkwrap.json`](nodejs-platform-shrinkwrap.md) per bloccare le versioni delle dipendenze.

La piattaforma Node.js include un server proxy che serve asset statici, inoltra il traffico verso la tua applicazione e comprime le risposte. Puoi [estendere o sostituire la configurazione proxy predefinita](nodejs-platform-proxy.md) per scenari avanzati.

Ci sono diverse opzioni per avviare l'applicazione. Puoi aggiungere un [Procfile](nodejs-configuration-procfile.md) al tuo bundle di origine per specificare il comando che avvia l'applicazione. Quando non fornisci un `Procfile` ma specifichi un file `package.json`, Elastic Beanstalk esegue `npm start`. Se non viene fornito, Elastic Beanstalk cerca il file `app.js` o `server.js`, in questo ordine, e lo esegue.

Le impostazioni applicate nella console Elastic Beanstalk sostituiscono le stesse impostazioni nei file di configurazione, se esistenti. Ciò ti consente di disporre di impostazioni predefinite nei file di configurazione, sostituibili con impostazioni specifiche per l'ambiente nella console. Per ulteriori informazioni sulla precedenza e altri metodi di modifica delle impostazioni, consulta [Opzioni di configurazione](command-options.md).

Per informazioni dettagliate sui vari modi in cui è possibile estendere una piattaforma Elastic Beanstalk basata su Linux, consulta [Estensione delle piattaforme Elastic Beanstalk Linux](platforms-linux-extend.md).

## Configurazione dell'ambiente Node.js
<a name="nodejs-platform-console"></a>

Le impostazioni della piattaforma Node.js consentono di ottimizzare il comportamento delle istanze Amazon EC2. Puoi modificare la configurazione dell'istanza Amazon EC2 dell'ambiente Elastic Beanstalk utilizzando la console Elastic Beanstalk.

Utilizza la console Elastic Beanstalk per attivare la rotazione dei log in Amazon S3 e configurare variabili che l'applicazione è in grado di leggere dall'ambiente.

**Configurazione dell'ambiente Node.js nella console Elastic Beanstalk**

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Nel riquadro di navigazione, seleziona **Configuration** (Configurazione).

1. Nella categoria di configurazione **Updates, monitoring, and logging** (Aggiornamenti, monitoraggio e registrazione), scegli **Edit** (Modifica).

### Opzioni del contenitore
<a name="nodejs-platform-console-settings"></a>

È possibile specificare le seguenti opzioni specifiche della piattaforma:
+ **Proxy server (Server proxy)**: il server proxy da utilizzare nelle istanze dell'ambiente. Per impostazione predefinita, viene utilizzato NGINX.

### Opzioni di log
<a name="nodejs-platform-console-logging"></a>

La sezione **Log Options (Opzioni di log)** ha due impostazioni:
+ **Instance profile** (Profilo dell'istanza): specifica il profilo dell'istanza che dispone dell'autorizzazione ad accedere al bucket Amazon S3 associato all'applicazione.
+ **Enable log file rotation to Amazon S3** (Abilita rotazione file di log in Amazon S3): specifica se i file di log per le istanze Amazon EC2 dell'applicazione debbano essere copiati nel bucket Amazon S3 associato all'applicazione.

### File statici
<a name="nodejs-platform-console-staticfiles"></a>

Per migliorare le prestazioni, la sezione **Static files** (File statici) consente di configurare il server proxy affinché fornisca file statici (ad esempio, HTML o immagini) da un set di directory all'interno dell'applicazione Web. Per ogni directory, è possibile impostare il percorso virtuale per la mappatura delle directory. Quando il server proxy riceve una richiesta da un file nel percorso specificato, questo serve il file direttamente anziché instradare la richiesta all'applicazione.

Per informazioni dettagliate sulla configurazione di file statici utilizzando file di configurazione o la console Elastic Beanstalk, consulta [Fornire i file statici](environment-cfg-staticfiles.md).

### Proprietà dell'ambiente
<a name="nodejs-platform-console-envprops"></a>

La sezione **Environment Properties** (Proprietà ambiente) consente di specificare le impostazioni di configurazione dell'ambiente nelle istanze Amazon EC2 che eseguono l'applicazione. Queste impostazioni sono passate come coppie chiave-valore all'applicazione.

All'interno dell'Node.jsambiente in cui viene eseguito AWS Elastic Beanstalk, è possibile accedere alle variabili di ambiente eseguendo`process.env.ENV_VARIABLE`.

```
var endpoint = process.env.API_ENDPOINT
```

La piattaforma Node.js imposta la variabile di ambiente PORT sulla porta a cui il server proxy trasferisce il traffico. Per ulteriori informazioni, consulta [Configurazione del server proxy](nodejs-platform-proxy.md).

Per ulteriori informazioni, consulta [Variabili di ambiente e altre impostazioni software](environments-cfg-softwaresettings.md).

### Configurazione di un ambiente Node.js per l'AMI Amazon Linux (precedente ad Amazon Linux 2)
<a name="nodejs-platform-console.alami"></a>

Le seguenti categorie di configurazione del software della console sono supportate solo in un ambiente Node.js di Elastic Beanstalk che utilizza una versione della piattaforma AMI Amazon Linux (precedente ad Amazon Linux 2).

**Note**  
Le informazioni contenute in questo argomento si applicano solo ai rami della piattaforma basati su Amazon Linux AMI (AL1). AL2023I rami AL2 della piattaforma/sono incompatibili con le versioni precedenti della piattaforma Amazon Linux AMI (AL1) e *richiedono impostazioni di configurazione diverse*.
 [Il 18 luglio 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk ha impostato lo stato di tutte le filiali della piattaforma basate su Amazon Linux AMI AL1 () come ritirato.** Per ulteriori informazioni sulla migrazione a una ramificazione della piattaforma Amazon Linux 2023 attuale e completamente supportata, consulta [Migrazione dell'applicazione Elastic Beanstalk Linux ad Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

#### Opzioni del contenitore: Amazon Linux AMI (AL1)
<a name="nodejs-platform-console-settings"></a>

Nella pagina di configurazione specifica le informazioni seguenti:
+ **Proxy server** (Server proxy): specifica il server Web da utilizzare per le connessioni proxy a Node.js. Per impostazione predefinita, viene utilizzato NGINX. Se selezioni **none**, (nessuno), le mappature dei file statici non vengono applicate e la compressione GZIP è disabilitata.
+ **Versione di Node.js**: specifica la versione di Node.js. Per un elenco delle versioni di Node.js supportate, consulta [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) nella guida *Piattaforme AWS Elastic Beanstalk *.
+ **Compressione GZIP**: specifica se la compressione GZIP è abilitata. Per impostazione predefinita, la compressione GZIP è abilitata.
+ **Node command** (Comando nodo): consente di immettere il comando utilizzato per avviare l'applicazione Node.js. Una stringa vuota (impostazione predefinita) indica che Elastic Beanstalk usa`app.js`, quindi `server.js` e poi `npm start`.

## Spazi dei nomi per la configurazione di Node.js
<a name="nodejs-namespaces"></a>

È possibile utilizzare un [file di configurazione](ebextensions.md) per impostare le opzioni di configurazione ed eseguire alte attività di configurazione delle istanze durante le distribuzioni. Le opzioni di configurazione possono essere [specifiche della piattaforma](command-options-specific.md) o essere applicate a [tutte le piattaforme](command-options-general.md) del servizio Elastic Beanstalk nel suo complesso. *Le opzioni di configurazione sono organizzate in namespace.*

È possibile scegliere il proxy da utilizzare nelle istanze dell'ambiente utilizzando lo spazio dei nomi `aws:elasticbeanstalk:environment:proxy`. L'esempio seguente configura l'ambiente in modo da utilizzare il server proxy HTTPD di Apache.

**Example .ebextensions/nodejs-settings.config**  

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

È possibile configurare il proxy per servire file statici utilizzando lo spazio dei nomi `aws:elasticbeanstalk:environment:proxy:staticfiles`. Per ulteriori informazioni e un esempio, consulta [Fornire i file statici](environment-cfg-staticfiles.md).

In Elastic Beanstalk sono disponibili varie opzioni di configurazione per la personalizzazione dell'ambiente. Oltre ai file di configurazione, puoi impostare le opzioni di configurazione tramite la console, le configurazioni salvate, la CLI EB o AWS CLI. Per ulteriori informazioni, consulta [Opzioni di configurazione](command-options.md).

## La piattaforma Node.js dell'AMI Amazon Linux (precedente ad Amazon Linux 2)
<a name="nodejs.alami"></a>

Se il tuo ambiente Node.js di Elastic Beanstalk utilizza una versione della piattaforma AMI Amazon Linux (precedente ad Amazon Linux 2), considera le configurazioni e i suggerimenti specifici in questa sezione.

**Note**  
Le informazioni contenute in questo argomento si applicano solo ai rami della piattaforma basati su Amazon Linux AMI (AL1). AL2023I rami AL2 della piattaforma/sono incompatibili con le versioni precedenti della piattaforma Amazon Linux AMI (AL1) e *richiedono impostazioni di configurazione diverse*.
 [Il 18 luglio 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk ha impostato lo stato di tutte le filiali della piattaforma basate su Amazon Linux AMI AL1 () come ritirato.** Per ulteriori informazioni sulla migrazione a una ramificazione della piattaforma Amazon Linux 2023 attuale e completamente supportata, consulta [Migrazione dell'applicazione Elastic Beanstalk Linux ad Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

### Node.jsopzioni di configurazione specifiche della piattaforma — Amazon Linux AMI () AL1
<a name="nodejs.alami.options"></a>

Elastic Beanstalk supporta alcune opzioni di configurazione specifiche della piattaforma per le versioni della piattaforma Node.js dell'AMI Amazon Linux. Puoi scegliere su quale server proxy eseguire l'applicazione, una versione specifica di Node.js da eseguire e il comando utilizzato per eseguire l'applicazione.

Per il server proxy, puoi utilizzare un NGINX o Apache. È possibile impostare il valore `none` sull'opzione `ProxyServer`. In questo caso, Elastic Beanstalk esegue l'applicazione come standalone, ossia non dietro un server proxy. Se l'ambiente esegue un'applicazione autonoma, aggiorna il codice per ascoltare sulla porta su cui NGINX inoltra il traffico.

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

app.listen(port, function() {
  console.log('Server running at http://127.0.0.1:%s', port);
});
```

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

In termini di versione del linguaggio supportata, la piattaforma Node.js dell'AMI Amazon Linux è leggermente diversa rispetto ad altre piattaforme gestite da Elastic Beanstalk. Questo perché ogni versione della piattaforma Node.js supporta solo alcune versioni del linguaggio Node.js. Per un elenco delle versioni di Node.js supportate, consulta [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) nella guida *Piattaforme AWS Elastic Beanstalk *.

Puoi utilizzare un'opzione di configurazione specifica della piattaforma per impostare la versione del linguaggio. Per istruzioni, consulta [Configurazione dell'ambiente Node.js](#nodejs-platform-console). In alternativa, utilizza la console Elastic Beanstalk per aggiornare la versione di Node.js usata dall'ambiente come parte dell'aggiornamento della versione della piattaforma.

**Nota**  
Quando il supporto della versione di Node.js in uso viene rimosso dalla piattaforma, è necessario modificare o rimuovere l'impostazione della versione prima di eseguire un [aggiornamento della piattaforma](using-features.platform.upgrade.md). Questo può verificarsi quando viene rilevata una vulnerabilità di sicurezza per una o più versioni di Node.js  
Quando ciò accade, il tentativo di aggiornamento a una nuova versione della piattaforma che non supporta quella configurata [NodeVersion](command-options-specific.md#command-options-nodejs)fallisce. Per evitare di dover creare un nuovo ambiente, modificate l'opzione di *NodeVersion*configurazione impostando una versione di Node.js supportata sia dalla vecchia versione della piattaforma che da quella nuova, oppure [rimuovete l'impostazione dell'opzione](environment-configuration-methods-after.md) e quindi eseguite l'aggiornamento della piattaforma.

**Configurazione della versione di Node.jsdell'ambiente nella console Elastic Beanstalk**

1. Apri la console [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) e, **nell'elenco Regioni, seleziona la tua**. Regione AWS

1. Nel pannello di navigazione selezionare **Environments** (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

1. Nella pagina panoramica dell'ambiente, in **Platform (Piattaforma)**, scegliere **Change (Cambia)**.

1. Nella finestra di dialogo **Update platform version** (Aggiorna versione piattaforma), seleziona una versione di Node.js.  
![\[Conferma della versione di aggiornamento della piattaforma Elastic Beanstalk\]](http://docs.aws.amazon.com/it_it/elasticbeanstalk/latest/dg/images/platform-nodejs-update-node-version.png)

1. Scegli **Save** (Salva).

### Node.jsnamespace di configurazione — Amazon Linux AMI () AL1
<a name="nodejs.alami.namespaces"></a>

La piattaforma Node.js dell'AMI Amazon Linux definisce le opzioni aggiuntive negli spazi dei nomi `aws:elasticbeanstalk:container:nodejs:staticfiles` e `aws:elasticbeanstalk:container:nodejs`.

Il seguente file di configurazione indica a Elastic Beanstalk di utilizzare `npm start` per eseguire l'applicazione. Inoltre, imposta il tipo di proxy su Apache e abilita la compressione. Infine, configura il proxy per servire file statici da due directory fonte. Una origine è costituita da file HTML  nel percorso `html` nella root del sito Web dalla directory di origine `statichtml`. L'altra fonte è costituita da file di immagine sul percorso `images` sotto la directory principale del sito Web dalla directory fonte `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
```

In Elastic Beanstalk sono disponibili varie opzioni di configurazione per la personalizzazione dell'ambiente. Oltre ai file di configurazione, puoi impostare le opzioni di configurazione tramite la console, le configurazioni salvate, la CLI EB o AWS CLI. Per ulteriori informazioni, consulta [Opzioni di configurazione](command-options.md).

# Configurazione di comandi di avvio personalizzati con un Elastic Procfile Beanstalk
<a name="nodejs-configuration-procfile"></a>

Puoi includere un file chiamato `Procfile` nella root del pacchetto di origine per specificare il comando che avvia l'applicazione.

**Example Procfile**  

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

Per informazioni sull'`Procfile`utilizzo, consulta. [Buildfile e Procfile](platforms-linux-extend.build-proc.md)

**Nota**  
Questa funzionalità sostituisce l'opzione legacy `NodeCommand` nello spazio dei nomi `aws:elasticbeanstalk:container:nodejs`.

# Configurazione delle dipendenze dell'applicazione su Elastic Beanstalk
<a name="nodejs-platform-dependencies"></a>

L'applicazione potrebbe avere dipendenze su alcuni moduli Node.js, come quelli specificati nelle istruzioni `require()`. Questi moduli sono archiviati in una directory `node_modules`. Quando l'applicazione viene eseguita, Node.js carica i moduli da questa directory. Per ulteriori informazioni, consulta [Caricamento dalle cartelle node\$1modules](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders) nella documentazione di Node.js.

È possibile specificare queste dipendenze del modulo utilizzando un file `package.json`. Se Elastic Beanstalk rileva questo file e non è presente una directory `node_modules`, Elastic Beanstalk esegue `npm install` come utente *webapp*. Il comando `npm install` installa le dipendenze nella directory `node_modules`, che Elastic Beanstalk crea in precedenza. Il comando `npm install` accede ai pacchetti elencati nel file `package.json` dal registro pubblico di npm o da altre posizioni. Per ulteriori informazioni, consulta il sito Web della [documentazione di npm](https://docs.npmjs.com/about-the-public-npm-registry). 

Se Elastic Beanstalk rileva la directory `node_modules`, allora non esegue `npm install` anche se esiste un file `package.json`. Elastic Beanstalk presuppone che i pacchetti di dipendenza siano disponibili nella directory `node_modules` perché Node.js possa accedere ed eseguire il caricamento.

Nelle sezioni seguenti vengono fornite ulteriori informazioni sulla definizione delle dipendenze tra moduli Node.js per l'applicazione.

**Nota**  
Se quando Elastic Beanstalk esegue `npm install` si verificano dei problemi di implementazione, prendi in considerazione un approccio alternativo. Includi la directory `node_modules` con i moduli di dipendenza nel bundle di origine dell'applicazione. In questo modo è possibile aggirare i problemi relativi all'installazione delle dipendenze dal registro pubblico di npm mentre si esamina il problema. Poiché i moduli di dipendenza provengono da una directory locale, ciò potrebbe anche aiutare a ridurre i tempi di implementazione. Per ulteriori informazioni, consulta [Inclusione delle dipendenze Node.js in una directory node\$1modules](#nodejs-platform-nodemodules)

## Specifica delle dipendenze Node.js con un file package.json
<a name="nodejs-platform-packagejson"></a>

Utilizza un file `package.json` nella root fonte del progetto per specificare i pacchetti di dipendenza e per fornire un comando start. Quando è presente un file `package.json` e una directory `node_modules` non è presente nella root dell'origine del progetto, Elastic Beanstalk esegue `npm install` come utente *webapp* per installare le dipendenze dal registro pubblico di npm. Elastic Beanstalk utilizza anche il comando `start` per avviare l'applicazione. Per ulteriori informazioni sul file `package.json`, consulta [Specifica delle dipendenze in un file `package.json`](https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file) sul sito Web della *documentazione di npm*. 

Usa la parola chiave `scripts` per dare un comando di avvio. La parola chiave `scripts` viene ora utilizzata al posto dell'opzione `NodeCommand` legacy nello spazio dei nomi `aws:elasticbeanstalk:container:nodejs`.

**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"
    }
  }
```

**Dipendenze tra modalità di produzione e sviluppo**  
Per specificare le dipendenze nel file `package.json`, usa gli attributi *dependencies* e *devDependencies*. L'attributo *dependencies* indica i pacchetti richiesti dall'applicazione in produzione. L'attributo *devDependencies* indica i pacchetti necessari solo per lo sviluppo e il test locali.

Se è necessario installare i pacchetti *devDependencies*, imposta la proprietà di ambiente NPM\$1USE\$1PRODUCTION su `false`. Con questa impostazione, durante l'esecuzione di npm install non verranno utilizzate le opzioni precedenti. Ciò comporterà l'installazione dei pacchetti *devDependencies*.

## Inclusione delle dipendenze Node.js in una directory node\$1modules
<a name="nodejs-platform-nodemodules"></a>

Per distribuire pacchetti di dipendenza nelle istanze di ambiente insieme al codice dell'applicazione, includili in una directory denominata `node_modules` nella directory root fonte del progetto. Per ulteriori informazioni, consulta [Download e installazione dei pacchetti in locale](https://docs.npmjs.com/downloading-and-installing-packages-locally) sul sito Web della *documentazione di npm*. 

[Quando distribuisci una `node_modules` directory in una versione della AL2 Node.js piattaforma AL2023/, Elastic Beanstalk presume che tu stia fornendo i tuoi pacchetti di dipendenze ed evita di installare le dipendenze specificate in un file package.json.](#nodejs-platform-packagejson) Node.jscerca le dipendenze nella directory`node_modules`. Per ulteriori informazioni, consulta [Caricamento dalle cartelle node\$1modules](https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders) nella documentazione di Node.js.

**Nota**  
Se quando Elastic Beanstalk esegue `npm install` si verificano problemi di implementazione, considera l'utilizzo dell'approccio descritto in questo argomento come soluzione alternativa mentre analizzi il problema.   
 

### Considerazioni per Node.js su Amazon Linux 2
<a name="nodejs-al2-considerations"></a>

Leggi questa sezione se utilizzi un ramo della piattaforma *Node.js* in esecuzione su *Amazon Linux 2*.

#### Considerazioni per Node.js su Amazon Linux 2
<a name="nodejs-al2-considerations-detail"></a>

**Nota**  
Le informazioni contenute in questo argomento si applicano ai rami Node.js della piattaforma in esecuzione su Amazon Linux 2. Il contenuto qui descrive caratteristiche e comportamenti AL2 specifici che differiscono da. AL2023

**Varianti dei comandi**  
Le opzioni di comando variano a seconda della versione di npm inclusa nel ramo della piattaforma Amazon Linux 2 su cui viene eseguita l'applicazione.
+ npm v6: per impostazione predefinita, Elastic Beanstalk installa le dipendenze in modalità di produzione. Usa il comando `npm install --production`. 
+ npm v7 o superiore: Elastic Beanstalk omette *devDependencies*. Usa il comando `npm install --omit=dev`.

Entrambi i comandi sopra elencati non installano i pacchetti che sono *devDependencies*. 

**Protocolli SSH e HTTPS per le dipendenze Git**  
A partire dalla versione della piattaforma Amazon Linux 2 del 7 marzo 2023, puoi utilizzare i protocolli SSH e HTTPS per recuperare i pacchetti da un repository Git. La ramificazione della piattaforma Node.js 16 supporta entrambi i protocolli SSH e HTTPS. Node.js 14 supporta solo il protocollo HTTPS.

**Example package.json: Node.js 16 supporta sia HTTPS che 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"
    }
```

**Versioni e gamme di versioni**  
Utilizza la parola chiave `engines` nel file `package.json` per specificare la versione di Node.js che desideri venga usata dalla tua applicazione. È inoltre possibile specificare un intervallo di versioni utilizzando la notazione npm. Per ulteriori informazioni sulla sintassi per gli intervalli di versioni, consulta [Controllo delle versioni della semantica tramite npm](https://nodejs.dev/learn/semantic-versioning-using-npm) sul sito Web di Node.js. La parola chiave `engines` nel file `package.json` di Node.js sostituisce l'opzione `NodeVersion` legacy nello spazio dei nomi `aws:elasticbeanstalk:container:nodejs`.

**Importante**  
La funzionalità per specificare gli intervalli di versioni non è disponibile per i rami della piattaforma Node.js in esecuzione. AL2023 Supportiamo solo una versione di Node.js all'interno di uno specifico ramo Node.js su AL2023. Se il file `package.json` specifica un intervallo di versioni, lo ignoreremo e per impostazione predefinita verrà impostata la ramificazione della piattaforma di Node.js.

**Example `package.json`: la singola versione di Node.js**  

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

**Example `package.json`: la gamma di versioni di Node.js**  

```
{
    ...
    "engines": { "node" : ">=10 <11" }
  }
```

Quando viene indicato un intervallo di versioni, Elastic Beanstalk installa nell'intervallo l'ultima versione Node.js disponibile sulla piattaforma. In questo esempio, l'intervallo indica che la versione deve essere maggiore o uguale alla versione 10, ma inferiore alla versione 11. Di conseguenza, Elastic Beanstalk installa l'ultima versione 10.x.y di Node.js, disponibile sulla [piattaforma supportata](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.nodejs).

Tieni presente che è possibile specificare solo una versione di Node.js corrispondente al ramo della piattaforma. Ad esempio, se utilizzi la ramificazione della piattaforma Node.js 16, sarà possibile specificare solo una versione 16.x.y di Node.js. È possibile utilizzare le opzioni dell'intervallo di versioni supportate da npm, per consentire una maggiore flessibilità. Per le versioni valide di Node.js per ogni ramo della piattaforma, consulta [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) nella guida *Piattaforme AWS Elastic Beanstalk *.

**Nota**  
Quando il supporto della versione di Node.js in uso viene rimosso dalla piattaforma, è necessario modificare o rimuovere l'impostazione della versione di Node.js prima di eseguire un [aggiornamento della piattaforma](using-features.platform.upgrade.md). Questo può verificarsi quando viene rilevata una vulnerabilità di sicurezza per una o più versioni di Node.js  
Quando ciò si verifica, i tentativi di aggiornamento della piattaforma a una nuova versione che non supporta la versione di Node.js configurata avranno esito negativo. Per evitare la necessità di creare un nuovo ambiente, modificare l'impostazione della versione Node.js in `package.json` a una versione Node.js supportata sia dalla vecchia versione della piattaforma che da quella nuova. È possibile specificare un intervallo di versioni Node.js che include una versione supportata, come descritto in precedenza in questo argomento. Hai anche la possibilità di rimuovere l'impostazione e quindi distribuire il nuovo bundle fonte.

# Blocco delle dipendenze con Elastic npm shrinkwrap Beanstalk
<a name="nodejs-platform-shrinkwrap"></a>

La piattaforma Node.js esegue `npm install` come utente *webapp* a ogni implementazione. Eventuali nuove versioni delle dipendenze disponibili vengono installate durante l'implementazione, che pertanto potrebbe richiedere molto tempo.

È possibile evitare l'upgrade delle dipendenze creando un file `npm-shrinkwrap.json` che blocca le dipendenze dell'applicazione alla versione corrente.

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

Includi questo file nel bundle di origine per essere sicuro che le dipendenze vengano installate una sola volta.

# Configurazione del server proxy
<a name="nodejs-platform-proxy"></a>

Elastic Beanstalk può utilizzare NGINX o HTTPD di Apache come proxy inverso per mappare l'applicazione al sistema di bilanciamento del carico di Elastic Load Balancing sulla porta 80. Il valore predefinito è NGINX. Elastic Beanstalk fornisce una configurazione proxy predefinita che puoi estendere o ignorare completamente in favore di quella personalizzata.

Per impostazione predefinita, Elastic Beanstalk configura il proxy per inoltrare le richieste all'applicazione sulla porta 5000. È possibile sostituire la porta predefinita impostando la `PORT`[proprietà dell'ambiente](create_deploy_nodejs.container.md#nodejs-platform-console) sulla porta di ascolto dell'applicazione principale.

**Nota**  
La porta di ascolto della tua applicazione non influisce sulla porta che il server NGINX ascolta per ricevere le richieste dal sistema di bilanciamento del carico.

**Configurazione del server proxy sulla versione della piattaforma**  
Tutte le AL2 piattaforme AL2023/supportano una funzionalità di configurazione proxy uniforme. Per ulteriori informazioni sulla configurazione del server proxy sulle versioni della piattaforma che eseguono AL2023/AL2, consulta[Configurazione del proxy inverso](platforms-linux-extend.proxy.md). 

## Configurazione del proxy su AMI Amazon Linux (precedente ad Amazon Linux 2)
<a name="nodejs-platform-proxy.alami"></a>

Se l'ambiente Node.js di Elastic Beanstalk utilizza una versione della piattaforma AMI Amazon Linux (precedente ad Amazon Linux 2), leggi le informazioni presenti in questa sezione.

**Note**  
Le informazioni contenute in questo argomento si applicano solo ai rami della piattaforma basati su Amazon Linux AMI (AL1). AL2023I rami AL2 della piattaforma/sono incompatibili con le versioni precedenti della piattaforma Amazon Linux AMI (AL1) e *richiedono impostazioni di configurazione diverse*.
 [Il 18 luglio 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) **Elastic Beanstalk ha impostato lo stato di tutte le filiali della piattaforma basate su Amazon Linux AMI AL1 () come ritirato.** Per ulteriori informazioni sulla migrazione a una ramificazione della piattaforma Amazon Linux 2023 attuale e completamente supportata, consulta [Migrazione dell'applicazione Elastic Beanstalk Linux ad Amazon Linux 2023 o Amazon Linux 2](using-features.migration-al.md).

### Estensione e sovrascrittura della configurazione proxy predefinita — Amazon Linux AMI () AL1
<a name="nodejs-platform-proxy.alami.extending"></a>

La piattaforma Node.js utilizza un proxy inverso per l'inoltro delle richieste provenienti dalla porta 80 dell'istanza all'applicazione in ascolto sulla porta 8081. Elastic Beanstalk fornisce una configurazione proxy predefinita che puoi estendere o ignorare completamente in favore di quella personalizzata.

Per estendere la configurazione predefinita, aggiungi file `.conf` a `/etc/nginx/conf.d` con un file di configurazione. Per un esempio specifico, consulta [Terminazione di HTTPS nelle istanze EC2 che eseguono Node.js](https-singleinstance-nodejs.md).

La piattaforma Node.js imposta la variabile di ambiente PORT sulla porta a cui il server proxy trasferisce il traffico. Leggi questa variabile nel codice per configurare la porta della tua applicazione.

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

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

La configurazione NGINX predefinita inoltra il traffico a un server upstream denominato `nodejs` su `127.0.0.1:8081`. È possibile rimuovere la configurazione predefinita e fornire quella personalizzata in un [file di configurazione](ebextensions.md).

**Example .ebextensions/proxy.config**  
L'esempio seguente rimuove la configurazione predefinita e aggiunge una configurazione personalizzata che inoltra il traffico alla porta 5000 anziché alla porta 8081.  

```
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"
```
La configurazione di esempio, `/etc/nginx/conf.d/proxy.conf`, utilizza la configurazione predefinita specificata in `/etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf` come base per includere il blocco di server predefinito con la compressione e le impostazioni dei log, nonché una mappatura di file statici.  
Il comando `removeconfig` rimuove la configurazione predefinita per il container, in modo che il server proxy utilizzi la configurazione personalizzata. Elastic Beanstalk ricrea la configurazione predefinita una volta implementate tutte le configurazioni. Per tenere conto di ciò, nell'esempio seguente viene aggiunto un post-configuration-deployment hook (`/opt/elasticbeanstalk/hooks/configdeploy/post/99_kill_default_nginx.sh`). In questo modo viene rimossa la configurazione predefinita e riavvia il server proxy.

**Nota**  
La configurazione predefinita potrebbe cambiare nelle versioni future della piattaforma Node.js. Per garantire la compatibilità, utilizza la versione più recente della configurazione come base per le personalizzazioni.

Se sovrascrivi la configurazione predefinita, devi definire eventuali mappature di file statici e compressione GZIP. Questo perché la piattaforma non può applicare le [ impostazioni standard](create_deploy_nodejs.container.md#nodejs-namespaces).