Überblick über die Pakete - 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.

Überblick über die Pakete

Ein Paket ist ein Softwarepaket und die Metadaten, die zur Auflösung von Abhängigkeiten und zur Installation der Software erforderlich sind. In CodeArtifact besteht ein Paket aus einem Paketnamen, einem optionalen Namespace wie @types in@types/node, einer Reihe von Paketversionen und Metadaten auf Paketebene wie npm-Tags.

Unterstützte Paketformate

AWS CodeArtifact unterstützt npm, PyPI, Maven, Swift NuGet, Ruby und generischePaketformate.

Veröffentlichen von Paketen

Sie können neue Versionen jedes unterstützten Paketformats in einem CodeArtifact Repository veröffentlichen, indem Sie Tools wienpm,twine,Maven, Gradlenuget, und verwendendotnet.

Berechtigungen für das Veröffentlichen

Ihr AWS Identity and Access Management (IAM-) Benutzer oder Ihre Rolle muss über Berechtigungen zum Veröffentlichen im Ziel-Repository verfügen. Die folgenden Berechtigungen sind erforderlich, um Pakete zu veröffentlichen:

  • Maven: codeartifact:PublishPackageVersion und codeartifact:PutPackageMetadata

  • npm: codeartifact:PublishPackageVersion

  • NuGet: codeartifact:PublishPackageVersion und codeartifact:ReadFromRepository

  • Python: codeartifact:PublishPackageVersion

  • generisch: codeartifact:PublishPackageVersion

  • Schnell: codeartifact:PublishPackageVersion

  • Rubin: codeartifact:PublishPackageVersion

In der obigen Liste von Berechtigungen muss Ihre IAM-Richtlinie die package Ressource für die codeartifact:PutPackageMetadata Berechtigungen codeartifact:PublishPackageVersion und angeben. Sie muss auch die repository Ressource für die codeartifact:ReadFromRepository Berechtigung angeben.

Weitere Hinweise zu Berechtigungen in CodeArtifact finden Sie unterAWS CodeArtifact Referenz zu Berechtigungen.

Paket-Assets überschreiben

Sie können ein bereits vorhandenes Paket-Asset mit einem anderen Inhalt nicht erneut veröffentlichen. Nehmen wir beispielsweise an, Sie haben bereits ein Maven-Paket mit einem JAR-Asset veröffentlicht. mypackage-1.0.jar Sie können dieses Asset nur dann erneut veröffentlichen, wenn die Prüfsumme der alten und neuen Assets identisch ist. Um dasselbe Asset mit neuem Inhalt erneut zu veröffentlichen, löschen Sie zuerst die Paketversion, indem Sie den delete-package-versions Befehl verwenden. Der Versuch, denselben Asset-Namen mit anderem Inhalt erneut zu veröffentlichen, führt zu einem HTTP-409-Konfliktfehler.

Für Paketformate, die mehrere Assets unterstützen (Generic, PyPI und Maven), können Sie einer vorhandenen Paketversion neue Assets mit unterschiedlichen Namen hinzufügen, vorausgesetzt, Sie verfügen über die erforderlichen Berechtigungen. Bei generischen Paketen können Sie neue Assets hinzufügen, solange sich die Paketversion im Status befindet. Unfinished Da npm nur ein einzelnes Asset pro Paketversion unterstützt, müssen Sie, um eine veröffentlichte Paketversion auf irgendeine Weise zu ändern, diese zuerst mit dem folgenden Befehl delete-package-versions löschen.

Wenn Sie versuchen, ein bereits vorhandenes Objekt erneut zu veröffentlichen (z. B.mypackage-1.0.jar) und der Inhalt des veröffentlichten Elements und des neuen Elements identisch sind, ist der Vorgang erfolgreich, da der Vorgang idempotent ist.

Private Pakete und öffentliche Repositorys

CodeArtifact veröffentlicht keine Pakete, die in Repositorys gespeichert sind, in öffentlichen CodeArtifact Repositorys wie npmjs.com oder Maven Central. CodeArtifact importiert Pakete aus öffentlichen Repositorys in ein CodeArtifact Repository, verschiebt Pakete jedoch nie in die andere Richtung. Pakete, die Sie in CodeArtifact Repositorys veröffentlichen, bleiben privat und stehen nur den AWS Konten, Rollen und Benutzern zur Verfügung, denen Sie Zugriff gewährt haben.

Veröffentlichen gepatchter Paketversionen

