Tutoriel : extraction depuis un dépôt de packages - Amazon CodeCatalyst

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.

Tutoriel : extraction depuis un dépôt de packages

Dans ce didacticiel, vous apprendrez à créer un flux de travail qui exécute une application dont les dépendances sont extraites d'un référentiel de CodeCatalyst packages. L'application est une simple application Node.js qui imprime un message « Hello World » dans les CodeCatalyst journaux. L'application n'a qu'une seule dépendance : le package lodash npm. Le lodash package est utilisé pour transformer une hello-world chaîne enHello World. Vous utiliserez la version 4.17.20 de ce package.

Après avoir configuré votre application et votre flux de travail, vous configurez CodeCatalyst pour empêcher l'importation de versions supplémentaires lodash de dans le référentiel de CodeCatalyst packages depuis le registre externe public (npmjs.com). Vous testez ensuite que les versions supplémentaires de lodash sont bloquées avec succès.

À la fin de ce didacticiel, vous devriez avoir une bonne compréhension de la manière dont un flux de travail interagit avec les référentiels de packages, à la fois internes et externes CodeCatalyst, afin de récupérer des packages. Vous devez également comprendre les behind-the-scenes interactions qui se produisent entre npm, votre référentiel de packages, votre flux de travail et le package.json fichier de votre application.

Prérequis

Avant de commencer :

Étape 1 : Création d'un référentiel source

Au cours de cette étape, vous créez un référentiel source dans CodeCatalyst. Ce référentiel stocke les fichiers source du didacticiel, tels que les package.json fichiers index.js et.

Pour plus d'informations sur les référentiels sources, consultezCréation d'un référentiel source.

Pour créer un référentiel de sources
  1. Ouvrez la CodeCatalyst console à l'adresse https://codecatalyst.aws/.

  2. Accédez à votre projet,codecatalyst-package-project.

  3. Dans le volet de navigation, choisissez Code, puis sélectionnez Référentiels sources.

  4. Choisissez Ajouter un référentiel, puis sélectionnez Créer un référentiel.

  5. Dans Nom du référentiel, entrez :

    hello-world-app
  6. Choisissez Créer.

Étape 2 : Création des référentiels de packages CodeCatalyst et de passerelle

Au cours de cette étape, vous créez un référentiel de packages dans votre CodeCatalyst projet et vous le connectez à un référentiel de passerelle, également inclus dans votre CodeCatalyst projet. Vous importez ensuite la dépendance du didacticiel depuis npmjs.com dans les deux référentiels. lodash

Le référentiel de passerelle est le « ciment » qui connecte votre dépôt de packages CodeCatalyst au site public npmjs.com.

Pour plus d'informations sur les référentiels de packages, consultezPubliez et partagez des progiciels dans CodeCatalyst.

Note

Ce didacticiel utilise les termes référentiel de CodeCatalyst packages et référentiel de passerelle pour désigner les deux référentiels que vous créez CodeCatalyst dans la procédure suivante.

Pour créer des référentiels de CodeCatalyst packages et de passerelles
  1. Dans le panneau de navigation, choisissez Packages.

  2. Choisissez Créer un référentiel de packages.

  3. Dans Nom du référentiel, entrez :

    codecatalyst-package-repository
  4. Choisissez + Sélectionnez les référentiels en amont.

  5. Choisissez les référentiels Gateway.

  6. Dans le npm-public-registry-gatewaychamp, choisissez Create.

  7. Choisissez Select (Sélectionner).

  8. Choisissez Créer.

    CodeCatalyst crée un référentiel de packages appelé codecatalyst-package-repository qui est connecté à un référentiel de passerelle. Le référentiel de passerelle est connecté au registre npmjs.com.

Étape 3 : Création de l'application « Hello World »

Au cours de cette étape, vous allez créer une application Node.js « Hello World » et importer sa dépendance (lodash) dans votre passerelle et vos référentiels de CodeCatalyst packages.

