View a markdown version of this page

Gambaran umum paket - CodeArtifact

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

Gambaran umum paket

Paket adalah bundel perangkat lunak dan metadata yang diperlukan untuk menyelesaikan dependensi dan menginstal perangkat lunak. Dalam CodeArtifact, paket terdiri dari nama paket, namespace opsional seperti @types in@types/node, satu set versi paket, dan metadata tingkat paket seperti tag npm.

Format paket yang didukung

AWS CodeArtifact mendukung format paket Cargo , generic, Maven, npm NuGet,, PyPI, Ruby, Swift.

Publikasi paket

Anda dapat menerbitkan versi baru dari format paket yang didukung ke CodeArtifact repositori menggunakan alat sepertinpm,twine,Maven,Gradle,nuget, dandotnet.

Izin publikasi

Pengguna atau peran AWS Identity and Access Management (IAM) Anda harus memiliki izin untuk menerbitkan ke repositori tujuan. Izin berikut diperlukan untuk menerbitkan paket:

  • Kargo: codeartifact:PublishPackageVersion

  • generik: codeartifact:PublishPackageVersion

  • Maven: codeartifact:PublishPackageVersion dan codeartifact:PutPackageMetadata

  • npm: codeartifact:PublishPackageVersion

  • NuGet: codeartifact:PublishPackageVersion dan codeartifact:ReadFromRepository

  • Python: codeartifact:PublishPackageVersion

  • Ruby: codeartifact:PublishPackageVersion

  • Cepat: codeartifact:PublishPackageVersion

Dalam daftar izin sebelumnya, kebijakan IAM Anda harus menentukan package sumber daya untuk codeartifact:PutPackageMetadata izin codeartifact:PublishPackageVersion dan. Itu juga harus menentukan repository sumber daya untuk codeartifact:ReadFromRepository izin.

Untuk informasi selengkapnya tentang izin di CodeArtifact, lihatAWS CodeArtifact referensi izin.

Penimpaan aset paket

Anda tidak dapat memublikasikan kembali aset paket yang sudah ada dengan konten yang berbeda. Misalnya, anggaplah Anda sudah memublikasikan paket Maven dengan aset JAR mypackage-1.0.jar. Anda hanya dapat mempublikasikan aset itu lagi jika checksum aset lama dan baru identik. Untuk memublikasikan aset yang sama dengan konten baru, hapus versi paket menggunakan perintah delete-package-versions terlebih dahulu. Mencoba untuk memublikasikan ulang nama aset yang sama dengan konten yang berbeda akan mengakibatkan kesalahan konflik HTTP 409.

Untuk format paket yang mendukung beberapa aset (generik, PyPI dan Maven), Anda dapat menambahkan aset baru dengan nama berbeda ke versi paket yang ada, dengan asumsi bahwa Anda memiliki izin yang diperlukan. Untuk paket generik, Anda dapat menambahkan aset baru selama versi paket berada dalam Unfinished status. Karena npm hanya mendukung aset tunggal per versi paket, untuk mengubah versi paket yang sudah dipublikasikan dengan cara apa pun, Anda harus terlebih dahulu menghapusnya menggunakan delete-package-versions.

Jika Anda mencoba untuk memublikasikan kembali aset yang sudah ada (misalnya, mypackage-1.0.jar), dan isi dari aset yang dipublikasikan dan aset baru identik, operasi akan berhasil karena operasi idempoten.

Paket privat dan repositori publik

CodeArtifact tidak menerbitkan paket yang disimpan dalam CodeArtifact repositori ke repositori publik seperti npmjs.com atau Maven Central. CodeArtifact mengimpor paket dari repositori publik ke CodeArtifact repositori, tetapi tidak pernah memindahkan paket ke arah lain. Paket yang Anda publikasikan ke CodeArtifact repositori tetap bersifat pribadi dan hanya tersedia untuk AWS akun, peran, dan pengguna yang telah Anda berikan akses.

Memublikasikan versi paket dengan patch

