Domande frequenti su AWS CodeArtifact

Domande generali

AWS CodeArtifact è un servizio di repository di artefatti completamente gestito che consente alle organizzazioni di conservare, pubblicare e condividere in modo sicuro e con maggiore facilità i pacchetti software utilizzati nel loro processo di sviluppo software. CodeArtifact funziona con i gestori di pacchetti più diffusi e gli strumenti di compilazione come Maven e Gradle (Java), npm e yarn (JavaScript) o pip e twine (Python), o NuGet (.NET).

  • npm/Yarn
  • pip/twine
  • Maven/Gradle
  • NuGet
  • RubyGems
  • SwiftPM
  • Generico
  • Cargo

L'utilizzo di CodeArtifact non richiede alcun impegno a lungo termine né pagamenti anticipati. Il costo si basa esclusivamente sui pacchetti software archiviati, sul numero di richieste effettuate e sui dati trasferiti al di fuori di una regione AWS. CodeArtifact include un piano gratuito mensile per richieste e archiviazioni. Per i dettagli sui prezzi, consulta la relativa pagina.

CodeArtifact è attualmente disponibile in queste 13 regioni AWS:

  • Stati Uniti orientali (Virginia settentrionale)
  • Stati Uniti orientali (Ohio)
  • Stati Uniti occidentali (Oregon)
  • UE (Irlanda)
  • UE (Londra)
  • UE (Francoforte)
  • UE (Stoccolma)
  • UE (Milano)
  • UE (Parigi)
  • Asia Pacifico (Sydney)
  • Asia Pacifico (Tokyo)
  • Asia Pacifico (Mumbai)
  • Asia Pacifico (Singapore)

 

Nozioni di base e come usare CodeArtifact

È possibile iniziare a utilizzare CodeArtifact creando un nuovo dominio e repository con la console di gestione AWS, SDK o CLI. È quindi possibile utilizzare i gestori di pacchetti più diffusi e gli strumenti di compilazione come CLI npm o yarn (JavaScript), maven o gradle (Java), pip (Python) o NuGet (.NET) per pubblicare pacchetti nel repository. Inoltre, è possibile utilizzare pacchetti open source da repository pubblici, come npm registry, Maven Central o Python Package Index (PyPI), o NuGet.org attraverso il repository di CodeArtifact che archivia tutti i pacchetti utilizzati in questa modalità.

Un dominio è un costrutto specifico di CodeArtifact che consente il raggruppamento e la gestione di molteplici repository di CodeArtifact di proprietà di un'unica organizzazione tra più account AWS. Ad esempio, un'organizzazione potrebbe creare un repository centrale per la condivisione di pacchetti tra i team e repository a livello di progetto per archiviare i pacchetti usati esclusivamente da un team o un'applicazione.

Un repository di CodeArtifact include una serie di versioni di pacchetti, ognuna delle quali mappa una serie di risorse. I repository sono poliglotti e possono contenere pacchetti di tutti i tipi supportati. Inoltre, si avvalgono degli endpoint per pubblicare e recuperare i pacchetti attraverso strumenti come CLI npm, CLI Maven (mvn), pip e NuGet. Per i limiti delle risorse in AWS CodeArtifact, vedere Quotas in AWS CodeArtifact.

È possibile creare repository tramite la procedura guidata della console o in maniera programmata attraverso SDK e CLI di AWS. Per maggiori informazioni, consulta la sezione Come creare un repository nella documentazione di AWS CodeArtifact.

È possibile pubblicare artefatti tramite gli strumenti nativi del linguaggio, come npm o yarn (JavaScript), maven o gradle (Java) oppure twine (Python), o NuGet (.NET). Ad esempio, la pubblicazione di una nuova versione del pacchetto attraverso npm richiede due comandi: per prima cosa, eseguire il comando "login" della CLI di CodeArtifact, quindi "npm publish" per caricare il pacchetto sul repository. AWS CodeBuild può eseguire i medesimi comandi per pubblicare nuove versioni del pacchetto come parte del flusso di lavoro di integrazione continua. Ulteriori informazioni sono disponibili qui.

