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.
Table des matières
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 de plus amples informations, veuillez consulter Domaines multi-comptes.
Important
Si vous utilisez npm 10.x ou version ultérieure, vous devez utiliser la AWS CLI version 2.9.5 ou plus récente pour exécuter correctement la commande. aws codeartifact login
aws codeartifact login --tool
npm
--domainmy_domain
--domain-owner111122223333
--repositorymy_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'
--repository
option. -
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
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-owner111122223333
--query authorizationToken --output text`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
avec votre nom CodeArtifact de domaine.Remplacez
111122223333
avec l'identifiant 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 de plus amples informations, veuillez consulter Domaines multi-comptes.Remplacez
my_repo
avec le nom de votre CodeArtifact dépôt.
aws codeartifact get-repository-endpoint --domain
my_domain
--domain-owner111122223333
--repositorymy_repo
--format npmURLVoici un exemple de point de terminaison de référentiel.
https://
my_domain
-111122223333.d.codeartifact.us-west-2
.amazonaws.com/npm/my_repo
/Important
Le registre URL doit se terminer par une barre oblique (/). Dans le cas contraire, vous ne pourrez pas vous connecter au référentiel.
Utilisez la
npm config set
commande pour définir le registre sur votre CodeArtifact référentiel. Remplacez le URL par le point URL 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
/Note
Pour utiliser un point de terminaison à double pile, utilisez le
codeartifact.
point de terminaison.region
.on.awsUtilisez 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_TOKENPour 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 dealways-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, consultez la section Création de modules Node.js
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'
ReadFromRepository
autorisation.
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'-d
option oblige npm à imprimer des informations de débogage supplémentaires, y compris le référentiel. URL 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
Dans les versions 8.x et supérieures de npm, il existe un problème connu selon lequel, 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