Configurer et utiliser npm avec CodeArtifact - CodeArtifact

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.

Configurer et utiliser npm avec CodeArtifact

Après avoir créé un référentiel dans CodeArtifact, vous pouvez utiliser le client npm pour installer et publier des packages. La méthode recommandée pour configurer npm avec le point de terminaison et le jeton d'autorisation de votre référentiel consiste à utiliser la aws codeartifact login commande. Vous pouvez également configurer npm manuellement.

Configuration de npm avec la commande login

Utilisez la aws codeartifact login commande pour récupérer les informations d'identification à utiliser avec npm.

Note

Si vous accédez à un référentiel dans un domaine qui vous appartient, vous n'avez pas besoin de l'inclure--domain-owner. Pour plus d'informations, consultez Domaines multi-comptes.

Important

Si vous utilisez npm 10.x ou une version ultérieure, vous devez utiliser la AWS CLI version 2.9.5 ou une version plus récente pour exécuter correctement la commande. aws codeartifact login

aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo

Cette commande apporte les modifications suivantes à votre fichier ~/.npmrc :

  • Ajoute un jeton d'autorisation après l'avoir récupéré à l' CodeArtifact aide de vos AWS informations d'identification.

  • Définit le registre npm sur le référentiel spécifié par l'--repositoryoption.

  • Pour npm 6 et versions antérieures : ajoute le jeton d'autorisation "always-auth=true" afin que le jeton d'autorisation soit envoyé pour chaque commande npm.

La période d'autorisation par défaut après l'appel login est de 12 heures et login doit être appelée pour actualiser régulièrement le jeton. Pour plus d'informations sur le jeton d'autorisation créé avec la login commande, consultezJetons créés avec la login commande.

Configuration de npm sans utiliser la commande de connexion

Vous pouvez configurer npm avec votre CodeArtifact référentiel sans la aws codeartifact login commande en mettant à jour manuellement la configuration npm.

Pour configurer npm sans utiliser la commande de connexion
  1. Dans une ligne de commande, récupérez un jeton CodeArtifact d'autorisation et stockez-le dans une variable d'environnement. npm utilisera ce jeton pour s'authentifier auprès de votre dépôt. CodeArtifact

    Note

    La commande suivante est destinée aux machines macOS ou Linux. Pour plus d'informations sur la configuration des variables d'environnement sur un ordinateur Windows, consultezTransmettre un jeton d'authentification à l'aide d'une variable d'environnement.

    CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
  2. Obtenez le point de terminaison de votre CodeArtifact dépôt en exécutant la commande suivante. Le point de terminaison de votre référentiel est utilisé pour pointer npm vers votre référentiel afin d'installer ou de publier des packages.

    • Remplacez my_domain par votre nom de CodeArtifact domaine.

    • Remplacez 111122223333 par l'ID de AWS compte du propriétaire du domaine. Si vous accédez à un référentiel dans un domaine qui vous appartient, vous n'avez pas besoin de l'inclure--domain-owner. Pour plus d'informations, consultez Domaines multi-comptes.

    • Remplacez my_repo par le nom de votre CodeArtifact dépôt.

    aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm

    L'URL suivante est un exemple de point de terminaison du référentiel.

    https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/
    Important

    L'URL du registre doit se terminer par une barre oblique (/). Dans le cas contraire, vous ne pourrez pas vous connecter au référentiel.

  3. Utilisez la npm config set commande pour définir le registre sur votre CodeArtifact référentiel. Remplacez l'URL par l'URL du point de terminaison du référentiel de l'étape précédente.

    npm config set registry=https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/
  4. Utilisez la npm config set commande pour ajouter votre jeton d'autorisation à votre configuration npm.

    npm config set //my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/:_authToken=$CODEARTIFACT_AUTH_TOKEN

    Pour npm 6 ou inférieur : pour que npm transmette toujours le jeton d'authentification CodeArtifact, même pour les GET demandes, définissez la variable de always-auth configuration avec. npm config set

    npm config set //my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/:always-auth=true

Exemple de fichier de configuration npm () .npmrc

Voici un exemple de .npmrc fichier après avoir suivi les instructions précédentes pour définir le point de terminaison CodeArtifact du registre, ajouter un jeton d'authentification et configureralways-auth.

registry=https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my-cli-repo/ //my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/:_authToken=eyJ2ZX... //my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/:always-auth=true

Exécution de commandes npm

Après avoir configuré le client npm, vous pouvez exécuter les commandes npm. En supposant qu'un package soit présent dans votre dépôt ou dans l'un de ses référentiels en amont, vous pouvez l'installer avecnpm install. Par exemple, utilisez ce qui suit pour installer le lodash package.

npm install lodash

Utilisez la commande suivante pour publier un nouveau package npm dans un CodeArtifact référentiel.

npm publish

Pour plus d'informations sur la création de packages npm, voir Création de modules Node.js sur le site Web de documentation de npm. Pour une liste des commandes npm prises en charge par CodeArtifact, consultez npm Command Support.

Vérification de l'authentification et de l'autorisation npm

L'invocation de la npm ping commande permet de vérifier les points suivants :

  • Vous avez correctement configuré vos informations d'identification afin de pouvoir vous authentifier auprès d'un CodeArtifact référentiel.

  • La configuration de l'autorisation vous accorde l'ReadFromRepositoryautorisation.

Le résultat d'un appel réussi de npm ping ressemble à ce qui suit.

$ npm -d ping npm info it worked if it ends with ok npm info using npm@6.4.1 npm info using node@v9.5.0 npm info attempt registry request try #1 at 4:30:59 PM npm http request GET https://<domain>.d.codeartifact.us-west-2.amazonaws.com/npm/shared/-/ping?write=true npm http 200 https:///npm/shared/-/ping?write=true Ping success: {} npm timing npm Completed in 716ms npm info ok

L'-doption oblige npm à imprimer des informations de débogage supplémentaires, y compris l'URL du référentiel. Ces informations permettent de confirmer facilement que npm est configuré pour utiliser le référentiel que vous attendez.

Revenir au registre npm par défaut

La configuration de npm with CodeArtifact définit le registre npm sur le référentiel spécifié CodeArtifact . Vous pouvez exécuter la commande suivante pour rétablir le registre npm sur son registre par défaut lorsque vous avez terminé de vous connecter à CodeArtifact.

npm config set registry https://registry.npmjs.com/

Résolution des problèmes d'installation lents avec npm 8.x ou supérieur

Il existe un problème connu dans les versions 8.x et supérieures de npm : si une demande est envoyée à un référentiel de packages et que le référentiel redirige le client vers Amazon S3 au lieu de diffuser directement les actifs, le client npm peut se bloquer pendant plusieurs minutes par dépendance.

Les CodeArtifact référentiels étant conçus pour toujours rediriger la demande vers Amazon S3, ce problème se produit parfois, ce qui entraîne de longs délais de construction en raison des longs délais d'installation de npm. Les instances de ce comportement se présenteront sous la forme d'une barre de progression affichée pendant plusieurs minutes.

Pour éviter ce problème, utilisez les progress=false drapeaux --no-progress or avec les commandes npm cli, comme indiqué dans l'exemple suivant.

npm install lodash --no-progress