È possibile recuperare gli artefatti usando gli strumenti nativi del linguaggio. Ad esempio, per installare il webpack del pacchetto npm e relative dipendenze, è necessario eseguire il comando "login" della CLI di CodeArtifact, quindi il webpack di installazione npm. npm recupera il webpack da CodeArtifact, esegue la risoluzione delle dipendenze in base alle informazioni del file package.json del webpack e recupera tutte le dipendenze necessarie da CodeArtifact in modo ricorsivo. Ulteriori informazioni sono disponibili qui.

Sulla console di CodeArtifact, è possibile creare un repository con una connessione esterna per estrarre i pacchetti da un repository pubblico, come npm registry. Inoltre, è possibile utilizzare l'API AssociateExternalConnection per creare una connessione tra un repository di CodeArtifact e uno pubblico. Nel momento in cui servono i pacchetti, CodeArtifact estrae ed esegue la cache dei pacchetti richiesti da repository esterni, qualora questi pacchetti non siano già presenti.

Autenticazione e controllo degli accessi

Per prima cosa, installare la CLI AWS e configurare le credenziali AWS per un utente o ruolo IAM aventi le autorizzazioni appropriate per accedere a CodeArtifact. Quindi, è possibile usare la CLI per richiamare l'API GetAuthorizationToken di CodeArtifact. Questa API vende token di autenticazione che possono essere inclusi nell'intestazione delle autorizzazioni HTTP in richieste da parte di gestori di pacchetti e strumenti di compilazione. La CLI fornisce il comando login che richiama GetAuthorizationToken e configura automaticamente un gestore del pacchetto che userà questo token per tutte le richieste. È simile al comando get-login fornito da Amazon ECR. Pertanto, gli sviluppatori che hanno interagito con ECR usando la CLI docker avranno già familiarità con questo modello.

Sì. I repository di CodeArtifact supportano le policy delle risorse per consentire l'accesso tra più account. È possibile aggiungere una policy delle risorse tramite la console o CLI AWS.

Sì. CodeArtifact supporta le autorizzazioni di scrittura a livello di pacchetto. È possibile configurare queste autorizzazioni aggiungendo le istruzioni a un documento di policiy delle risorse di un repository specificando l'ARN del pacchetto come risorsa. CodeArtifact supporta esclusivamente le autorizzazioni di lettura a livello di repository. Pertanto, una data entità IAM può leggere tutti i pacchetti del repository o nessuno.

Sì. Tutti i pacchetti archiviati da CodeArtifact sono crittografati in transito tramite TLS e a riposo con crittografia delle chiavi simmetrica AES-256. CodeArtifact supporta i CMK gestiti dai clienti di AWS Key Management Service (KMS) e i CMK gestiti da AWS.

Integrazioni

Sì. È possibile specificare i repository di CodeArtifact da usare per consumare e pubblicare i pacchetti nella configurazione di progetto CodeBuild. Le immagini di CodeBuild disponibili includono strumenti client per tutti i tipi di pacchetti supportati da CodeArtifact. CodeBuild configura lo strumento di compilazione o il gestore del pacchetto per usare il repository specificato e recuperare il token di autenticazione di CodeArtifact all'avvio della compilazione tramite il relativo ruolo IAM. Inoltre, è possibile specificare l'artefatto di compilazione da pubblicare sul repository di CodeArtifact al termine della compilazione. È possibile attivare le compilazioni di CodeBuild tramite CloudWatch Events emessi da un repository di CodeArtifact in caso di modifica dei contenuti.

Sì. Tramite Amazon EventBridge, è possibile avviare una compilazione CodePipeline nel momento in cui un pacchetto archiviato in un repository CodeArtifact subisce delle modifiche. Ad esempio, al momento della pubblicazione di una nuova versione del pacchetto.

Sì. Puoi creare risorse CodeArtifact come domini e repository usando CloudFormation. Per i dettagli, consulta la documentazione su CodeArtifact.