Pour créer l'application, vous avez besoin d'une machine de développement sur laquelle Node.js et le npm client associé sont installés.

Ce didacticiel part du principe que vous utiliserez CodeCatalyst un environnement de développement comme machine de développement. Bien que vous n'ayez pas à utiliser un environnement CodeCatalyst de développement, il est recommandé car il fournit un environnement de travail propre, contient Node.js et est npm préinstallé, et il est facile à supprimer lorsque vous avez terminé le didacticiel. Pour plus d'informations sur les CodeCatalyst environnements de développement, consultezCréation d'un environnement de développement.

Suivez les instructions suivantes pour lancer un environnement de CodeCatalyst développement et utilisez-le pour créer l'application « Hello World ».

Pour lancer un environnement CodeCatalyst de développement
  1. Dans le volet de navigation, choisissez Code, puis Dev Environments.

  2. En haut, choisissez Create Dev Environment, puis choisissez AWS Cloud9 (dans le navigateur).

  3. Assurez-vous que le référentiel est défini sur hello-world-app et que la branche existante est définie surmain. Choisissez Créer.

    Votre environnement de développement s'ouvre dans un nouvel onglet du navigateur, et votre dépôt (hello-world-app) y est cloné.

  4. Laissez les deux onglets CodeCatalyst du navigateur ouverts et passez à la procédure suivante.

