Configuration des dépendances de votre application sur Elastic Beanstalk - AWS Elastic Beanstalk

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 (Chargement depuis les dossiers node_modules) dans la documentation Node.js.

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 sur le site Web de npm Docs.

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 npm sur le site web de Node.js. Le mot-clé engines 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 le site Web de npm Docs.

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 dans la documentation Node.js.

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.