Konfigurieren und verwenden Sie npm mit CodeArtifact - CodeArtifact

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 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.

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 --domain my_domain --domain-owner 111122223333 --repository my_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
  1. 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-owner 111122223333 --query authorizationToken --output text`
  2. 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 Sie my_domain durch Ihren CodeArtifact Domainnamen.

    • Ersetzen Sie 111122223333 durch die AWS Konto-ID des Domaininhabers. Wenn Sie auf ein Repository in einer Domain zugreifen, die Sie besitzen, müssen Sie nichts angeben. --domain-owner Weitere Informationen finden Sie unter Kontenübergreifende Domänen.

    • Ersetzen Sie my_repo durch Ihren CodeArtifact Repository-Namen.

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

    Die folgende URL ist ein Beispiel für einen Repository-Endpunkt.

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

    Die Registrierungs-URL muss mit einem Schrägstrich (/) enden. Andernfalls können Sie keine Verbindung zum Repository herstellen.

  3. Verwenden Sie den npm config set Befehl, um die Registrierung auf Ihr CodeArtifact Repository festzulegen. Ersetzen Sie die URL durch die Repository-Endpunkt-URL aus dem vorherigen Schritt.

    npm config set registry=https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/
  4. Verwenden 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_TOKEN

    Für npm 6 oder niedriger: Damit npm das Authentifizierungstoken immer weitergibt CodeArtifact, auch bei GET Anfragen, setzen Sie die always-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 auf der NPM-Dokumentationswebsite. Eine Liste der npm-Befehle, die von unterstützt werden CodeArtifact, finden Sie unter npm-Befehlsunterstützung.

Ü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 auszudrucken, einschließlich der Repository-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