View a markdown version of this page

Panoramica dei pacchetti - CodeArtifact

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Panoramica dei pacchetti

Un pacchetto è un pacchetto di software e metadati necessari per risolvere le dipendenze e installare il software. In CodeArtifact, un pacchetto è costituito da un nome di pacchetto, uno spazio dei nomi opzionale come @types in@types/node, un set di versioni del pacchetto e metadati a livello di pacchetto come i tag npm.

Formati di pacchetto supportati

AWS CodeArtifact supporta i formati di pacchetto Cargo, generic, Maven, npm, PyPI, Ruby, Swift. NuGet Usare CodeArtifact con Python Usare CodeArtifact con Ruby Utilizzo CodeArtifact con Swift

Pubblicazione di pacchetti

È possibile pubblicare nuove versioni di qualsiasi formato di pacchetto supportato in un CodeArtifact repository utilizzando strumenti come npmtwine,Maven, Gradlenuget, edotnet.

Autorizzazioni di pubblicazione

L'utente o il ruolo AWS Identity and Access Management (IAM) deve disporre delle autorizzazioni per pubblicare nel repository di destinazione. Per pubblicare i pacchetti sono necessarie le seguenti autorizzazioni:

  • Carico: codeartifact:PublishPackageVersion

  • generico: codeartifact:PublishPackageVersion

  • Maven: e codeartifact:PublishPackageVersion codeartifact:PutPackageMetadata

  • npm: codeartifact:PublishPackageVersion

  • NuGet: codeartifact:PublishPackageVersion e codeartifact:ReadFromRepository

  • Python: codeartifact:PublishPackageVersion

  • Ruby: codeartifact:PublishPackageVersion

  • Rapido: codeartifact:PublishPackageVersion

Nel precedente elenco di autorizzazioni, la tua policy IAM deve specificare la package risorsa per le codeartifact:PublishPackageVersion autorizzazioni e. codeartifact:PutPackageMetadata Deve inoltre specificare la repository risorsa per l'autorizzazione. codeartifact:ReadFromRepository

Per ulteriori informazioni sulle autorizzazioni in CodeArtifact, vedereAWS CodeArtifact riferimento alle autorizzazioni.

Sovrascrivere le risorse dei

Non è possibile ripubblicare una risorsa del pacchetto già esistente con contenuti diversi. Ad esempio, supponiamo di aver già pubblicato un pacchetto Maven con una risorsa JAR. mypackage-1.0.jar Puoi pubblicare nuovamente quella risorsa solo se il checksum delle risorse vecchie e nuove è identico. Per ripubblicare la stessa risorsa con nuovi contenuti, eliminate prima la versione del pacchetto utilizzando il delete-package-versions comando. Il tentativo di ripubblicare lo stesso nome di risorsa con contenuti diversi genererà un errore di conflitto HTTP 409.

Per i formati di pacchetto che supportano più risorse (generico, PyPI e Maven), puoi aggiungere nuove risorse con nomi diversi a una versione del pacchetto esistente, supponendo che tu disponga delle autorizzazioni necessarie. Per i pacchetti generici, puoi aggiungere nuove risorse purché la versione del pacchetto sia nello stato. Unfinished Poiché npm supporta solo una singola risorsa per versione del pacchetto, per modificare in qualsiasi modo una versione del pacchetto pubblicata, devi prima eliminarla utilizzandodelete-package-versions.

Se provi a ripubblicare una risorsa già esistente (ad esempiomypackage-1.0.jar) e il contenuto della risorsa pubblicata e della nuova risorsa sono identici, l'operazione avrà esito positivo perché l'operazione è idempotente.

Pacchetti privati e archivi pubblici

CodeArtifact non pubblica i pacchetti archiviati nei CodeArtifact repository in repository pubblici come npmjs.com o Maven Central. CodeArtifact importa pacchetti da repository pubblici a un CodeArtifact repository, ma non sposta mai i pacchetti nella direzione opposta. I pacchetti pubblicati CodeArtifact nei repository rimangono privati e sono disponibili solo per AWS gli account, i ruoli e gli utenti a cui è stato concesso l'accesso.

