Richiesta di pacchetti da connessioni esterne - 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à.

Richiesta di pacchetti da connessioni esterne

Le sezioni seguenti descrivono come richiedere un pacchetto da una connessione esterna e CodeArtifact il comportamento previsto quando si richiede un pacchetto.

Recupera pacchetti da una connessione esterna

Per recuperare i pacchetti da una connessione esterna dopo averli aggiunti al CodeArtifact repository come descritto inConnect un CodeArtifact repository a un repository pubblico, configura il tuo gestore di pacchetti in modo che utilizzi il tuo repository e installa i pacchetti.

Nota

Le seguenti istruzioni utilizzanonpm, per visualizzare le istruzioni di configurazione e utilizzo per altri tipi di pacchettoUtilizzo CodeArtifact con Maven, vedereUtilizzo diCodeArtifactconNuGet, oUsandoCodeArtifactcon Python.

Per recuperare i pacchetti da una connessione esterna
  1. Configura e autentica il tuo gestore di pacchetti con il tuo CodeArtifact repository. Per npm, utilizzare il seguente comando aws codeartifact login.

    aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo
  2. Richiedi il pacchetto dal repository pubblico. Quindinpm, usa il seguentenpm install comando, sostituendo lodash con il pacchetto che desideri installare.

    npm install lodash
  3. Dopo aver copiato il pacchetto nel tuo CodeArtifact repository, puoi usare ilist-package-versions comandilist-packages and per visualizzarlo.

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

    Output di esempio:

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

    Illist-package-versions comando elenca tutte le versioni del pacchetto copiato nel CodeArtifact repository.

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

    Output di esempio:

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

More latenza di connessione

Quando si recupera un pacchetto da un archivio pubblico utilizzando una connessione esterna, c'è un ritardo tra quando il pacchetto viene recuperato dal repository pubblico e quando viene archiviato nel CodeArtifact repository. Ad esempio, supponiamo di aver installato la versione 1.2.5 del pacchetto npm «lodash» come descritto inRecupera pacchetti da una connessione esterna. Sebbene il comandonpm install lodash lodash sia stato completato con successo, la versione del pacchetto potrebbe non essere ancora visualizzata nel tuo CodeArtifact repository. In genere occorrono circa 3 minuti perché la versione del pacchetto venga visualizzata nel repository, anche se occasionalmente può richiedere più tempo.

A causa di questa latenza, potresti aver recuperato correttamente la versione del pacchetto, ma potresti non essere ancora in grado di vedere la versione nel tuo repository nella CodeArtifact console o quando chiami le operazioni ListPackages e l' ListPackageVersions API. Una volta CodeArtifact che la versione del pacchetto è stata mantenuta in modo asincrono, sarà visibile nella console e tramite richieste API.

CodeArtifact comportamento quando un archivio esterno non è disponibile

Occasionalmente, in un archivio esterno si verifica un'interruzione, il che significa che CodeArtifact non è possibile recuperare i pacchetti da esso o che il recupero dei pacchetti è molto più lento del normale. In questo caso, le versioni dei pacchetti già estratte da un archivio esterno (ad esempio npmjs.com) e archiviate in un CodeArtifact repository continueranno a essere disponibili per il download da CodeArtifact. Tuttavia, i pacchetti che non sono già archiviati CodeArtifact potrebbero non essere disponibili, anche quando è stata configurata una connessione esterna a quel repository. Ad esempio, il tuo CodeArtifact repository potrebbe contenere la versione del pacchetto npmlodash 4.17.19 perché è quello che hai usato finora nella tua applicazione. Quando si desidera eseguire l'aggiornamento a4.17.20, CodeArtifact normalmente recupera quella nuova versione da npmjs.com e la archivia nel proprio CodeArtifact repository. Tuttavia, se npmjs.com sta riscontrando un'interruzione, questa nuova versione non sarà disponibile. L'unica soluzione alternativa è riprovare più tardi una volta ripristinato npmjs.com.

Le interruzioni del repository esterno possono influire anche sulla pubblicazione di nuove versioni del pacchetto in CodeArtifact. In un repository con una connessione esterna configurata, non CodeArtifact consentirà la pubblicazione di una versione del pacchetto già presente nell'archivio esterno. Per ulteriori informazioni, consulta Panoramica dei pacchetti. Tuttavia, in rari casi, un'interruzione del repository esterno potrebbe significare che CodeArtifact non sono disponibili up-to-date informazioni su quali pacchetti e versioni dei pacchetti sono presenti in un repository esterno. In questo caso, CodeArtifact potrebbe consentire la pubblicazione di una versione del pacchetto che normalmente negherebbe.

Disponibilità di nuove versioni del pacchetto

Affinché una versione del pacchetto in un archivio pubblico come npmjs.com sia disponibile tramite un CodeArtifact repository, deve prima essere aggiunta a una cache regionale dei metadati dei pacchetti. Questa cache è gestita da CodeArtifact in ogniAWS regione e contiene metadati che descrivono il contenuto dei repository pubblici supportati. A causa di questa cache, c'è un ritardo tra la pubblicazione di una nuova versione del pacchetto in un archivio pubblico e il momento in cui è disponibile da CodeArtifact. Questo ritardo varia in base al tipo di pacco.

Per i pacchetti npm, Python e Nuget, potrebbe esserci un ritardo fino a 30 minuti dalla pubblicazione di una nuova versione del pacchetto su npmjs.com, pypi.org o nuget.org e quando è disponibile per l'installazione da un CodeArtifact repository. CodeArtifact sincronizza automaticamente i metadati di questi due repository per garantire che la cache sia aggiornata.

Per i pacchetti Maven, potrebbe esserci un ritardo fino a 3 ore dalla pubblicazione di una nuova versione del pacchetto in un archivio pubblico e dal momento in cui è disponibile per l'installazione da un CodeArtifact repository. CodeArtifact controllerà la presenza di nuove versioni di un pacchetto al massimo una volta ogni 3 ore. La prima richiesta per un determinato nome di pacchetto dopo la scadenza della durata della cache di 3 ore comporterà l'importazione di tutte le nuove versioni di quel pacchetto nella cache regionale.

Per i pacchetti Maven di uso comune, le nuove versioni vengono in genere importate ogni 3 ore perché l'elevato tasso di richieste significa che la cache verrà spesso aggiornata non appena la durata della cache è scaduta. Per i pacchetti usati raramente, la cache non avrà la versione più recente finché non verrà richiesta una versione del pacchetto da un CodeArtifact repository. Alla prima richiesta, saranno disponibili solo le versioni importate in precedenza CodeArtifact, ma questa richiesta comporterà l'aggiornamento della cache. In caso di richieste successive, le nuove versioni del pacchetto verranno aggiunte alla cache e saranno disponibili per il download.

Importazione di versioni di pacchetti con più di una risorsa

Entrambi i pacchetti Maven e Python possono avere più risorse per versione del pacchetto. Ciò rende l'importazione di pacchetti di questi formati più complessa rispetto a npm e NuGet pacchetti, che hanno solo una risorsa per versione del pacchetto. Per le descrizioni delle risorse importate per questi tipi di pacchetti e di come vengono rese disponibili le risorse appena aggiunte, consultaRichiesta di pacchetti Python da upstream e connessioni esterne eRichiesta di pacchetti Maven da upstream e connessioni esterne.