Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Konfigurieren und verwenden Sie npm mit CodeArtifact
Nachdem Sie ein Repository in erstellt haben CodeArtifact, können Sie den npm-Client verwenden, um Pakete zu installieren und zu veröffentlichen. Die empfohlene Methode zur Konfiguration von npm mit Ihrem Repository-Endpunkt und Autorisierungstoken ist die Verwendung des aws codeartifact login
Befehls. Sie können npm auch manuell konfigurieren.
Inhalt
Konfiguration von npm mit dem Login-Befehl
Verwenden Sie den aws codeartifact login
Befehl, um Anmeldeinformationen für die Verwendung mit npm abzurufen.
Anmerkung
Wenn Sie auf ein Repository in einer Domain zugreifen, die Sie besitzen, müssen Sie dies nicht angeben. --domain-owner
Weitere Informationen finden Sie unter Kontenübergreifende Domänen.
Wichtig
Wenn Sie npm 10.x oder neuer verwenden, müssen Sie AWS CLI Version 2.9.5 oder neuer verwenden, um den Befehl erfolgreich auszuführen. aws codeartifact login
aws codeartifact login --tool
npm
--domainmy_domain
--domain-owner111122223333
--repositorymy_repo
Dieser Befehl nimmt die folgenden Änderungen an Ihrer ~/.npmrc-Datei vor:
-
Fügt ein Autorisierungstoken hinzu, nachdem Sie es mithilfe Ihrer Anmeldeinformationen abgerufen haben. CodeArtifact AWS
-
Setzt die NPM-Registrierung auf das in der Option angegebene Repository.
--repository
-
Für npm 6 und niedriger: Fügt hinzu,
"always-auth=true"
dass das Autorisierungstoken für jeden npm-Befehl gesendet wird.
Die Standardautorisierungszeit nach dem Aufrufen login
beträgt 12 Stunden und login
muss aufgerufen werden, um das Token regelmäßig zu aktualisieren. Weitere Hinweise zu dem mit dem login
Befehl erstellten Autorisierungstoken finden Sie unterMit dem login Befehl erstellte Tokens.
Konfiguration von npm ohne Verwendung des Login-Befehls
Sie können npm mit Ihrem CodeArtifact Repository ohne den aws codeartifact login
Befehl konfigurieren, indem Sie die npm-Konfiguration manuell aktualisieren.
Um npm zu konfigurieren, ohne den Login-Befehl zu verwenden
Rufen Sie in einer Befehlszeile ein CodeArtifact Autorisierungstoken ab und speichern Sie es in einer Umgebungsvariable. npm verwendet dieses Token, um sich bei Ihrem Repository zu authentifizieren. CodeArtifact
Anmerkung
Der folgende Befehl gilt für macOS- oder Linux-Maschinen. Informationen zur Konfiguration von Umgebungsvariablen auf einem Windows-Computer finden Sie unterÜbergeben Sie ein Authentifizierungstoken mithilfe einer Umgebungsvariablen.
CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain
my_domain
--domain-owner111122223333
--query authorizationToken --output text`Rufen Sie den Endpunkt Ihres CodeArtifact Repositorys ab, indem Sie den folgenden Befehl ausführen. Ihr Repository-Endpunkt wird verwendet, um npm auf Ihr Repository zu verweisen, um Pakete zu installieren oder zu veröffentlichen.
Ersetzen
my_domain
mit deinem CodeArtifact Domainnamen.Ersetzen
111122223333
mit der AWS Konto-ID des Inhabers der Domain. Wenn Sie auf ein Repository in einer Domain zugreifen, die Sie besitzen, müssen Sie dies nicht angeben--domain-owner
. Weitere Informationen finden Sie unter Kontenübergreifende Domänen.Ersetzen
my_repo
mit Ihrem CodeArtifact Repository-Namen.
aws codeartifact get-repository-endpoint --domain
my_domain
--domain-owner111122223333
--repositorymy_repo
--format npmIm Folgenden finden Sie URL ein Beispiel für einen Repository-Endpunkt.
https://
my_domain
-111122223333.d.codeartifact.us-west-2
.amazonaws.com/npm/my_repo
/Wichtig
Die Registrierung URL muss mit einem Schrägstrich (/) enden. Andernfalls können Sie keine Verbindung zum Repository herstellen.
Verwenden Sie den
npm config set
Befehl, um die Registrierung auf Ihr CodeArtifact Repository festzulegen. Ersetzen Sie den URL durch den Repository-Endpunkt URL aus dem vorherigen Schritt.npm config set registry=https://
my_domain
-111122223333
.d.codeartifact.region
.amazonaws.com/npm/my_repo
/Anmerkung
Um einen Dual-Stack-Endpunkt zu verwenden, verwenden Sie den
codeartifact.
Endpunkt.region
.on.awsVerwenden Sie den
npm config set
Befehl, um Ihr Autorisierungstoken zu Ihrer NPM-Konfiguration hinzuzufügen.npm config set //
my_domain
-111122223333
.d.codeartifact.region
.amazonaws.com/npm/my_repo
/:_authToken=$CODEARTIFACT_AUTH_TOKENFür npm 6 oder niedriger: Damit npm das Authentifizierungstoken immer weitergibt CodeArtifact, auch bei
GET
Anfragen, setzen Sie diealways-auth
Konfigurationsvariable mit.npm config set
npm config set //
my_domain
-111122223333
.d.codeartifact.region
.amazonaws.com/npm/my_repo
/:always-auth=true
Beispiel für eine npm-Konfigurationsdatei () .npmrc
Im Folgenden finden Sie eine .npmrc
Beispieldatei, nachdem Sie die vorherigen Anweisungen befolgt haben, um den CodeArtifact Registrierungsendpunkt festzulegen, ein Authentifizierungstoken hinzuzufügen und zu konfigurierenalways-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
NPM-Befehle ausführen
Nachdem Sie den npm-Client konfiguriert haben, können Sie npm-Befehle ausführen. Unter der Annahme, dass ein Paket in Ihrem Repository oder einem seiner Upstream-Repositorys vorhanden ist, können Sie es mit installieren. npm install
Verwenden Sie zum Beispiel Folgendes, um das lodash
Paket zu installieren.
npm install lodash
Verwenden Sie den folgenden Befehl, um ein neues npm-Paket in einem CodeArtifact Repository zu veröffentlichen.
npm publish
Informationen zum Erstellen von npm-Paketen finden Sie unter Creating Node.js Modules
Überprüfung der NPM-Authentifizierung und -Autorisierung
Durch das Aufrufen des npm ping
Befehls können Sie Folgendes überprüfen:
-
Sie haben Ihre Anmeldeinformationen korrekt konfiguriert, sodass Sie sich bei einem Repository CodeArtifact authentifizieren können.
-
Die Autorisierungskonfiguration gewährt Ihnen die
ReadFromRepository
Erlaubnis.
Die Ausgabe eines erfolgreichen Aufrufs von npm ping
sieht wie folgt aus.
$ 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
Die -d
Option veranlasst npm, zusätzliche Debug-Informationen, einschließlich des Repositorys, zu drucken. URL Anhand dieser Informationen können Sie leicht bestätigen, dass npm so konfiguriert ist, dass es das von Ihnen erwartete Repository verwendet.
Zurück zur Standard-NPM-Registrierung
Durch die Konfiguration von npm mit CodeArtifact wird die npm-Registrierung auf das angegebene Repository festgelegt. CodeArtifact Sie können den folgenden Befehl ausführen, um die npm-Registrierung auf ihre Standardregistrierung zurückzusetzen, wenn Sie mit der Verbindung fertig sind. CodeArtifact
npm config set registry https://registry.npmjs.com/
Fehlerbehebung bei langsamen Installationen mit npm 8.x oder höher
In den NPM-Versionen 8.x und höher gibt es ein bekanntes Problem: Wenn eine Anfrage an ein Paket-Repository gestellt wird und das Repository den Client zu Amazon S3 umleitet, anstatt die Assets direkt zu streamen, kann der npm-Client pro Abhängigkeit mehrere Minuten lang hängen bleiben.
Da CodeArtifact Repositorys so konzipiert sind, dass sie die Anfrage immer an Amazon S3 weiterleiten, tritt dieses Problem manchmal auf, das aufgrund der langen NPM-Installationszeiten zu langen Build-Zeiten führt. Fälle dieses Verhaltens werden als Fortschrittsbalken angezeigt, der mehrere Minuten lang angezeigt wird.
Um dieses Problem zu vermeiden, verwenden Sie entweder die progress=false
Flags --no-progress
oder mit npm
CLI-Befehlen, wie im folgenden Beispiel gezeigt.
npm install lodash --no-progress