Pour créer l'application « Hello World » Node.js
  1. Accédez à votre environnement de développement.

  2. À l'invite du terminal, accédez au répertoire racine du référentiel hello-world-app source :

    cd hello-world-app
  3. Initialisez un projet Node.js :

    npm init -y

    L'initialisation crée un package.json fichier dans le répertoire racine dehello-world-app.

  4. Connectez le client npm de votre environnement de développement à votre référentiel de CodeCatalyst packages :

    1. Passez à la CodeCatalyst console.

    2. Dans le panneau de navigation, choisissez Packages.

    3. Sélectionnez codecatalyst-package-repository.

    4. Choisissez Connect to repository.

    5. Choisissez Créer un jeton. Un jeton d'accès personnel (PAT) est créé pour vous.

    6. Choisissez Copier pour copier les commandes.

    7. Passez à votre environnement de développement.

    8. Vérifiez que vous êtes dans le hello-world-app répertoire.

    9. Collez les commandes. Ils ressemblent à ce qui suit :

      npm set registry=https://packages.us-west-2.codecatalyst.aws/npm/ExampleCompany/codecatalyst-package-project/codecatalyst-package-repository/ --location project npm set //packages.us-west-2.codecatalyst.aws/npm/ExampleCompany/codecatalyst-package-project/hello-world-app/:_authToken=username:token-secret
  5. lodashVersion d'importation 4.17.20 :

    npm install lodash@v4.17.20 --save --save-exact

    npm recherche la lodash version 4.17.20 aux emplacements suivants, dans l'ordre suivant :

    • Dans l'environnement de développement. Il ne le trouve pas ici.

    • Dans le référentiel de CodeCatalyst packages. Il ne le trouve pas ici.

    • Dans le référentiel de la passerelle. Il ne le trouve pas ici.

    • Dans npmjs.com. Il le trouve ici.

    npm importe lodash dans le référentiel de passerelle, le référentiel de CodeCatalyst packages et l'environnement de développement.

    Note

    Si vous n'aviez pas connecté le client npm à votre référentiel de CodeCatalyst packages à l'étape 4, npm aurait extrait lodash directement le package de npmjs.com et n'aurait importé le package dans aucun des référentiels.

    npm met également à jour votre package.json fichier avec la lodash dépendance et crée un node_modules répertoire contenant lodash toutes ses dépendances.

  6. Testez qui lodash a été importé avec succès dans votre environnement de développement. Entrez :

    npm list

    Le message suivant s'affiche, indiquant que l'importation a été effectuée avec succès :

    `-- lodash@4.17.20
  7. (Facultatif) Ouvrez hello-world-app/package.json et vérifiez que les lignes de red boldont été ajoutés :

    { "name": "hello-world-app", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", dependencies": { "lodash": "4.17.20" } }
  8. Dans/hello-world-app, créez un fichier appelé index.js avec le contenu suivant :

    Astuce

    Vous pouvez utiliser la navigation latérale de votre environnement de développement pour créer ce fichier.

    // Importing lodash library const _ = require('lodash'); // Input string const inputString = 'hello-world'; // Transforming the string using lodash const transformedString = _.startCase(inputString.replace('-', ' ')); // Outputting the transformed string to the console console.log(transformedString);
Pour vérifier que « lodash » a été importé dans votre passerelle et vos référentiels de CodeCatalyst packages
  1. Passez à la CodeCatalyst console.

  2. Dans le panneau de navigation, choisissez Packages.

  3. Choisissez npm-public-registry-gateway.

  4. Assurez-vous qu'lodashil est affiché. La colonne Dernière version indique4.17.20.

  5. Répétez cette procédure pourcodecatalyst-package-repository. Il se peut que vous deviez actualiser la fenêtre du navigateur pour voir le package importé.

Pour tester « Hello World » dans votre environnement de développement
  1. Passez à votre environnement de développement.

  2. Assurez-vous que vous êtes toujours dans le hello-world-app répertoire, puis lancez l'application :

    node index.js

    Un Hello World message s'affiche. Node.js a exécuté l'application à l'aide lodash du package que vous avez téléchargé dans votre environnement de développement lors d'une étape précédente.

Pour ignorer le répertoire « node_modules » et valider « Hello World »
  1. Ignorez le node_modules répertoire. Entrez :

    echo "node_modules/" >> .gitignore

    Il est recommandé d'éviter de valider ce répertoire. De plus, la validation de ce répertoire interférera avec les étapes ultérieures de ce didacticiel.

  2. Ajoutez, validez et envoyez :

    git add . git commit -m "add the Hello World application" git push

    L'application « Hello World » et les fichiers de projet sont ajoutés à votre référentiel source.

Étape 4 : créer un flux de travail qui exécute « Hello World »

Au cours de cette étape, vous créez un flux de travail qui exécute l'application « Hello World » à l'aide de la lodash dépendance. Le flux de travail inclut une seule action, ou tâche, appeléeRunHelloWorldApp. L'RunHelloWorldAppaction inclut les commandes et sections remarquables suivantes :

  • Packages

    Cette section indique le nom du référentiel de CodeCatalyst packages auquel l'action doit se connecter lors de son exécutionnpm install.

  • - Run: npm install

    Cette commande indique à npm d'installer les dépendances spécifiées dans le package.json fichier. La seule dépendance spécifiée dans le package.json fichier estlodash. npm recherche lodash dans les emplacements suivants :

    • Dans l'image Docker en cours d'exécution de l'action. Il ne le trouve pas ici.

    • Dans le référentiel de CodeCatalyst packages. Il le trouve ici.

    Une fois que npm l'a trouvélodash, il l'importe dans l'image Docker exécutant l'action.

  • - Run: npm list

    Cette commande affiche la version de qui lodash a été téléchargée sur l'image Docker exécutant l'action.

  • - Run: node index.js

    Cette commande exécute l'application « Hello World » en utilisant la dépendance spécifiée dans le package.json fichier.

Notez que l'RunHelloWorldAppaction est une action de création, comme indiqué par l'aws/build@v1identifiant situé en haut du flux de travail. Pour plus d'informations sur l'action de génération, consultezConstruire avec des flux de travail.

Suivez les instructions ci-dessous pour créer un flux de travail qui extrait la lodash dépendance de votre référentiel de CodeCatalyst packages, puis exécute votre application « Hello World ».

Pour créer un flux de travail
  1. Passez à la CodeCatalyst console.

  2. Dans le volet de navigation, choisissez CI/CD, puis Workflows.

  3. Choisissez Créer un flux de travail.

  4. Pour Référentiel source, choisissezhello-world-app.

  5. Pour Branch, choisissezmain.

    Le fichier de définition du flux de travail sera créé dans le référentiel source et la branche choisis.

  6. Choisissez Créer.

  7. Choisissez YAMLprès du haut.

  8. Supprimez l'YAMLexemple de code.

  9. Ajoutez le YAML code suivant :

    Name: codecatalyst-package-workflow SchemaVersion: "1.0" # Required - Define action configurations. Actions: RunHelloWorldApp: # Identifies the action. Do not modify this value. Identifier: aws/build@v1 Compute: Type: Lambda Inputs: Sources: - WorkflowSource # This specifies your source repository. Configuration: Steps: - Run: npm install - Run: npm list - Run: node index.js Container: # This specifies the Docker image that runs the action. Registry: CODECATALYST Image: CodeCatalystLinuxLambda_x86_64:2024_03 Packages: NpmConfiguration: PackageRegistries: - PackagesRepository: codecatalyst-package-repository

    Dans le code précédent, remplacez codecatalyst-package-repository avec le nom du référentiel de CodeCatalyst packages dans lequel vous l'avez crééÉtape 2 : Création des référentiels de packages CodeCatalyst et de passerelle.

    Pour plus d'informations sur les propriétés de ce fichier, consultez leCréez et testez des actions YAML.

  10. (Facultatif) Choisissez Valider pour vous assurer que le YAML code est valide avant de le valider.

  11. Choisissez Commit (Valider).

  12. Dans la boîte de dialogue du flux de travail de validation, entrez ce qui suit :

    1. Pour le nom du fichier de flux de travail, conservez la valeur par défaut,codecatalyst-package-workflow.

    2. Pour le message de validation, entrez :

      add initial workflow file
    3. Pour Repository, choisissez hello-world-app.

    4. Pour Nom de la branche, choisissez main.

    5. Choisissez Commit (Valider).

    Vous venez de créer un flux de travail.

Pour exécuter le flux de travail
  1. À côté du flux de travail que vous venez de créer (codecatalyst-package-workflow), choisissez Actions, puis Exécuter.

    Une exécution de flux de travail démarre.

  2. Dans la notification verte en haut à droite, choisissez le lien vers la course. Le lien ressemble àView Run-1234.

    Un diagramme de flux de travail apparaît, indiquant qui a lancé l'exécution et l'RunHelloWorldAppaction.

  3. Choisissez la case RunHelloWorldAppd'action pour suivre la progression de l'action.

  4. Lorsque la course est terminée, passez àÉtape 5 : vérifier le flux de travail.

Étape 5 : vérifier le flux de travail

Au cours de cette étape, vous vérifiez que le flux de travail a correctement exécuté l'application « Hello World » avec ses lodash dépendances.

Pour vérifier que l'application « Hello World » s'exécute en utilisant sa dépendance
  1. Dans le diagramme du flux de travail, RunHelloWorldAppcochez la case.

    La liste des messages du journal s'affiche.

  2. Développez le message du node index.js journal.

    Le message suivant s'affiche :

    [Container] 2024/04/24 21:15:41.545650 Running command node index.js Hello World

    L'apparition de Hello Word (au lieu dehello-world) indique que la lodash dépendance a été utilisée avec succès.

  3. Développez le npm list journal.

    Un message similaire au suivant s'affiche :

    └── lodash@4.17.20

    Ce message indique que lodash la version 4.17.20 a été téléchargée sur l'image Docker exécutant l'action de flux de travail.

Étape 6 : Bloquer les importations depuis npmjs.com

Maintenant que lodash la version 4.17.20 est présente dans votre passerelle et vos référentiels de CodeCatalyst packages, vous pouvez bloquer les importations d'autres versions. Le blocage vous empêche d'importer accidentellement des versions ultérieures (ou antérieures) delodash, susceptibles de contenir du code malveillant. Pour plus d’informations, consultez Modification des contrôles d'origine des packages et Attaques de substitution de la dépendance.

Suivez les instructions suivantes pour bloquer les importations de lodash vers votre référentiel de passerelle. Lorsque vous bloquez des packages au niveau de la passerelle, ils sont également bloqués en aval.

Pour bloquer les importations vers votre référentiel de passerelle
  1. Dans le panneau de navigation, choisissez Packages.

  2. Choisissez npm-publish-registry-gateway.

  3. Sélectionnez lodash.

  4. En haut, choisissez Origin controls.

  5. Sous Upstream, choisissez Bloquer.

  6. Choisissez Enregistrer.

    Vous avez désormais bloqué les importations dans votre référentiel de passerelle (ainsi que dans les référentiels et ordinateurs en aval) depuis npmjs.com.

Étape 7 : Testez la fonction de blocage

Dans cette section, vous allez vérifier que le blocage que vous avez Étape 6 : Bloquer les importations depuis npmjs.com configuré fonctionne. Vous commencez par configurer « Hello World » pour demander la version 4.17.2 1 lodash au lieu de celle disponible dans votre référentiel de passerelle, qui est 4.17.2 0. Vous vérifiez ensuite que l'application ne peut pas extraire la version 4.17.21 de nmpjs.com, ce qui indique un blocage réussi. En guise de test final, vous débloquez les importations vers votre référentiel de passerelle et vous vérifiez que l'application peut extraire avec succès la version 4.17.21 de. lodash

Utilisez l'ensemble de procédures suivant pour tester la fonctionnalité de blocage.

Avant de commencer
  1. Passez à votre environnement de développement.

  2. Extrayez le codecatalyst-package-workflow.yaml fichier que vous avez créé à l'aide de la CodeCatalyst console plus tôt :

    git pull
Pour configurer 'Hello World' pour demander la version 4.17.21 de 'lodash'
  1. Ouvrir /hello-world-app/package.json.

  2. Changez la lodash version en 4.17.21 comme indiqué dans red bold:

    { "name": "hello-world-app", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "lodash": "4.17.21" } }

    Il existe désormais une incompatibilité entre la version du package.json fichier (4.17.21) et celle de la passerelle et des référentiels de CodeCatalyst packages (4.17.20).

  3. Ajoutez, validez et envoyez :

    git add . git commit -m "update package.json to use lodash 4.17.21" git push
Pour vérifier que « Hello World » ne peut pas extraire la version 4.17.21 de « lodash »
  1. Exécutez le flux de travail avec la version non correspondante :

    1. Passez à la CodeCatalyst console.

    2. Dans le volet de navigation, choisissez CI/CD, puis Workflows.

    3. À côté decodecatalyst-package-workflow, choisissez Actions, puis sélectionnez Exécuter.

      npm package.json recherche les dépendances et constate que la version 4.17.21 de lodash est requise par « Hello World ». npm recherche les dépendances aux emplacements suivants, dans l'ordre suivant :

      • Dans l'image Docker en cours d'exécution de l'action. Il ne le trouve pas ici.

      • Dans le référentiel de CodeCatalyst packages. Il ne le trouve pas ici.

      • Dans le référentiel de la passerelle. Il ne le trouve pas ici.

      • Dans npmjs.com. Il le trouve ici.

      Une fois que npm a trouvé la version 4.17.21 dans npmjs.com, il essaie de l'importer dans le référentiel de passerelle, mais comme vous avez configuré la passerelle pour bloquer les importations delodash, l'importation n'a pas lieu.

      L'importation n'ayant pas lieu, le flux de travail échoue.

  2. Vérifiez que le flux de travail a échoué :

    1. Dans la notification verte en haut à droite, choisissez le lien vers la course. Le lien ressemble àView Run-2345.

    2. Dans le diagramme du flux de travail, RunHelloWorldAppcochez la case.

    3. Développez le message du npm install journal.

      Le message suivant s'affiche :

      [Container] 2024/04/25 17:20:34.995591 Running command npm install npm ERR! code ETARGET npm ERR! notarget No matching version found for lodash@4.17.21. npm ERR! notarget In most cases you or one of your dependencies are requesting npm ERR! notarget a package version that doesn't exist. npm ERR! A complete log of this run can be found in: /tmp/.npm/_logs/2024-05-08T22_03_26_493Z-debug-0.log

      L'erreur indique que la version 4.17.21 est introuvable. Cela est normal car vous l'avez bloqué.

Pour débloquer les importations depuis npmjs.com
  1. Dans le panneau de navigation, choisissez Packages.

  2. Choisissez npm-publish-registry-gateway.

  3. Sélectionnez lodash.

  4. En haut, choisissez Origin controls.

  5. Sous Upstream, sélectionnez Autoriser.

  6. Choisissez Enregistrer.

    Vous avez maintenant débloqué les importations de. lodash

    Votre flux de travail peut désormais importer la version 4.17.21 de. lodash

Pour vérifier que les importations depuis npmjs.com sont débloquées
  1. Réexécutez votre flux de travail. Cette fois, le flux de travail devrait réussir car l'importation de la version 4.17.21 devrait désormais fonctionner. Pour réexécuter le flux de travail, procédez comme suit :

    1. Choisissez CI/CD, puis Workflows.

    2. À côté decodecatalyst-package-workflow, choisissez Actions, puis Exécuter.

    3. Dans la notification verte en haut à droite, choisissez le lien vers la course. Le lien ressemble àView Run-3456.

      Un diagramme de flux de travail apparaît, indiquant qui a lancé l'exécution et l'RunHelloWorldAppaction.

    4. Choisissez la case RunHelloWorldAppd'action pour suivre la progression de l'action.

    5. Développez le message du npm list journal et vérifiez qu'un message similaire au suivant apparaît :

      └── lodash@4.17.21

      Ce message indique que lodash la version 4.17.21 a été téléchargée.

  2. Vérifiez que la version 4.17.21 a été importée dans vos référentiels CodeCatalyst et ceux de la passerelle :

    1. Dans le panneau de navigation, choisissez Packages.

    2. Choisissez npm-public-registry-gateway.

    3. Recherchez lodash et assurez-vous que la version est4.17.21.

      Note

      Bien que la version 4.17.20 ne soit pas répertoriée sur cette page, vous pouvez la trouver en choisissant lodash puis en choisissant Versions en haut de la page.

    4. Répétez ces étapes pour vérifier que la version 4.17.21 a été importée vers. codecatalyst-package-repository

Nettoyage

Nettoyez les fichiers et les services utilisés dans ce didacticiel pour éviter de vous les faire facturer.

Pour nettoyer le didacticiel des packages
  1. Supprimez le codecatalyst-package-project :

    1. Dans la CodeCatalyst console, accédez au codecatalyst-package-project projet si ce n'est pas déjà fait.

    2. Dans le volet de navigation, sélectionnez Paramètres du projet.

    3. Choisissez Supprimer le projetdelete, entrez et choisissez Supprimer le projet.

      CodeCatalyst supprime toutes les ressources du projet, y compris les référentiels de source, de passerelle et de CodeCatalyst packages. L'environnement de développement est également supprimé.

  2. Supprimez le PAT jeton :

    1. Choisissez votre nom d'utilisateur sur la droite, puis sélectionnez Mes paramètres.

    2. Sous Jetons d'accès personnels, choisissez le jeton que vous avez créé dans ce didacticiel, puis choisissez Supprimer.

Dans ce didacticiel, vous avez appris à créer un flux de travail qui exécute une application qui extrait ses dépendances d'un référentiel de CodeCatalyst packages. Vous avez également appris à bloquer et à débloquer des packages pour les empêcher d'accéder à votre passerelle et à vos référentiels de CodeCatalyst packages.