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 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.
Inhalt
Unterstützte Paketformate
AWS CodeArtifact unterstützt die Paketformate Cargo, Generic, Maven, npm NuGet, PyPI, Ruby und Swift.
Veröffentlichen von Paketen
Sie können neue Versionen jedes unterstützten Paketformats mit Tools wienpm
,, twine
Maven
Gradle
nuget
, und in einem CodeArtifact Repository veröffentlichendotnet
.
Veröffentlichungsberechtigungen
Ihr AWS Identity and Access Management (IAM) Benutzer oder Ihre Rolle müssen über Berechtigungen zum Veröffentlichen im Ziel-Repository verfügen. Die folgenden Berechtigungen sind erforderlich, um Pakete zu veröffentlichen:
-
Fracht:
codeartifact:PublishPackageVersion
-
generisch:
codeartifact:PublishPackageVersion
-
Maven:
codeartifact:PublishPackageVersion
undcodeartifact:PutPackageMetadata
-
npm:
codeartifact:PublishPackageVersion
-
NuGet:
codeartifact:PublishPackageVersion
undcodeartifact:ReadFromRepository
-
Python:
codeartifact:PublishPackageVersion
-
Rubin:
codeartifact:PublishPackageVersion
-
Schnell:
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 den 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-Publishing-Anfrage (HTTPPUT) 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 AWS CLI und ändernSDK. 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 von
npm 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 keinemaven-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 solchemvn
Clients zurückgegeben werdengradle
, sodass sie nicht als Teil eines Builds verwendet werden kann. Generische Pakete können bewusst imUnfinished
Status belassen werden, indem dasunfinished
Flag beim Aufrufen von angegeben wird. PublishPackageVersionAPI Ein generisches Paket kann in denPublished
Status geändert werden, indem dasunfinished
Flag weggelassen wird oder indem das aufgerufen wird. UpdatePackageVersionsStatusAPI -
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 einernpm 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 den Status der Paketversion jedoch wieder auf Nicht gelistet oder Veröffentlicht mit dem ändern. UpdatePackageVersionsStatus API
-
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 dem DeletePackageVersionsAPIgelö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.