Pubblicazione delle versioni dei pacchetti con patch

A volte potresti voler pubblicare una versione modificata del pacchetto, potenzialmente disponibile in un archivio pubblico. Ad esempio, potresti aver trovato un bug in una dipendenza critica di un'applicazione chiamata mydep 1.1 e devi correggerlo prima che il fornitore del pacchetto possa esaminare e accettare la modifica. Come descritto in precedenza, ti CodeArtifact impedisce di pubblicare mydep 1.1 nel tuo CodeArtifact repository se il repository pubblico è raggiungibile dal tuo repository tramite CodeArtifact repository upstream e una connessione esterna.

Per ovviare a questo problema, pubblica la versione del pacchetto in un altro CodeArtifact repository in cui il repository pubblico non è raggiungibile. Quindi usa l'copy-package-versionsAPI per copiare la versione patchata nel CodeArtifact repository mydep 1.1 da cui la consumerai.

Limiti di dimensione delle risorse per la pubblicazione

La dimensione massima di una risorsa del pacchetto che può essere pubblicata è limitata dalla quota massima di dimensione del file dell'Asset indicata inQuote in AWS CodeArtifact. Ad esempio, non puoi pubblicare una ruota Maven JAR o Python più grande della quota massima della dimensione massima del file di asset corrente. Se hai bisogno di archiviare risorse più grandi in CodeArtifact, richiedi un aumento della quota.

Oltre alla quota massima della dimensione del file di asset, la dimensione massima di una richiesta di pubblicazione per i pacchetti npm è di 2 GB. Questo limite è indipendente dalla quota massima della dimensione del file di asset e non può essere aumentato con un aumento della quota. In una richiesta di pubblicazione di npm (HTTP PUT), i metadati del pacchetto e il contenuto dell'archivio tar del pacchetto npm sono raggruppati insieme. Per questo motivo, la dimensione massima effettiva di un pacchetto npm che può essere pubblicato varia e dipende dalla dimensione dei metadati inclusi.

Nota

I pacchetti npm pubblicati sono limitati a una dimensione massima inferiore a 2 GB.

Latenza di pubblicazione

Le versioni dei pacchetti pubblicate in un CodeArtifact repository sono spesso disponibili per il download in meno di un secondo. Ad esempio, se pubblichi una versione del pacchetto npm su CodeArtifact withnpm publish, tale versione dovrebbe essere disponibile per un npm install comando in meno di un secondo. Tuttavia, la pubblicazione può essere incoerente e talvolta può richiedere più tempo. Se devi usare una versione del pacchetto subito dopo la pubblicazione, usa i tentativi per assicurarti che il download sia affidabile. Ad esempio, dopo aver pubblicato la versione del pacchetto, ripeti il download fino a tre volte se la versione del pacchetto appena pubblicata non è inizialmente disponibile al primo tentativo di download.

Nota

L'importazione di una versione del pacchetto da un archivio pubblico richiede in genere più tempo della pubblicazione. Per ulteriori informazioni, consulta Latenza della connessione esterna.

Stato della versione del pacchetto

Ogni versione del pacchetto in CodeArtifact ha uno stato che descrive lo stato corrente e la disponibilità della versione del pacchetto. È possibile modificare lo stato della versione del pacchetto in AWS CLI and SDK. Per ulteriori informazioni, consulta Aggiorna lo stato della versione del pacchetto.

