Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Ketika artefak Maven dipublikasikan ke AWS CodeArtifact repositori, checksum yang terkait dengan setiap aset atau file dalam paket digunakan untuk memvalidasi unggahan. Contoh aset adalah file jar, pom, dan war. Untuk setiap aset, artefak Maven berisi beberapa file checksum yang menggunakan nama aset dengan ekstensi tambahan, seperti md5
atau sha1
. Sebagai contoh, file checksum untuk file bernama my-maven-package.jar
mungkin my-maven-package.jar.md5
dan my-maven-package.jar.sha1
.
catatan
Maven menggunakan istilah artifact
. Dalam panduan ini, paket Maven sama dengan artefak Maven. Untuk informasi lebih lanjut, lihat AWS CodeArtifactpaket.
Penyimpanan Checksum
CodeArtifact tidak menyimpan checksum Maven sebagai aset. Ini berarti bahwa checksum tidak muncul sebagai aset individual dalam output API. ListPackageVersionAssets Sebagai gantinya, checksum yang dihitung oleh CodeArtifact tersedia untuk setiap aset di semua jenis checksum yang didukung. Misalnya, bagian dari respons panggilan ListPackageVersionAssets pada versi commons-lang:commons-lang 2.1
paket Maven adalah:
{
"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"
}
}
Meskipun checksum tidak disimpan sebagai aset, klien Maven masih dapat mempublikasikan dan mengunduh checksum di lokasi yang diharapkan. Misalnya, jika commons-lang:commons-lang 2.1
berada di repositori yang disebutmaven-repo
, jalur URL untuk checksum SHA-256 dari file JAR adalah:
/maven/maven-repo/commons-lang/commons-lang/2.1/commons-lang-2.1.jar.sha256
Jika Anda mengunggah paket Maven yang ada (misalnya, paket yang sebelumnya disimpan di Amazon S3) untuk CodeArtifact menggunakan klien HTTP generik seperticurl
, tidak perlu mengunggah checksum. CodeArtifact akan menghasilkannya secara otomatis. Jika ingin memverifikasi bahwa aset telah diunggah dengan benar, Anda dapat menggunakan operasi ListPackageVersionAssets API untuk membandingkan checksum dalam respons terhadap nilai checksum asli untuk setiap aset.
Ketidakcocokan checksum selama penerbitan
Selain aset dan checksum, artefak Maven juga berisi file. maven-metadata.xml
Urutan penerbitan normal untuk paket Maven adalah untuk semua aset dan checksum yang akan diunggah terlebih dahulu, diikuti oleh. maven-metadata.xml
Misalnya, urutan penerbitan untuk versi paket Maven yang commons-lang 2.1
dijelaskan sebelumnya, dengan asumsi klien dikonfigurasi untuk menerbitkan file checksum SHA-256, adalah:
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
Saat mengunggah file checksum untuk aset, seperti file JAR, permintaan unggahan checksum akan gagal dengan respons 400 (Permintaan Buruk) jika ada ketidakcocokan antara nilai checksum yang diunggah dan nilai checksum yang dihitung oleh. CodeArtifact Jika aset terkait tidak ada, permintaan akan gagal dengan respons 404 (Tidak Ditemukan). Untuk menghindari kesalahan ini, Anda harus mengunggah aset terlebih dahulu, lalu mengunggah checksum.
Ketika maven-metadata.xml
diunggah, CodeArtifact biasanya mengubah status versi paket Maven dari ke. Unfinished
Published
Jika ketidakcocokan checksum terdeteksi untuk aset apa pun, CodeArtifact akan mengembalikan 400 (Permintaan Buruk) sebagai tanggapan atas permintaan maven-metadata.xml
penerbitan. Kesalahan ini dapat menyebabkan klien berhenti mengunggah file untuk versi paket tersebut. Jika ini terjadi, dan maven-metadata.xml
file tidak diunggah, aset apa pun dari versi paket yang sudah diunggah tidak dapat diunduh. Ini karena status versi paket tidak disetel ke Published
dan tetap adaUnfinished
.
CodeArtifact memungkinkan penambahan aset lebih lanjut ke versi paket Maven bahkan setelah maven-metadata.xml
diunggah dan status versi paket telah disetel ke. Published
Dalam status ini, permintaan untuk mengunggah file checksum yang tidak cocok juga akan gagal dengan respons 400 (Permintaan Buruk). Namun, karena status versi paket telah disetel kePublished
, Anda dapat mengunduh aset apa pun dari paket, termasuk aset yang gagal diunggah file checksum. Saat mengunduh checksum untuk aset di mana unggahan file checksum gagal, nilai checksum yang diterima klien akan menjadi nilai checksum yang dihitung CodeArtifact berdasarkan data aset yang diunggah.
CodeArtifact perbandingan checksum peka huruf besar/kecil, dan checksum yang dihitung oleh CodeArtifact diformat dalam huruf kecil. Oleh karena itu, jika checksum 909FA780F76DA393E992A3D2D495F468
diunggah, itu akan gagal dengan ketidakcocokan checksum karena CodeArtifact tidak memperlakukannya sama dengan. 909fa780f76da393e992a3d2d495f468
Memulihkan dari ketidakcocokan checksum
Jika unggahan checksum gagal karena ketidakcocokan checksum, coba salah satu dari berikut ini untuk memulihkan:
Jalankan perintah yang menerbitkan artefak Maven lagi. Ini mungkin berfungsi jika masalah jaringan merusak file checksum. Jika ini menyelesaikan masalah jaringan, checksum cocok dan unduhan berhasil.
Hapus versi paket dan kemudian publikasikan ulang. Untuk informasi selengkapnya, lihat DeletePackageVersionsdi AWS CodeArtifact API Referensi.