Manchmal möchten Sie vielleicht eine modifizierte Paketversion veröffentlichen, möglicherweise eine, die in einem öffentlichen Repository verfügbar ist. Möglicherweise haben Sie einen Fehler in einer kritischen Anwendungsabhängigkeit namens gefundenmydep 1.1, und Sie müssen ihn beheben, bevor der Paketanbieter die Änderung überprüfen und akzeptieren kann. Wie bereits beschrieben, CodeArtifact verhindert es, dass Sie mydep 1.1 in Ihrem CodeArtifact Repository veröffentlichen, wenn das öffentliche Repository von Ihrem CodeArtifact Repository aus über Upstream-Repositorys und eine externe Verbindung erreichbar ist.

Um dieses Problem zu umgehen, veröffentlichen Sie die Paketversion in einem anderen CodeArtifact Repository, in dem das öffentliche Repository nicht erreichbar ist. Verwenden Sie dann die copy-package-versions API, um die gepatchte Version von in das CodeArtifact Repository mydep 1.1 zu kopieren, von wo aus Sie sie verwenden werden.

Beschränkungen der Asset-Größe für die Veröffentlichung

Die maximale Größe eines Paket-Assets, das veröffentlicht werden kann, wird durch das maximale Kontingent für die Asset-Dateigröße begrenzt, das unter angezeigt wirdKontingente in AWS CodeArtifact. Sie können beispielsweise kein Maven-JAR- oder Python-Rad veröffentlichen, das das maximale Kontingent für die aktuelle Asset-Dateigröße überschreitet. Wenn Sie größere Assets speichern müssen CodeArtifact, fordern Sie eine Erhöhung des Kontingents an.

Zusätzlich zum maximalen Kontingent für die Größe der Asset-Datei beträgt die maximale Größe einer Veröffentlichungsanforderung für NPM-Pakete 2 GB. Dieses Limit ist unabhängig vom maximalen Kontingent für die Größe der Asset-Datei und kann nicht durch eine Erhöhung des Kontingents erhöht werden. In einer NPM-Veröffentlichungsanforderung (HTTP PUT) werden Paketmetadaten und der Inhalt des NPM-Paket-Tar-Archivs gebündelt. Aus diesem Grund variiert die tatsächliche maximale Größe eines npm-Pakets, das veröffentlicht werden kann, und hängt von der Größe der enthaltenen Metadaten ab.

Anmerkung

Veröffentlichte npm-Pakete sind auf eine maximale Größe von weniger als 2 GB beschränkt.

Latenz bei der Veröffentlichung

In einem CodeArtifact Repository veröffentlichte Paketversionen stehen oft in weniger als einer Sekunde zum Herunterladen zur Verfügung. Wenn Sie beispielsweise eine npm-Paketversion in CodeArtifact with veröffentlichennpm publish, sollte diese Version in weniger als einer Sekunde für einen npm install Befehl verfügbar sein. Die Veröffentlichung kann jedoch inkonsistent sein und manchmal länger dauern. Wenn Sie unmittelbar nach der Veröffentlichung eine Paketversion verwenden müssen, versuchen Sie es erneut, um sicherzustellen, dass der Download zuverlässig ist. Wiederholen Sie den Download beispielsweise nach dem Veröffentlichen der Paketversion bis zu dreimal, wenn die gerade veröffentlichte Paketversion beim ersten Download-Versuch zunächst nicht verfügbar ist.

Anmerkung

Das Importieren einer Paketversion aus einem öffentlichen Repository dauert in der Regel länger als das Veröffentlichen. Weitere Informationen finden Sie unter Latenz.

Status der Paketversion

Jede Paketversion in CodeArtifact hat einen Status, der den aktuellen Status und die Verfügbarkeit der Paketversion beschreibt. Sie können den Status der Paketversion im SDK AWS CLI und SDK ändern. Weitere Informationen finden Sie unter Aktualisiere den Status der Paketversion.

