

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

# Gunakan checksum Maven
<a name="maven-checksums"></a>

 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](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html#welcome-concepts-package). 

## Penyimpanan Checksum
<a name="maven-checksum-storage"></a>

CodeArtifact tidak menyimpan checksum Maven sebagai aset. [Ini berarti bahwa checksum tidak muncul sebagai aset individual dalam output API. ListPackageVersionAssets ](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListPackageVersionAssets.html) 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 disebut`maven-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 seperti`curl`, 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
<a name="maven-checksum-mismatch"></a>

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 ada`Unfinished`.

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 ke`Published`, 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
<a name="maven-checksum-mismatch-recovery"></a>

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 [DeletePackageVersions](https://docs.aws.amazon.com/dms/latest/APIReference/API_DeletePackageVersions.html)di *AWS CodeArtifact API Referensi*.