Terkadang Anda mungkin ingin memublikasikan versi paket yang dimodifikasi, kemungkinan yang tersedia di repositori publik. Misalnya, Anda mungkin menemukan bug dalam dependensi aplikasi penting yang disebut mydep 1.1, dan Anda harus memperbaikinya lebih cepat dari yang dapat ditinjau vendor paket dan menerima perubahan. Seperti dijelaskan sebelumnya, CodeArtifact mencegah Anda menerbitkan mydep 1.1 di CodeArtifact repositori Anda jika repositori publik dapat dijangkau dari reposit CodeArtifact ori Anda melalui repositori hulu dan koneksi eksternal.

Untuk mengatasinya, publikasikan versi paket ke repositori lain di mana CodeArtifact repositori publik tidak dapat dijangkau. Kemudian gunakan copy-package-versions API untuk menyalin versi yang ditambal mydep 1.1 ke CodeArtifact repositori tempat Anda akan mengkonsumsinya.

Batas ukuran aset untuk penerbitan

Ukuran maksimum aset paket yang dapat dipublikasikan dibatasi oleh kuota maksimum ukuran file A set yang ditunjukkan padaKuota di AWS CodeArtifact. Misalnya, Anda tidak dapat menerbitkan roda Maven JAR atau Python yang lebih besar dari kuota maksimum ukuran file aset Anda saat ini. Jika Anda perlu menyimpan aset yang lebih besar CodeArtifact, minta kenaikan kuota.

Selain kuota maksimum ukuran file aset, ukuran maksimum permintaan penerbitan untuk paket npm adalah 2 GB. Batas ini tidak tergantung pada kuota maksimum ukuran file aset dan tidak dapat dinaikkan dengan peningkatan kuota. Dalam permintaan penerbitan npm (HTTP PUT), metadata paket dan konten arsip tar paket npm dibundel bersama. Karena itu, ukuran maksimum sebenarnya dari paket npm yang dapat dipublikasikan bervariasi dan tergantung pada ukuran metadata yang disertakan.

catatan

Paket npm yang diterbitkan terbatas pada ukuran maksimum kurang dari 2 GB.

Latensi penerbitan

Versi paket yang diterbitkan ke CodeArtifact repositori sering tersedia untuk diunduh dalam waktu kurang dari satu detik. Misalnya, jika Anda menerbitkan versi paket npm ke CodeArtifact withnpm publish, versi tersebut harus tersedia untuk npm install perintah dalam waktu kurang dari satu detik. Namun, penerbitan bisa tidak konsisten dan terkadang memakan waktu lebih lama. Jika Anda harus menggunakan versi paket segera setelah penerbitan, gunakan percobaan ulang untuk memastikan bahwa unduhan dapat diandalkan. Misalnya, setelah menerbitkan versi paket, ulangi pengunduhan hingga tiga kali jika versi paket yang baru diterbitkan pada awalnya tidak tersedia pada upaya pengunduhan pertama.

catatan

Mengimpor versi paket dari repositori publik biasanya membutuhkan waktu lebih lama daripada penerbitan. Untuk informasi selengkapnya, lihat Latensi koneksi eksternal.

Status versi paket

Setiap versi paket CodeArtifact memiliki status yang menjelaskan status saat ini dan ketersediaan versi paket. Anda dapat mengubah status versi paket di AWS CLI dan SDK. Untuk informasi selengkapnya, lihat Memperbarui status versi paket.