Die folgenden Werte sind für den Paketversionsstatus möglich:

  • Veröffentlicht — Die Paketversion wurde erfolgreich veröffentlicht und kann mit einem Paketmanager angefordert werden. Die Paketversion wird in die Paketversionslisten aufgenommen, die an die Paketmanager zurückgegeben werden, z. B. in der Ausgabe vonnpm view <package-name> versions. Alle Ressourcen der Paketversion sind im Repository verfügbar.

  • Unfertig — Der Client hat ein oder mehrere Elemente für eine Paketversion hochgeladen, sie aber noch nicht fertiggestellt, indem er sie in den Published Status verschoben hat. Derzeit können nur generische Versionen und Maven-Paketversionen den Status haben. Unfinished Bei Maven-Paketen kann dies der Fall sein, wenn der Client ein oder mehrere Assets für eine Paketversion hochlädt, aber keine maven-metadata.xml Datei für das Paket veröffentlicht, die diese Version enthält. Wenn eine Maven-Paketversion unfertig ist, wird sie nicht in Versionslisten aufgenommen, die an solche mvn Clients zurückgegeben werdengradle, sodass sie nicht als Teil eines Builds verwendet werden kann. Generische Pakete können bewusst im Unfinished Status belassen werden, indem das unfinished Flag beim Aufruf der PublishPackageVersionAPI angegeben wird. Ein generisches Paket kann in den Published Status geändert werden, indem das unfinished Flag weggelassen oder die API aufgerufen wird. UpdatePackageVersionsStatus

  • Nicht gelistet — Die Inhalte der Paketversion stehen im Repository zum Herunterladen zur Verfügung, aber die Paketversion ist nicht in der Liste der Versionen enthalten, die an die Paketmanager zurückgegeben werden. Bei einem npm-Paket enthält die Ausgabe von beispielsweise nicht npm view <package-name> versions die Paketversion. Dies bedeutet, dass die Logik zur Abhängigkeitsauflösung von npm die Paketversion nicht auswählt, da die Version nicht in der Liste der verfügbaren Versionen erscheint. Wenn jedoch bereits in einer npm package-lock.json Datei auf die Paketversion „Nicht gelistet“ verwiesen wird, kann sie dennoch heruntergeladen und installiert werden, z. B. während der Ausführung. npm ci

  • Archiviert — Die Ressourcen der Paketversion können nicht mehr heruntergeladen werden. Die Paketversion wird nicht in die Liste der Versionen aufgenommen, die an die Paketmanager zurückgegeben werden. Da die Ressourcen nicht verfügbar sind, wird die Nutzung der Paketversion durch Clients blockiert. Wenn der Build Ihrer Anwendung von einer Version abhängt, die auf Archiviert aktualisiert wurde, schlägt der Build fehl, vorausgesetzt, die Paketversion wurde nicht lokal zwischengespeichert. Sie können einen Paketmanager oder ein Build-Tool nicht verwenden, um eine archivierte Paketversion erneut zu veröffentlichen, da sie immer noch im Repository vorhanden ist. Sie können jedoch den Status der Paketversion mit der API wieder auf Nicht gelistet oder Veröffentlicht ändern. UpdatePackageVersionsStatus

  • Verworfen — Die Paketversion erscheint nicht in den Auflistungen und die Inhalte können nicht aus dem Repository heruntergeladen werden. Der Hauptunterschied zwischen „Verworfen“ und „Archiviert“ besteht darin, dass bei einem Status von „Verworfen“ die Inhalte der Paketversion dauerhaft von gelöscht werden CodeArtifact. Aus diesem Grund können Sie eine Paketversion nicht von „Verworfen“ in „Archiviert“, „Nicht gelistet“ oder „Veröffentlicht“ verschieben. Die Paketversion kann nicht mehr verwendet werden, da die Assets gelöscht wurden. Nachdem eine Paketversion als entsorgt markiert wurde, wird Ihnen die Speicherung der Paketressourcen nicht mehr in Rechnung gestellt.

Paketversionen aller Status werden standardmäßig zurückgegeben, wenn sie list-package-versions ohne --status Parameter aufgerufen werden.

Abgesehen von den zuvor aufgeführten Status kann eine Paketversion auch mit der DeletePackageVersionsAPI gelöscht werden. Nach dem Löschen befindet sich eine Paketversion nicht mehr im Repository und Sie können diese Paketversion mit einem Paketmanager oder einem Build-Tool nach Belieben erneut veröffentlichen. Nachdem eine Paketversion gelöscht wurde, wird Ihnen die Speicherung der Inhalte dieser Paketversion nicht mehr in Rechnung gestellt.

Normalisierung von Paketnamen, Paketversion und Assetnamen

CodeArtifact normalisiert Paketnamen, Paketversionen und Assetnamen, bevor sie gespeichert werden, was bedeutet, dass sich die Namen oder Versionen in denen CodeArtifact möglicherweise von dem Namen oder der Version unterscheiden, die bei der Veröffentlichung des Pakets angegeben wurden. Weitere Informationen darüber, wie Namen und Versionen CodeArtifact für jeden Pakettyp normalisiert werden, finden Sie in der folgenden Dokumentation:

CodeArtifact führt keine Normalisierung für andere Paketformate durch.