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

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