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 modules Node.js, comme ceux que vous spécifiez dans les instructions require()
. 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 en savoir plus, consultez Loading from node_modules folders
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épendance sont disponibles dans le répertoirenode_modules
pour Node.js à des fins d'accès et de chargement.
Les sections suivantes fournissent des informations supplémentaires sur la définition des dépendances de modules Node.js 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 de plus amples informations, consultez Inclusion des dépendances Node.js dans un répertoire node_modules.
Spécification des dépendances Node.js 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 fichier package.json
, utilisez les attributs dependencies et devDependencies. L'attribut dependencies désigne les packages nécessaires à votre application en production. L'attribut devDependencies désigne les packages qui ne sont nécessaires que pour le développement local et les tests.
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 ultérieure – Elastic Beanstalk omet les devDependencies. Il utilise la commande
npm install --omit=dev
.
Les deux commandes listées ci-dessus n'installent pas les packages qui sont des devDependencies.
Si vous devez installer les packages devDependencies, définissez la propriété d'environnement NPM_USE_PRODUCTION sur false
. Avec ce paramètre, nous n'utiliserons pas les options ci-dessus lors de l'exécution de npm install. Ainsi, les packages devDependencies seront installés.
SSH et HTTPS
À partir de la version de la plateforme Amazon Linux 2 du 7 mars 2023, vous pouvez également utiliser les protocoles SSH et HTTPS pour récupérer les packages d'un référentiel Git. La branche de plateforme Node.js 16 prend en charge les protocoles SSH et HTTPS. La branche Node.js 14 ne prend en charge que le protocole HTTPS.
Exemple package.json – Node.js 16 prend en charge les protocoles 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 mot-clé engines
du fichier package.json
pour spécifier la version de Node.js que vous souhaitez que votre application utilise. Vous pouvez également spécifier une plage de versions à l'aide de la notation npm. Pour en savoir plus sur la syntaxe des plages de versions, consultez la section Gestion sémantique des versions à l'aide de npmengines
du fichier Node.js package.json
remplace l'option NodeVersion
héritée dans l'espace de noms aws:elasticbeanstalk:container:nodejs
.
Exemple package.json
- Version Node.js unique
{
...
"engines": { "node" : "14.16.0" }
}
Exemple package.json
- Gamme de versions Node.js
{
...
"engines": { "node" : ">=10 <11" }
}
Lorsqu'une plage de versions est indiquée, Elastic Beanstalk installe la dernière version de Node.js à la disposition de la plateforme dans cette plage. 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 version Node.js de 10.x.y, disponible sur la plateforme prise en charge.
Sachez que vous ne pouvez spécifier qu'une version de Node.js qui correspond à votre branche de plateforme. Par exemple, si vous utilisez la branche de plateforme Node.js 16, vous ne pouvez spécifier qu'une version 16.x.y de Node.js. Vous pouvez utiliser les options de plage de versions prises en charge par npm pour offrir plus de flexibilité. Pour les versions Node.js valides pour chaque branche de plateforme, consultez Node.js dans le guide Plateformes AWS Elastic Beanstalk .
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.
Inclusion des dépendances Node.js 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 une version de AL2 Node.js plateforme AL2 023/, Elastic Beanstalk part du principe que vous fournissez vos propres packages de dépendances et évite d'installer les dépendances spécifiées dans un fichier package.json. Node.jsrecherche les dépendances dans le node_modules
répertoire. Pour en savoir plus, 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.