Menggunakan checksum Maven - CodeArtifact

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan checksum Maven

Ketika artefak Maven dipublikasikan keAWS CodeArtifact repositori, checksum yang terkait dengan masing-masing 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 selengkapnya, lihat AWS CodeArtifactpaket.

Penyimpanan checksum

CodeArtifact tidak menyimpan checksum Maven sebagai aset. Ini berarti bahwa checksum tidak muncul sebagai aset individual dalam output ListPackageVersionAssets API. Sebagai gantinya, checksum yang dihitung oleh CodeArtifact tersedia untuk setiap aset di semua jenis checksum yang didukung. Misalnya, bagian dari respon panggilan ListPackageVersionAssets pada versi paket Mavencommons-lang:commons-lang 2.1 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, jikacommons-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, Anda tidak perlu mengunggah checksum. CodeArtifact akan menghasilkannya secara otomatis. Jika Anda 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.

Checksum tidak cocok selama penerbitan

Terlepas dari aset dan checksum, artefak Maven juga berisimaven-metadata.xml file. Urutan penerbitan normal untuk paket Maven adalah untuk semua aset dan checksum yang akan di-upload pertama, diikuti olehmaven-metadata.xml. Misalnya, urutan penerbitan untuk versi paket Maven yangcommons-lang 2.1 dijelaskan sebelumnya, dengan asumsi klien dikonfigurasi untuk menerbitkan file checksum SHA-256, akan menjadi:

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 (Not Found). Untuk menghindari kesalahan ini, Anda harus terlebih dahulu mengunggah aset, dan kemudian mengunggah checksum.

Ketikamaven-metadata.xml di-upload, CodeArtifact biasanya mengubah status versi paket Maven dariUnfinished kePublished. Jika ketidakcocokan checksum terdeteksi untuk aset apa pun, CodeArtifact akan mengembalikan 400 (Permintaan Buruk) dalam menanggapi permintaanmaven-metadata.xml penerbitan. Kesalahan ini dapat menyebabkan klien berhenti mengunggah file untuk versi paket tersebut. Jika ini terjadi, danmaven-metadata.xml file tidak diunggah, aset apa pun dari versi paket yang sudah diunggah tidak dapat diunduh. Hal ini karena status versi paket tidak diatur kePublished dan tetapUnfinished.

CodeArtifact memungkinkan menambahkan aset lebih lanjut ke versi paket Maven bahkan setelahmaven-metadata.xml telah di-upload dan status versi paket telah diatur kePublished. 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 diaturPublished, 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 bersifat case sensitive, dan checksum yang dihitung oleh CodeArtifact diformat dalam huruf kecil. Oleh karena itu, jika checksum909FA780F76DA393E992A3D2D495F468 diunggah, itu akan gagal dengan ketidakcocokan checksum karena CodeArtifact tidak memperlakukannya sama dengan909fa780f76da393e992a3d2d495f468.

Memulihkan dari checksum

Jika unggahan checksum gagal karena ketidakcocokan checksum, coba salah satu dari berikut ini untuk memulihkan:

  • Jalankan perintah yang menerbitkan artefak Maven lagi. Langkah ini mungkin bekerja jika masalah jaringan merusak file checksum. Jika masalah jaringan, checksum cocok dan unduhan berhasil.

  • Hapus versi paket dan kemudian mempublikasikannya kembali. Untuk informasi selengkapnya, lihat DeletePackageVersionsdi AWS CodeArtifact API Reference.