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 zum Auflösen 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, PyPI NuGet, Ruby und Swift. CodeArtifact Mit Ruby verwenden Verwendung CodeArtifact mit Swift
Veröffentlichung von Paketen
Sie können neue Versionen jedes unterstützten Paketformats mit Tools wienpm,, twine Maven Gradlenuget, und in einem CodeArtifact Repository veröffentlichendotnet.
Veröffentlichungsberechtigungen
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:
-
Fracht:
codeartifact:PublishPackageVersion -
generisch:
codeartifact:PublishPackageVersion -
Maven:
codeartifact:PublishPackageVersionundcodeartifact:PutPackageMetadata -
npm:
codeartifact:PublishPackageVersion -
NuGet:
codeartifact:PublishPackageVersionundcodeartifact:ReadFromRepository -
Python:
codeartifact:PublishPackageVersion -
Rubin:
codeartifact:PublishPackageVersion -
Schnell:
codeartifact:PublishPackageVersion
In der obigen Liste der 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 anderem Inhalt nicht erneut veröffentlichen. Nehmen wir zum Beispiel an, Sie haben bereits ein Maven-Paket mit einem JAR-Asset veröffentlicht. mypackage-1.0.jar Sie können dieses Asset nur erneut veröffentlichen, wenn die Prüfsumme des alten und des neuen Assets identisch ist. Um dasselbe Asset mit neuem Inhalt erneut zu veröffentlichen, löschen Sie zuerst die Paketversion mit dem delete-package-versions Befehl. Der Versuch, denselben Asset-Namen mit anderem Inhalt erneut zu veröffentlichen, führt zu einem HTTP 409-Konfliktfehler.
Bei Paketformaten, die mehrere Assets unterstützen (generisch, 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 einziges Asset pro Paketversion unterstützt, müssen Sie eine veröffentlichte Paketversion zunächst löschen, um sie in irgendeiner Weise zu ändern. delete-package-versions
Wenn Sie versuchen, ein bereits vorhandenes Asset erneut zu veröffentlichen (z. B.mypackage-1.0.jar), und der Inhalt des veröffentlichten Assets und des neuen Assets 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 Projektarchiv, verschiebt aber niemals Pakete 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öffentlichung gepatchter Paketversionen
Manchmal möchten Sie vielleicht eine modifizierte Paketversion veröffentlichen, möglicherweise eine, die in einem öffentlichen Repository verfügbar ist. Beispielsweise haben Sie möglicherweise 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 zuvor beschrieben, CodeArtifact wird verhindert, dass du mydep 1.1 in deinem CodeArtifact Projektarchiv veröffentlichst, wenn das öffentliche Projektarchiv von deinem CodeArtifact Projektarchiv aus über Upstream-Repositorys und eine externe Verbindung erreichbar ist.
Um dies zu umgehen, veröffentlichst du 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 dem 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, ist durch das unter angegebene Kontingent für die maximale Größe der Asset-Datei begrenztKontingente in AWS CodeArtifact. Sie können beispielsweise kein Maven-JAR- oder Python-Rad veröffentlichen, das größer ist als Ihr aktuelles maximales Kontingent für die Größe der Asset-Datei. Wenn Sie größere Assets darin speichern müssen CodeArtifact, fordern Sie eine Kontingenterhöhung 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 Kontingenterhöhung erhöht werden. In einer NPM-Publishing-Anfrage (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 begrenzt.
Latenz bei der Veröffentlichung
In einem CodeArtifact Repository veröffentlichte Paketversionen stehen oft in weniger als einer Sekunde zum Download 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 erneut, sicherzustellen, dass der Download zuverlässig ist. Beispielsweise können Sie den Download nach der Veröffentlichung der Paketversion bis zu dreimal wiederholen, falls die gerade veröffentlichte Paketversion beim ersten Downloadversuch zunächst nicht verfügbar war.
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 bei externen Verbindungen.
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 SDK ändern. Weitere Informationen finden Sie unter Aktualisiere den Status der Paketversion.
Die folgenden Werte sind für den Status der Paketversion möglich:
-
Veröffentlicht — Die Paketversion wurde erfolgreich veröffentlicht und kann mit einem Paketmanager angefordert werden. Die Paketversion wird in die Listen der Paketversionen aufgenommen, die an die Paketmanager zurückgegeben werden, z. B. in der Ausgabe von
npm view <package-name> versions. Alle Assets der Paketversion sind im Repository verfügbar. -
Unfertig — Der Client hat ein oder mehrere Assets für eine Paketversion hochgeladen, diese aber noch nicht abgeschlossen, indem er sie in den
PublishedStatus versetzt hat. Derzeit können nur generische und Maven-Paketversionen den Status haben.UnfinishedBei Maven-Paketen kann dies passieren, wenn der Client ein oder mehrere Assets für eine Paketversion hochlädt, aber keinemaven-metadata.xmlDatei für das Paket veröffentlicht, das diese Version enthält. Wenn eine Maven-Paketversion unvollendet ist, wird sie nicht in die Versionslisten aufgenommen, die an die Clients zurückgegeben werden, z. B.mvnodergradle, sodass sie nicht als Teil eines Builds verwendet werden kann. Generische Pakete können bewusst imUnfinishedStatus belassen werden, indem beim Aufruf der API dasunfinishedFlag angegeben wird PublishPackageVersion. Ein generisches Paket kann in denPublishedStatus versetzt werden, indem dasunfinishedFlag weggelassen wird oder indem die API aufgerufen wird. UpdatePackageVersionsStatus -
Nicht aufgeführt — Die Ressourcen der Paketversion können aus dem Repository heruntergeladen werden, 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> versionsdie Paketversion. Dies bedeutet, dass die Logik zur Auflösung von Abhängigkeiten 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.jsonDatei auf die nicht aufgeführte Paketversion verwiesen wird, kann sie weiterhin heruntergeladen und installiert werden, z. B. während der Ausführung.npm ci -
Archiviert — Die Assets 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 Ihr Anwendungs-Build von einer Version abhängt, die auf Archived aktualisiert wurde, wird der Build nicht funktionieren, 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 mit der API wieder auf Nicht gelistet oder Veröffentlicht ändern. UpdatePackageVersionsStatus
-
Gelöscht — Die Paketversion erscheint nicht in den Auflistungen und die Assets können nicht aus dem Repository heruntergeladen werden. Der Hauptunterschied zwischen Entsorgt und Archiviert besteht darin, dass die Assets der Paketversion mit dem Status Verkauft von dauerhaft gelöscht werden CodeArtifact. Aus diesem Grund können Sie eine Paketversion nicht von „Entsorgt“ 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 list-package-versions ohne Parameter aufgerufen werden. --status
Abgesehen von den zuvor aufgeführten Zuständen kann eine Paketversion auch mit der API gelöscht werden. DeletePackageVersions 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 Assets dieser Paketversion nicht mehr in Rechnung gestellt.
Normalisierung von Paketnamen, Paketversion und Assetnamen
CodeArtifact normalisiert Paketnamen, Paketversionen und Asset-Namen, bevor sie gespeichert werden. Das bedeutet, dass sich die Namen oder Versionen in 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.