Utilisation du moteur d'exécution géré Node.js - AWS App Runner

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.

Utilisation du moteur d'exécution géré Node.js

AWS App Runnerfournit un moteur d'exécution géré Node.js. Le runtime facilite la création et l'exécution de conteneurs avec des applications web basées sur Node.js. Lorsque vous utilisez le runtime Node.js, App Runner démarre avec une image d'exécution Node.js gérée. Cette image est basée sur laImage Amazon Linux Dockeret contient le package d'exécution Node.js et quelques outils. App Runner utilise cette image d'exécution gérée comme image de base et ajoute votre code d'application pour créer une image Docker. Il déploie ensuite cette image pour exécuter votre service Web dans un conteneur.

Vous spécifiez un moteur d'exécution pour votre service App Runner lorsque vousCréation d'un serviceà l'aide de la console App Runner ou de laCreateServiceAPI. Vous pouvez également spécifier un moteur d'exécution dans le cadre de votre code source. Utilisation de l'runtimedans un mot-cléFichier de configuration App Runnerque vous incluez dans votre référentiel de code. La convention d'attribution de noms d'un moteur d'exécution géré est<language-name> <major-version>.

Pour connaître les noms d'exécution Node.js valides, consultezInformations sur la version de runtime Node.js.

App Runner met à jour le moteur d'exécution de votre service vers la dernière version de chaque déploiement ou mise à jour de service. Si votre application nécessite une version spécifique d'un moteur d'exécution géré, vous pouvez la spécifier à l'aide de l'outilruntime-versiondans la boîte de dialogueFichier de configuration App Runner. Spécifiez une version mineure en tant que<major>.<minor>pour verrouiller les versions principales et mineures (App Runner ne met à jour que les versions de correctifs). Spécifiez un niveau de correctif particulier comme<major>.<minor>.<patch>pour verrouiller votre service sur une version d'exécution spécifique (App Runner ne met jamais à jour le moteur d'exécution).

Configuration de runtime Node.js

Lorsque vous choisissez un moteur d'exécution géré, vous devez également configurer, au minimum, les commandes de génération et d'exécution. Vous les configurez alors quecreatingouactualisation en coursvotre service App Runner. Il existe différentes façons de le faire :

  • Utilisation de la console App Runner— Spécifie les commandes dans la zoneConfiguration de la générationdu processus de création ou de l'onglet de configuration.

  • Utilisation de l'API App Runner— AppelezCreateServiceouUpdateService. Spécifiez les commandes à l'aide de laBuildCommandandStartCommandMembres de laCodeConfigurationValuesType de données.

  • Utilisation d'uneFichier de configuration : spécifiez une ou plusieurs commandes de construction dans un maximum de trois phases de construction, et une seule commande d'exécution qui sert à démarrer votre application. Il existe d'autres paramètres de configuration facultatifs.

La fourniture d'un fichier de configuration est facultative. Lorsque vous créez un service App Runner à l'aide de la console ou de l'API, vous spécifiez si App Runner obtient vos paramètres de configuration directement lors de la création ou à partir d'un fichier de configuration.

Avec le runtime Node.js spécifiquement, vous pouvez également configurer la build et l'exécution à l'aide d'un fichier JSON nommépackage.jsondans la racine de votre référentiel source. À l'aide de ce fichier, vous pouvez configurer la version du moteur Node.js, les packages de dépendance et diverses commandes (applications de ligne de commande). Les gestionnaires de paquets tels que npm ou yarn interprètent ce fichier comme entrée pour leurs commandes.

Exemples :

  • npm installinstalle les paquets définis par ledependenciesanddevDependenciesnœud danspackage.json.

  • npm startounpm run startexécute la commande définie parscripts/startnœud danspackage.json.

Voici un exemple de fichier package.json.

{ "name": "node-js-getting-started", "version": "0.3.0", "description": "A sample Node.js app using Express 4", "engines": { "node": "12.18.4" }, "scripts": { "start": "node index.js", "test": "node test.js" }, "dependencies": { "cool-ascii-faces": "^1.3.4", "ejs": "^2.5.6", "express": "^4.15.2" }, "devDependencies": { "got": "^11.3.0", "tape": "^4.7.0" } }

Pour plus d'informations surpackage.json, voirGuide de package.jsonsur le site web Node.js.

Tips
  • Si vos recettespackage.jsondéfinit un fichierstart, vous pouvez l'utiliser commerundans votre fichier de configuration App Runner, comme l'illustre l'exemple suivant.

    package.json

    { "scripts": { "start": "node index.js" } }

    apprunner.yaml

    run: command: npm start
  • Lorsque vous exécuteznpm installdans votre environnement de développement, npm crée le fichierpackage-lock.json. Ce fichier contient un instantané des versions du paquet npm qui viennent d'être installées. Par la suite, lorsque npm installe des dépendances, il utilise ces versions exactes. De même, le fil créeyarn.json. Envoyez ces fichiers dans votre référentiel de code source pour vous assurer que votre application est installée avec les versions des dépendances avec lesquelles vous l'avez développée et testée.

  • Vous pouvez également utiliser un fichier de configuration App Runner pour configurer la version Node.js et la commande start. Lorsque vous procédez ainsi, ces définitions remplacent celles depackage.json. Un conflit entrenodeversion danspackage.jsonet l'runtime-versiondans le fichier de configuration App Runner provoque l'échec de la phase de construction App Runner.

Exemples de runtime Node.js

Les exemples suivants illustrent les fichiers de configuration App Runner pour la création et l'exécution d'un service Node.js.

Cet exemple montre un fichier de configuration minimal que vous pouvez utiliser avec le moteur d'exécution géré Node.js. Pour connaître les hypothèses qu'App Runner fait avec un fichier de configuration minimal, consultezExemples de fichiers de configuration.

Exemple apprunner.yaml
version: 1.0 runtime: nodejs12 build: commands: build: - npm install --production run: command: node app.js

Cet exemple montre l'utilisation de toutes les clés de configuration avec le moteur d'exécution géré Node.js.

Exemple apprunner.yaml
version: 1.0 runtime: nodejs12 build: commands: pre-build: - npm install --only=dev - node test.js build: - npm install --production post-build: - node node_modules/ejs/postinstall.js env: - name: MY_VAR_EXAMPLE value: "example" run: runtime-version: 12.18.4 command: node app.js network: port: 8000 env: APP_PORT env: - name: MY_VAR_EXAMPLE value: "example"

Cet exemple montre comment configurer une application Node.js développée avec Grunt. Grognementsest un coureur de tâches JavaScript en ligne de commande. Il exécute des tâches répétitives et gère l'automatisation des processus pour réduire les erreurs humaines. Les plugins Grunt et Grunt sont installés et gérés à l'aide de npm. Vous configurez Grunt en incluant leGruntfile.jsdans la racine de votre référentiel source.

Exemple package.json
{ "scripts": { "build": "grunt uglify", "start": "node app.js" }, "devDependencies": { "grunt": "~0.4.5", "grunt-contrib-jshint": "~0.10.0", "grunt-contrib-nodeunit": "~0.4.1", "grunt-contrib-uglify": "~0.5.0" }, "dependencies": { "express": "^4.15.2" }, }
Exemple Gruntfile.js
module.exports = function(grunt) { // Project configuration. grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), uglify: { options: { banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' }, build: { src: 'src/<%= pkg.name %>.js', dest: 'build/<%= pkg.name %>.min.js' } } }); // Load the plugin that provides the "uglify" task. grunt.loadNpmTasks('grunt-contrib-uglify'); // Default task(s). grunt.registerTask('default', ['uglify']); };
Exemple apprunner.yaml
version: 1.0 runtime: nodejs12 build: commands: pre-build: - npm install grunt grunt-cli - npm install --only=dev - npm run build build: - npm install --production run: runtime-version: 12.18.4 command: node app.js network: port: 8000 env: APP_PORT