Berikut ini adalah nilai yang mungkin untuk status versi paket:

  • D iterbitkan - Versi paket berhasil dipublikasikan dan dapat diminta menggunakan manajer paket. Versi paket akan dimasukkan dalam daftar versi paket yang dikembalikan ke manajer paket, misalnya, dalam output darinpm view <package-name> versions. Semua aset versi paket tersedia dari repositori.

  • Bel um selesai — Klien telah mengunggah satu atau lebih aset untuk versi paket, tetapi belum menyelesaikannya dengan memindahkannya ke Published status. Saat ini hanya versi generik dan paket Maven yang dapat memiliki statusUnfinished. Untuk paket Maven, ini dapat terjadi ketika klien mengunggah satu atau lebih aset untuk versi paket tetapi tidak menerbitkan maven-metadata.xml file untuk paket yang menyertakan versi itu. Ketika versi paket Maven belum selesai, itu tidak akan disertakan dalam daftar versi yang dikembalikan ke klien seperti itu mvn ataugradle, sehingga tidak dapat digunakan sebagai bagian dari build. Paket generik dapat dengan sengaja disimpan di Unfinished negara bagian dengan memberikan unfinished flag saat memanggil PublishPackageVersion API. Paket generik dapat diubah ke Published status dengan menghilangkan ben unfinished dera, atau dengan memanggil UpdatePackageVersionsStatus API.

  • Tidak terdaftar — Aset versi paket tersedia untuk diunduh dari repositori, tetapi versi paket tidak termasuk dalam daftar versi yang dikembalikan ke pengelola paket. Misalnya, untuk paket npm, output npm view <package-name> versions tidak akan menyertakan versi paket. Ini berarti bahwa logika resolusi dependensi npm tidak akan memilih versi paket karena versi tidak muncul dalam daftar versi yang tersedia. Namun, jika versi paket Tidak Terdaftar telah direferensikan dalam file npm package-lock.json, versi paket masih boleh diunduh dan diinstal, misalnya, ketika menjalankan npm ci.

  • Diarsipkan — Aset versi paket tidak dapat lagi diunduh. Versi paket tidak akan dimasukkan dalam daftar versi yang dikembalikan ke manajer paket. Karena aset tidak tersedia, konsumsi versi paket oleh klien diblokir. Jika build aplikasi Anda tergantung pada versi yang diperbarui ke Diarsipkan, build akan rusak, dengan asumsi versi paket belum di-cache secara lokal. Anda tidak dapat menggunakan pengelola paket atau alat build untuk menerbitkan ulang versi paket yang Diarsipkan karena masih ada di repositori, tetapi Anda dapat mengubah status versi paket kembali ke Tidak Ter daftar atau Diter bitkan dengan API. UpdatePackageVersionsStatus

  • Dibuang — Versi paket tidak muncul dalam daftar dan aset tidak dapat diunduh dari repositori. Perbedaan utama antara Dis dan Archives adalah bahwa dengan status Dis, aset versi paket akan dihapus secara permanen oleh CodeArtifact. Untuk alasan ini, Anda tidak dapat memindahkan versi paket dari Dibuang ke Diarsipkan, Tidak Terdaftar, atau Dipublikasikan. Versi paket tidak dapat lagi digunakan karena aset telah dihapus. Setelah versi paket ditandai sebagai Di buang, Anda tidak akan lagi ditagih untuk penyimpanan aset paket.

Versi paket dari semua status akan dikembalikan secara default saat memanggil list-package-versions tanpa parameter. --status

Terlepas dari status yang tercantum sebelumnya, versi paket juga dapat dihapus dengan DeletePackageVersions API. Setelah dihapus, versi paket tidak lagi ada di repositori dan Anda dapat dengan bebas menerbitkan ulang versi paket tersebut menggunakan manajer paket atau alat build. Setelah versi paket dihapus, Anda tidak akan lagi ditagih untuk penyimpanan aset versi paket tersebut.

Nama paket, versi paket, dan normalisasi nama aset

CodeArtifact menormalkan nama paket, versi paket, dan nama aset sebelum menyimpannya, yang berarti nama atau versi di dalam CodeArtifact mungkin berbeda dari nama atau versi yang diberikan saat paket diterbitkan. Untuk informasi selengkapnya tentang bagaimana nama dan versi dinormalisasi CodeArtifact untuk setiap jenis paket, lihat dokumentasi berikut:

CodeArtifact tidak melakukan normalisasi pada format paket lainnya.