Di seguito sono riportati i valori possibili per lo stato della versione del pacchetto:

  • Pubblicata: la versione del pacchetto è stata pubblicata correttamente e può essere richiesta utilizzando un gestore di pacchetti. La versione del pacchetto verrà inclusa negli elenchi delle versioni dei pacchetti restituiti ai gestori di pacchetti, ad esempio nell'output dinpm view <package-name> versions. Tutte le risorse della versione del pacchetto sono disponibili nel repository.

  • Incompiuta: il client ha caricato una o più risorse per una versione del pacchetto, ma non l'ha completata spostandola nello stato. Published Attualmente solo le versioni generiche e dei pacchetti Maven possono avere lo stato di. Unfinished Per i pacchetti Maven, ciò può verificarsi quando il client carica una o più risorse per una versione del pacchetto ma non pubblica un maven-metadata.xml file per il pacchetto che include quella versione. Quando una versione del pacchetto Maven è incompiuta, non verrà inclusa negli elenchi di versioni restituiti ai clientgradle, quindi non può essere utilizzata come mvn parte di una build. I pacchetti generici possono essere mantenuti deliberatamente Unfinished nello stato fornendo il unfinished flag quando si chiama l'API. PublishPackageVersion Un pacchetto generico può essere modificato nello Published stato omettendo il unfinished flag o chiamando l'UpdatePackageVersionsStatusAPI.

  • Non in elenco: le risorse della versione del pacchetto sono disponibili per il download dal repository, ma la versione del pacchetto non è inclusa nell'elenco delle versioni restituite ai gestori di pacchetti. Ad esempio, per un pacchetto npm, l'output di non npm view <package-name> versions includerà la versione del pacchetto. Ciò significa che la logica di risoluzione delle dipendenze di npm non selezionerà la versione del pacchetto perché la versione non appare nell'elenco delle versioni disponibili. Tuttavia, se la versione del pacchetto Unlisted è già referenziata in un npm package-lock.json file, può comunque essere scaricata e installata, ad esempio, durante l'esecuzione. npm ci

  • Archiviato: le risorse della versione del pacchetto non possono più essere scaricate. La versione del pacchetto non sarà inclusa nell'elenco delle versioni restituite ai gestori di pacchetti. Poiché le risorse non sono disponibili, il consumo della versione del pacchetto da parte dei client è bloccato. Se la build dell'applicazione dipende da una versione aggiornata a Archived, la build verrà interrotta, supponendo che la versione del pacchetto non sia stata memorizzata nella cache locale. Non è possibile utilizzare un gestore di pacchetti o uno strumento di compilazione per ripubblicare una versione del pacchetto archiviata perché è ancora presente nel repository, ma è possibile riportare lo stato della versione del pacchetto in Non elencato o Pubblicato con l'API. UpdatePackageVersionsStatus

  • Eliminata: la versione del pacchetto non appare negli elenchi e le risorse non possono essere scaricate dal repository. La differenza fondamentale tra Disposed e Archived è che con lo stato Disposed, le risorse della versione del pacchetto verranno eliminate definitivamente da. CodeArtifact Per questo motivo, non è possibile spostare una versione del pacchetto da Disposed a Archived, Unlisted o Published. La versione del pacchetto non può più essere utilizzata perché le risorse sono state eliminate. Dopo che una versione del pacchetto è stata contrassegnata come Disposed, non ti verrà più addebitato alcun costo per l'archiviazione delle risorse del pacchetto.

Le versioni del pacchetto di tutti gli stati verranno restituite per impostazione predefinita quando si chiama list-package-versions senza parametri. --status

Oltre agli stati elencati in precedenza, è possibile eliminare anche una versione del pacchetto con l'API. DeletePackageVersions Dopo essere stata eliminata, una versione del pacchetto non è più presente nel repository ed è possibile ripubblicare liberamente tale versione utilizzando un gestore di pacchetti o uno strumento di compilazione. Dopo l'eliminazione di una versione del pacchetto, non ti verrà più addebitato l'archiviazione delle risorse di quella versione del pacchetto.

Normalizzazione del nome del pacchetto, della versione del pacchetto e del nome della risorsa

CodeArtifact normalizza i nomi dei pacchetti, le versioni dei pacchetti e i nomi delle risorse prima di memorizzarli, il che significa che i nomi o le versioni in CodeArtifact potrebbero essere diversi dal nome o dalla versione forniti al momento della pubblicazione del pacchetto. Per ulteriori informazioni su come vengono normalizzati i nomi e le versioni CodeArtifact per ogni tipo di pacchetto, consulta la seguente documentazione:

CodeArtifact non esegue la normalizzazione su altri formati di pacchetto.