Pakete von externen Verbindungen anfordern - 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.

Pakete von externen Verbindungen anfordern

In den folgenden Abschnitten wird beschrieben, wie ein Paket von einer externen Verbindung angefordert wird und wie CodeArtifact das Verhalten beim Anfordern eines Pakets zu erwarten ist.

Pakete von einer externen Verbindung abrufen

Um Pakete von einer externen Verbindung abzurufen, nachdem Sie sie Ihrem CodeArtifact Repository hinzugefügt haben, wie unter beschriebenEin CodeArtifact Repository mit einem öffentlichen Repository Connect, konfigurieren Sie Ihren Paketmanager so, dass er Ihr Repository verwendet, und installieren Sie die Pakete.

Anmerkung

Die folgenden Anweisungen verwendennpm, um Konfigurations- und Verwendungshinweise für andere Pakettypen anzuzeigenVerwendung CodeArtifact mit Maven, siehebenutzenCodeArtifactmitNuGet, oderVerwendenCodeArtifactmit Python.

Um Pakete von einer externen Verbindung abzurufen
  1. Konfiguriere und authentifiziere deinen Paketmanager mit deinem CodeArtifact Repository. Verwenden Sie für npm den folgenden aws codeartifact login-Befehl:

    aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo
  2. Fordern Sie das Paket im öffentlichen Repository an. Verwenden Sie fürnpm den folgendennpm install Befehl und ersetzen Sie lodash durch das Paket, das Sie installieren möchten.

    npm install lodash
  3. Nachdem das Paket in Ihr CodeArtifact Repository kopiert wurde, können Sie es mit denlist-package-versions Befehlenlist-packages und anzeigen.

    aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo

    Beispielausgabe:

    { "packages": [ { "format": "npm", "package": "lodash" } ] }

    Derlist-package-versions Befehl listet alle Versionen des Pakets auf, die in Ihr CodeArtifact Repository kopiert wurden.

    aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package lodash

    Beispielausgabe:

    { "defaultDisplayVersion: "1.2.5" "format": "npm", "package": "lodash", "namespace": null, "versions": [ { "version": "1.2.5", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ] }

Latenz

Beim Abrufen eines Pakets aus einem öffentlichen Repository über eine externe Verbindung kommt es zu einer Verzögerung zwischen dem Abrufen des Pakets aus dem öffentlichen Repository und dem Speichern in Ihrem CodeArtifact Repository. Nehmen wir zum Beispiel an, Sie haben Version 1.2.5 des npm-Pakets „lodash“ installiert, wie unter beschriebenPakete von einer externen Verbindung abrufen. Obwohl der Befehlnpm install lodash lodash erfolgreich abgeschlossen wurde, erscheint die Paketversion möglicherweise noch nicht in Ihrem CodeArtifact Repository. Normalerweise dauert es etwa 3 Minuten, bis die Paketversion in Ihrem Repository erscheint, obwohl es gelegentlich auch länger dauern kann.

Aufgrund dieser Latenz haben Sie möglicherweise erfolgreich eine Paketversion abgerufen, können die Version jedoch möglicherweise noch nicht in Ihrem Repository in der CodeArtifact Konsole oder beim Aufrufen der ListPackageVersions API-Operationen ListPackages und sehen. Sobald CodeArtifact die Paketversion asynchron beibehalten wurde, wird sie in der Konsole und über API-Anfragen sichtbar sein.

CodeArtifact Verhalten, wenn ein externes Repository nicht verfügbar ist

Gelegentlich kommt es in einem externen Repository zu einem Ausfall, was bedeutet, dass CodeArtifact keine Pakete daraus abgerufen werden können oder das Abrufen von Paketen viel langsamer als normal ist. In diesem Fall stehen Paketversionen, die bereits aus einem externen Repository (z. B. npmjs.com) abgerufen und in einem CodeArtifact Repository gespeichert wurden, weiterhin zum Herunterladen zur Verfügung CodeArtifact. Pakete, in denen noch nicht gespeichert sind, sind jedoch CodeArtifact möglicherweise nicht verfügbar, selbst wenn eine externe Verbindung zu diesem Repository konfiguriert wurde. Beispielsweise könnte Ihr CodeArtifact Repository die npm-Paketversion enthalten,lodash 4.17.19 da Sie diese bisher in Ihrer Anwendung verwendet haben. Wenn Sie ein Upgrade auf durchführen möchten4.17.20, CodeArtifact wird diese neue Version normalerweise von npmjs.com abgerufen und in Ihrem CodeArtifact Repository gespeichert. Wenn es bei npmjs.com jedoch zu einem Ausfall kommt, ist diese neue Version nicht verfügbar. Die einzige Problemumgehung besteht darin, es später erneut zu versuchen, sobald npmjs.com wiederhergestellt ist.

Ausfälle externer Repositorys können sich auch auf die Veröffentlichung neuer Paketversionen auswirken CodeArtifact. Erlaubt in einem Repository mit konfigurierter externer CodeArtifact Verbindung nicht die Veröffentlichung einer Paketversion, die bereits im externen Repository vorhanden ist. Weitere Informationen finden Sie unter Überblick über die Pakete. In seltenen Fällen kann ein Ausfall eines externen Repositorys jedoch bedeuten, dass CodeArtifact es keine up-to-date Informationen darüber hat, welche Pakete und Paketversionen in einem externen Repository vorhanden sind. In diesem Fall CodeArtifact könnte es die Veröffentlichung einer Paketversion ermöglichen, die es normalerweise ablehnen würde.

Verfügbarkeit neuer Paketversionen

Damit eine Paketversion in einem öffentlichen Repository wie npmjs.com über ein CodeArtifact Repository verfügbar ist, muss sie zuerst zu einem regionalen Paket-Metadaten-Cache hinzugefügt werden. Dieser Cache wird CodeArtifact in jederAWS Region verwaltet und enthält Metadaten, die den Inhalt der unterstützten öffentlichen Repositorys beschreiben. Aufgrund dieses Caches gibt es eine Verzögerung zwischen dem Zeitpunkt, an dem eine neue Paketversion in einem öffentlichen Repository veröffentlicht wird, und dem Zeitpunkt, an dem sie verfügbar ist CodeArtifact. Diese Verzögerung variiert je nach Pakettyp.

Bei npm-, Python- und Nuget-Paketen kann es zu einer Verzögerung von bis zu 30 Minuten kommen, ab dem Zeitpunkt, an dem eine neue Paketversion auf npmjs.com, pypi.org oder nuget.org veröffentlicht wird und wenn sie für die Installation in einem CodeArtifact Repository verfügbar ist. CodeArtifact synchronisiert automatisch Metadaten aus diesen beiden Repositorys, um sicherzustellen, dass der Cache auf dem neuesten Stand ist.

Bei Maven-Paketen kann es zu einer Verzögerung von bis zu 3 Stunden kommen, ab dem Zeitpunkt, an dem eine neue Paketversion in einem öffentlichen Repository veröffentlicht wird, und dem Zeitpunkt, an dem sie in einem CodeArtifact Repository zur Installation verfügbar ist. CodeArtifact sucht höchstens alle 3 Stunden nach neuen Versionen eines Pakets. Die erste Anfrage nach einem bestimmten Paketnamen nach Ablauf der 3-stündigen Cache-Lebensdauer führt dazu, dass alle neuen Versionen dieses Pakets in den regionalen Cache importiert werden.

Für häufig verwendete Maven-Pakete werden neue Versionen in der Regel alle 3 Stunden importiert, da aufgrund der hohen Anzahl von Anfragen der Cache häufig aktualisiert wird, sobald die Cache-Lebensdauer abgelaufen ist. Bei selten verwendeten Paketen enthält der Cache erst die neueste Version, wenn eine Version des Pakets aus einem CodeArtifact Repository angefordert wird. Bei der ersten Anfrage sind nur zuvor importierte Versionen von verfügbar CodeArtifact, aber diese Anfrage führt dazu, dass der Cache aktualisiert wird. Bei nachfolgenden Anfragen werden die neuen Versionen des Pakets dem Cache hinzugefügt und stehen zum Download zur Verfügung.

Paketversionen mit mehr als einem Asset importieren

Sowohl Maven- als auch Python-Pakete können mehrere Assets pro Paketversion enthalten. Dies macht das Importieren von Paketen dieser Formate komplexer als das von npm und NuGet Paketen, die nur ein Asset pro Paketversion haben. Eine Beschreibung, welche Assets für diese Pakettypen importiert werden und wie neu hinzugefügte Assets verfügbar gemacht werden, finden Sie unterPython-Pakete von Upstreams und externen Verbindungen anfordern undMaven-Pakete von Upstreams und externen Verbindungen anfordern.