Utilizzo dei checksum Maven - 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à.

Utilizzo dei checksum Maven

Quando un artefatto Maven viene pubblicato in unAWS CodeArtifact repository, il checksum associato a ogni risorsa o file del pacchetto viene utilizzato per convalidare il caricamento. Esempi di risorse sono file jar, pom e war. Per ogni risorsa, l'artefatto Maven contiene più file di checksum che utilizzano il nome della risorsa con un'estensione aggiuntiva, ad esempiomd5 osha1. Ad esempio, i file di checksum per un file denominatomy-maven-package.jar potrebbero esseremy-maven-package.jar.md5 emy-maven-package.jar.sha1.

Nota

Maven usa il termineartifact. In questa guida, un pacchetto Maven è uguale a un artefatto Maven. Per ulteriori informazioni, consulta Ray e dettagli, AWS CodeArtifactconsulta Ray

Archiviazione tramite checksum

CodeArtifact non memorizza i checksum Maven come risorse. Ciò significa che i checksum non vengono visualizzati come risorse individuali nell'output dell'ListPackageVersionAssets API. I checksum calcolati da CodeArtifact sono invece disponibili per ogni risorsa in tutti i tipi di checksum supportati. Ad esempio, parte della risposta alla chiamata ListPackageVersionAssets alla versione del pacchetto Mavencommons-lang:commons-lang 2.1 è:

{ "name": "commons-lang-2.1.jar", "size": 207723, "hashes": { "MD5": "51591549f1662a64543f08a1d4a0cf87", "SHA-1": "4763ecc9d78781c915c07eb03e90572c7ff04205", "SHA-256": "2ded7343dc8e57decd5e6302337139be020fdd885a2935925e8d575975e480b9", "SHA-512": "a312a5e33b17835f2e82e74ab52ab81f0dec01a7e72a2ba58bb76b6a197ffcd2bb410e341ef7b3720f3b595ce49fdd9994ea887ba08ff6fe21b2c714f8c405af" } }, { "name": "commons-lang-2.1.pom", "size": 9928, "hashes": { "MD5": "8e41bacdd69de9373c20326d231c8a5d", "SHA-1": "a34d992202615804c534953aba402de55d8ee47c", "SHA-256": "f1a709cd489f23498a0b6b3dfbfc0d21d4f15904791446dec7f8a58a7da5bd6a", "SHA-512": "1631ce8fe4101b6cde857f5b1db9b29b937f98ba445a60e76cc2b8f2a732ff24d19b91821a052c1b56b73325104e9280382b2520edda4e7696698165c7e09161" } }, { "name": "maven-metadata.xml", "size": 121, "hashes": { "MD5": "11bb3d48d984f2f49cea1e150b6fa371", "SHA-1": "7ef872be17357751ce65cb907834b6c5769998db", "SHA-256": "d04d140362ea8989a824a518439246e7194e719557e8d701831b7f5a8228411c", "SHA-512": "001813a0333ce4b2a47cf44900470bc2265ae65123a8c6b5ac5f2859184608596baa4d8ee0696d0a497755dade0f6bf5e54667215a06ceae1effdfb7a8d30f88" } }

Anche se i checksum non vengono archiviati come risorse, i client Maven possono comunque pubblicare e scaricare i checksum nelle posizioni previste. Ad esempio, se sicommons-lang:commons-lang 2.1 trovasse in un repository chiamatomaven-repo, il percorso URL per il checksum SHA-256 del file JAR sarebbe:

/maven/maven-repo/commons-lang/commons-lang/2.1/commons-lang-2.1.jar.sha256

Se stai caricando pacchetti Maven esistenti (ad esempio pacchetti precedentemente archiviati in Amazon S3) su un CodeArtifact client HTTP genericocurl, ad esempio, non è necessario caricare i checksum. CodeArtifact li genererà automaticamente. Se desideri verificare che le risorse siano state caricate correttamente, puoi utilizzare l'operazione ListPackageVersionAssets API per confrontare i checksum nella risposta con i valori di checksum originali per ogni risorsa.

