Configurazione delle dipendenze dell'applicazione su Elastic Beanstalk - AWS Elastic Beanstalk

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à.

Configurazione delle dipendenze dell'applicazione su Elastic Beanstalk

La tua applicazione potrebbe avere dipendenze da alcuni Node.js moduli, come quelli specificati nelle require() istruzioni. 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_modules nella Node.js documentazione.

È 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.

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 per node_modules Node.js per accedere e caricare.

Le seguenti sezioni forniscono ulteriori informazioni sulla creazione del Node.js le dipendenze dei moduli 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 Incluso Node.js dipendenze in una directory node_modules

Specificando Node.js dipendenze con un file package.json

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

Esempio 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 package.json file, utilizza le dipendenze e gli attributi. devDependencies L'attributo dependencies indica i pacchetti richiesti dall'applicazione in produzione. L'devDependenciesattributo indica i pacchetti necessari solo per lo sviluppo e il test locali.

Elastic Beanstalk esegue npm install come utente webapp con i seguenti comandi. Le opzioni dei comandi variano a seconda della versione di npm inclusa nella ramificazione della piattaforma 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 versione successiva — Elastic Beanstalk omette il. devDependencies Usa il comando npm install --omit=dev.

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

Se è necessario installare i devDependenciespacchetti, impostare la proprietà di PRODUCTION ambiente NPM USE _ _ sufalse. Con questa impostazione, durante l'esecuzione di npm install non verranno utilizzate le opzioni precedenti. Ciò comporterà l'installazione devDependenciesdei pacchetti.

SSHe HTTPS

A partire dalla versione della piattaforma Amazon Linux 2 del 7 marzo 2023, puoi anche utilizzare i HTTPS protocolli SSH and per recuperare i pacchetti da un repository Git. Ramificazione della piattaforma Node.js 16 supporta entrambi i protocolli SSH eHTTPS. Node.js 14 supporta solo il HTTPS protocollo.

Esempio package.json — Node.js 16 supporta sia HTTPS SSH
... "dependencies": { "aws-sdk": "https://github.com/aws/aws-sdk-js.git", "aws-chime": "git+ssh://git@github.com:aws/amazon-chime-sdk-js.git" }

Versioni e gamme di versioni

Importante

La funzionalità per specificare gli intervalli di versioni non è disponibile per i rami della piattaforma Node.js in esecuzione su AL2 023. Supportiamo solo una versione Node.js all'interno di un ramo Node.js specifico su AL2 023. 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.

Utilizzate la engines parola chiave nel package.json file per specificare Node.js versione che desideri venga utilizzata dall'applicazione. È inoltre possibile specificare un intervallo di versioni utilizzando la notazione npm. Per ulteriori informazioni sulla sintassi per gli intervalli di versioni, consulta Semantic Versioning using npm su Node.js sito web. La engines parola chiave in Node.js package.jsonfile sostituisce l'NodeVersionopzione legacy nel aws:elasticbeanstalk:container:nodejs namespace.

Esempio package.json— Singolo Node.js version
{ ... "engines": { "node" : "14.16.0" } }
Esempio package.json – Node.js gamma di versioni
{ ... "engines": { "node" : ">=10 <11" } }

Quando viene indicato un intervallo di versioni, Elastic Beanstalk installa la versione più recente Node.js versione che la piattaforma ha disponibile all'interno della gamma. 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 la versione più recente Node.js version 10.x.y, disponibile sulla piattaforma supportata.

Tieni presente che puoi specificare solo un Node.js versione che corrisponde al ramo della tua piattaforma. Ad esempio, se stai usando il Node.js 16 platform branch, puoi solo specificare un 16.x.y Node.js versione. È possibile utilizzare le opzioni dell'intervallo di versioni supportate da npm, per consentire una maggiore flessibilità. Per valido Node.js versioni per ogni ramo della piattaforma, vedi Node.jsnella guida AWS Elastic Beanstalk alle piattaforme.

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

Incluso Node.js dipendenze in una directory node_modules

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 sul sito Web della documentazione di npm.

Quando si distribuisce una directory su un 023/ node_modules AL2 AL2 Node.js versione della piattaforma, Elastic Beanstalk presuppone che tu stia fornendo i tuoi pacchetti di dipendenze ed evita di installare le dipendenze specificate in un file package.json. Node.js cerca node_modules le dipendenze nella directory. Per ulteriori informazioni, consulta Caricamento dalle cartelle node_modules nella Node.js documentazione.

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.