Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configuration des dépendances de votre application sur Elastic Beanstalk
Votre application peut avoir des dépendances sur certains Node.js modules, tels que ceux que vous spécifiez dans les require()
instructions. Ces modules sont stockés dans un répertoire node_modules
. Lorsque votre application s'exécute, Node.js charge les modules depuis ce répertoire. Pour plus d'informations, consultez la section Chargement à partir des dossiers node_modules
Vous pouvez spécifier ces dépendances de module à l'aide d'un fichier package.json
. Si Elastic Beanstalk détecte ce fichier et qu'aucun répertoire node_modules
n'est présent, Elastic Beanstalk exécute npm install
en tant qu'utilisateur webapp. La commande npm
install
installe les dépendances dans le répertoire node_modules
créé au préalable par Elastic Beanstalk. La commande npm
install
accède aux packages répertoriés dans le fichier package.json
à partir du registre public npm ou d'autres emplacements. Pour en savoir plus, consultez le site Web npm Docs
Si Elastic Beanstalk détecte le répertoire node_modules
, Elastic Beanstalk ne s'exécute pas npm install
, même si un fichier package.json
existe. Elastic Beanstalk part du principe que les packages de dépendances sont disponibles dans le répertoire pour node_modules
Node.js pour accéder et charger.
Les sections suivantes fournissent plus d'informations sur la création de votre Node.js dépendances des modules pour votre application.
Note
Si vous rencontrez des problèmes de déploiement lors de l'exécution d'Elastic Beanstalk npm install
, envisagez une autre approche. Incluez le répertoire node_modules
avec les modules de dépendance dans l’offre groupée source de votre application. Cela peut contourner les problèmes liés à l'installation de dépendances à partir du registre public npm pendant que vous étudiez le problème. Comme les modules de dépendance proviennent d'un répertoire local, cela peut également contribuer à réduire le temps de déploiement. Pour plus d’informations, consultez Y compris Node.js dépendances dans un répertoire node_modules.
Spécification Node.js dépendances avec un fichier package.json
Utilisez un fichier package.json
à la racine de votre source de projet pour spécifier des packages de dépendance et pour fournir une commande start. Lorsqu'un fichier package.json
est présent et qu'aucun répertoire node_modules
n'est présent à la racine de la source de votre projet, Elastic Beanstalk exécute npm install
en tant qu'utilisateur webapp pour installer les dépendances à partir du registre public npm. Il utilise également la commande start
pour démarrer votre application. Pour en savoir plus sur le fichier package.json
, consultez la section Définition des dépendances dans un fichier package.json
Utilisez le mot-clé scripts
pour fournir une commande start. Le mot-clé scripts
est maintenant utilisé à la place de l'option héritée NodeCommand
dans l'espace de noms aws:elasticbeanstalk:container:nodejs
.
Exemple 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"
}
}
Mode production et dépendances dev
Pour spécifier vos dépendances dans le package.json
fichier, utilisez les dépendances et les devDependenciesattributs. L'attribut dependencies désigne les packages nécessaires à votre application en production. L'devDependenciesattribut désigne les packages qui ne sont nécessaires que pour le développement et les tests locaux.
Elastic Beanstalk exécute npm install
en tant qu'utilisateur webapp avec les commandes suivantes. Les options de commande varient en fonction de la version de npm incluse dans la branche de la plateforme sur laquelle votre application s'exécute.
-
npm v6 – Elastic Beanstalk installe les dépendances en mode production par défaut. Il utilise la commande
npm install --production
. -
npm v7 ou supérieur — Elastic Beanstalk omet le. devDependencies Il utilise la commande
npm install --omit=dev
.
Les deux commandes répertoriées ci-dessus n'installent pas les packages concernés devDependencies.
Si vous devez installer les devDependenciespackages, définissez la propriété d'PRODUCTIONenvironnement NPM USE _ _ surfalse
. Avec ce paramètre, nous n'utiliserons pas les options ci-dessus lors de l'exécution de npm install. Cela entraînera l'installation devDependenciesdes packages.
SSHet HTTPS
À compter de la sortie de la plateforme Amazon Linux 2 du 7 mars 2023, vous pouvez également utiliser les HTTPS protocoles SSH and pour récupérer des packages depuis un référentiel Git. Branche de plateforme Node.js 16 supporte à la fois les HTTPS protocoles SSH et. Node.js 14 ne prend en charge que le HTTPS protocole.
Exemple package.json — Node.js 16 prend en charge les deux HTTPS et 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"
}
Versions et plages de versions
Important
La fonctionnalité permettant de spécifier des plages de versions n'est pas disponible pour les branches de la plateforme Node.js exécutées sur AL2 023. Nous ne prenons en charge qu'une seule version de Node.js dans une branche Node.js spécifique le AL2 023. Si votre fichier package.json
spécifie une plage de versions, nous l'ignorerons et utiliserons par défaut la version de la branche de plateforme de Node.js.
Utilisez le engines
mot clé dans le package.json
fichier pour spécifier Node.js version que vous souhaitez que votre application utilise. Vous pouvez également spécifier une plage de versions à l'aide de la notation npm. Pour plus d'informations sur la syntaxe des plages de versions, voir Versionnage sémantique à l'aide de npm surengines
mot clé dans le Node.js package.json
le fichier remplace l'ancienne NodeVersion
option dans l'espace de aws:elasticbeanstalk:container:nodejs
noms.
Exemple package.json
— Célibataire Node.js version
{
...
"engines": { "node" : "14.16.0" }
}
Exemple package.json
– Node.js gamme de versions
{
...
"engines": { "node" : ">=10 <11" }
}
Lorsqu'une plage de versions est indiquée, Elastic Beanstalk installe la dernière Node.js version disponible sur la plateforme dans la gamme. Dans cet exemple, la plage indique que la version doit être supérieure ou égale à la version 10, mais inférieure à la version 11. Par conséquent, Elastic Beanstalk installe la dernière Node.js version 10.x.y, qui est disponible sur la plateforme prise en charge.
Sachez que vous ne pouvez spécifier qu'un Node.js version correspondant à la branche de votre plateforme. Par exemple, si vous utilisez Node.js 16 branches de plate-forme, vous ne pouvez spécifier qu'une 16.x.y Node.js version. Vous pouvez utiliser les options de plage de versions prises en charge par npm pour offrir plus de flexibilité. Pour une durée de validité Node.js versions pour chaque branche de plate-forme, voir Node.jsdans le guide AWS Elastic Beanstalk des plateformes.
Note
Lorsque la prise en charge de la version de Node.js que vous utilisez est supprimée de la plateforme, vous devez modifier ou supprimer le paramètre de version de Node.js avant de procéder à une mise à jour de la plateforme. Cela peut se produire lorsqu'une faille de sécurité est identifiée pour une ou plusieurs versions de Node.js
Lorsque cela se produit, toute tentative de mise à jour vers une nouvelle version de la plateforme qui ne prend pas en charge la version Node.js configurée échoue. Pour éviter de créer un nouvel environnement, modifiez le paramètre de version de Node.js dans package.json
sur une version de Node.js qui est prise en charge à la fois par l'ancienne version de la plateforme et par la nouvelle. Vous avez la possibilité de spécifier une plage de versions Node.js qui inclut une version prise en charge, comme décrit plus haut dans cette rubrique. Vous pouvez également supprimer le paramètre, puis déployer le nouveau bundle source.
Y compris Node.js dépendances dans un répertoire node_modules
Pour déployer les packages de dépendances sur des instances d'environnement avec votre code d'application, incluez-les dans un répertoire nommé node_modules
à la racine de la source de votre projet. Pour en savoir plus, consultez la section Téléchargement et installation de packages localement sur
Lorsque vous déployez un node_modules
répertoire sur un AL2 023/ AL2 Node.js version de plateforme, Elastic Beanstalk part du principe que vous fournissez vos propres packages de dépendances et évite d'installer des dépendances spécifiées dans un fichier package.json. Node.js recherche les dépendances dans le node_modules
répertoire. Pour plus d'informations, consultez la section Chargement à partir des dossiers node_modules
Note
Si vous rencontrez des problèmes de déploiement lors de l'exécution d'Elastic Beanstalk npm install
, pensez à utiliser l'approche décrite dans cette rubrique pour contourner le problème pendant que vous étudiez le problème.