Mancate corrispondenze tra checksum durante la pubblicazione

Oltre alle risorse e ai checksum, gli artefatti di Maven contengono anche unmaven-metadata.xml file. La normale sequenza di pubblicazione per un pacchetto Maven prevede che tutti gli asset e i checksum vengano caricati per primi, seguiti damaven-metadata.xml. Ad esempio, la sequenza di pubblicazione per la versione del pacchetto Mavencommons-lang 2.1 descritta in precedenza, supponendo che il client sia configurato per pubblicare file di checksum SHA-256, sarebbe:

PUT commons-lang-2.1.jar PUT commons-lang-2.1.jar.sha256 PUT commons-lang-2.1.pom PUT commons-lang-2.1.pom.sha256 PUT maven-metadata.xml PUT maven-metadata.xml.sha256

Quando si carica il file di checksum per una risorsa, ad esempio un file JAR, la richiesta di caricamento del checksum avrà esito negativo con una risposta 400 (Richiesta non valida) se c'è una mancata corrispondenza tra il valore del checksum caricato e il valore del checksum calcolato da CodeArtifact. Se la risorsa corrispondente non esiste, la richiesta avrà esito negativo con una risposta 404 (Not Found). Per evitare questo errore, devi prima caricare la risorsa e poi caricare il checksum.

Quandomaven-metadata.xml viene caricato, CodeArtifact normalmente cambia lo stato della versione del pacchetto Maven daUnfinished aPublished. Se viene rilevata una mancata corrispondenza del checksum per qualsiasi risorsa, CodeArtifact restituirà un valore 400 (Richiesta non valida) in risposta alla richiesta dimaven-metadata.xml pubblicazione. Questo errore può causare l'interruzione del caricamento dei file per quella versione del pacchetto da parte del client. Se ciò si verifica e ilmaven-metadata.xml file non viene caricato, non è possibile scaricare alcuna risorsa della versione del pacchetto già caricata. Questo perché lo stato della versione del pacchetto non è impostatoPublished e rimaneUnfinished.

CodeArtifact consente di aggiungere ulteriori risorse a una versione del pacchetto Maven anche dopomaven-metadata.xml che è stato caricato e lo stato della versione del pacchetto è stato impostato suPublished. In questo stato, anche una richiesta di caricamento di un file di checksum non corrispondente avrà esito negativo con una risposta 400 (richiesta non valida). Tuttavia, poiché lo stato della versione del pacchetto è già stato impostato suPublished, è possibile scaricare qualsiasi risorsa dal pacchetto, comprese quelle per le quali il caricamento del file di checksum non è riuscito. Quando si scarica un checksum per una risorsa in cui il caricamento del file di checksum non è riuscito, il valore di checksum ricevuto dal client sarà il valore di checksum calcolato in CodeArtifact base ai dati dell'asset caricato.

CodeArtifact i confronti tra checksum fanno distinzione tra maiuscole e minuscole e i checksum calcolati da CodeArtifact sono formattati in lettere minuscole. Pertanto, se il checksum909FA780F76DA393E992A3D2D495F468 viene caricato, fallirà con una mancata corrispondenza del checksum perché CodeArtifact non lo considera uguale a909fa780f76da393e992a3d2d495f468.

Recupero da mancate corrispondenze tra i checksum

Se il caricamento del checksum fallisce a causa di una mancata corrispondenza del checksum, prova una delle seguenti operazioni per recuperare:

  • Esegui nuovamente il comando che pubblica l'artefatto Maven. Questo potrebbe funzionare se un problema di rete ha danneggiato il file di checksum. Se questo risolve il problema di rete, il checksum corrisponde e il download ha esito positivo.

  • Eliminare la versione del pacchetto e quindi ripubblicarla. Per ulteriori informazioni, consulta DeletePackageVersionsl'AWS CodeArtifact API Reference.