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à.
Quando un artefatto Maven viene pubblicato in un AWS CodeArtifact repository, il checksum associato a ogni risorsa o file del pacchetto viene utilizzato per convalidare il caricamento. Esempi di risorse sono i 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 esempio o. md5
sha1
Ad esempio, i file di checksum per un file denominato potrebbero essere e. my-maven-package.jar
my-maven-package.jar.md5
my-maven-package.jar.sha1
Nota
Maven usa il termine. artifact
In questa guida, un pacchetto Maven è uguale a un artefatto Maven. Per ulteriori informazioni, vedi pacchetto.AWS CodeArtifact
Archiviazione con checksum
CodeArtifact non memorizza i checksum di Maven come risorse. Ciò significa che i checksum non appaiono come singole risorse nell'output dell'API. ListPackageVersionAssets Invece, i checksum calcolati da CodeArtifact sono disponibili per ogni risorsa in tutti i tipi di checksum supportati. Ad esempio, parte della risposta alla chiamata ListPackageVersionAssets sulla versione del pacchetto Maven è: commons-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 sono archiviati come risorse, i client Maven possono comunque pubblicare e scaricare i checksum nelle posizioni previste. Ad esempio, se si commons-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 generico, ad esempiocurl
, non è necessario caricare i checksum. CodeArtifact li genererà automaticamente. Se desideri verificare che gli asset siano stati caricati correttamente, puoi utilizzare l'operazione ListPackageVersionAssets API per confrontare i checksum nella risposta con i valori di checksum originali per ogni risorsa.
I checksum non corrispondono durante la pubblicazione
Oltre agli asset e ai checksum, gli artefatti di Maven contengono anche un file. maven-metadata.xml
La normale sequenza di pubblicazione per un pacchetto Maven prevede che tutti gli asset e i checksum vengano caricati per primi, seguiti da. maven-metadata.xml
Ad esempio, la sequenza di pubblicazione per la versione del pacchetto Maven commons-lang 2.1
descritta in precedenza, presupponendo che il client sia configurato per pubblicare file con 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 e restituirà una risposta 400 (Bad Request) 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, dovete prima caricare la risorsa e poi caricare il checksum.
Quando maven-metadata.xml
viene caricato, CodeArtifact normalmente cambia lo stato della versione del pacchetto Maven da a. Unfinished
Published
Se viene rilevata una mancata corrispondenza del checksum per qualsiasi risorsa, CodeArtifact restituirà un 400 (Bad Request) in risposta alla richiesta di pubblicazione. maven-metadata.xml
Questo errore può causare l'interruzione del caricamento dei file per quella versione del pacchetto da parte del client. Se ciò si verifica e il maven-metadata.xml
file non viene caricato, le risorse della versione del pacchetto già caricate non possono essere scaricate. Questo perché lo stato della versione del pacchetto non è impostato Published
e rimane invariatoUnfinished
.
CodeArtifact consente di aggiungere ulteriori risorse a una versione del pacchetto Maven anche dopo che maven-metadata.xml
è stata caricata e lo stato della versione del pacchetto è stato impostato su. Published
In questo stato, anche una richiesta di caricamento di un file di checksum non corrispondente fallirà con una risposta 400 (Bad Request). Tuttavia, poiché lo stato della versione del pacchetto è già stato impostato suPublished
, potete scaricare qualsiasi risorsa dal pacchetto, incluse quelle per cui il caricamento del file con il checksum non è riuscito. Quando scaricate un checksum per una risorsa il cui caricamento del file di checksum non è riuscito, il valore del checksum ricevuto dal client sarà il valore del checksum calcolato in CodeArtifact base ai dati della risorsa caricata.
CodeArtifact i confronti tra checksum fanno distinzione tra maiuscole e minuscole e i checksum calcolati da sono formattati in minuscolo. CodeArtifact Pertanto, se il checksum 909FA780F76DA393E992A3D2D495F468
viene caricato, avrà esito negativo con una mancata corrispondenza del checksum perché non lo considera uguale a. CodeArtifact 909fa780f76da393e992a3d2d495f468
Recupero in seguito a mancate corrispondenze nei checksum
Se il caricamento di un checksum non riesce a causa di una mancata corrispondenza del checksum, prova una delle seguenti operazioni per il ripristino:
Esegui nuovamente il comando che pubblica l'artefatto Maven. Questo potrebbe funzionare se un problema di rete danneggia 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 ripubblicarla. Per ulteriori informazioni, DeletePackageVersionsconsulta AWS CodeArtifact API Reference.