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 npm, PyPI, Maven,, Swift NuGet, Ruby, format paket generik.

Publikasi paket

Anda dapat mempublikasikan versi baru dari format paket apa pun yang didukung ke CodeArtifact repositori menggunakan alat sepertinpm,,,twine, Maven Gradlenuget, dan. dotnet

Izin publikasi

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

  • Maven: codeartifact:PublishPackageVersion dan codeartifact:PutPackageMetadata

  • npm: codeartifact:PublishPackageVersion

  • NuGet: codeartifact:PublishPackageVersion dan codeartifact:ReadFromRepository

  • Python: codeartifact:PublishPackageVersion

  • generik: codeartifact:PublishPackageVersion

  • Cepat: codeartifact:PublishPackageVersion

  • Ruby: codeartifact:PublishPackageVersion

Dalam daftar izin sebelumnya, kebijakan IAM Anda harus menentukan package sumber daya untuk izin dan. codeartifact:PublishPackageVersion codeartifact:PutPackageMetadata 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 Anda memiliki izin yang diperlukan. Untuk paket generik, Anda dapat menambahkan aset baru selama versi paket 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 mempublikasikan 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 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 yang dijelaskan sebelumnya, CodeArtifact mencegah Anda menerbitkan mydep 1.1 di repositori Anda jika CodeArtifact repositori publik dapat dijangkau dari repositori Anda melalui CodeArtifact 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 tambalan mydep 1.1 ke CodeArtifact repositori tempat Anda akan menggunakannya.

Batas ukuran aset untuk penerbitan

Ukuran maksimum aset paket yang dapat dipublikasikan dibatasi oleh kuota maksimum ukuran file Aset yang ditunjukkan padaKuota di AWS CodeArtifact. Misalnya, Anda tidak dapat mempublikasikan 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, mintalah peningkatan 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 dibatasi hingga ukuran maksimum kurang dari 2 GB.

Latensi penerbitan

Versi Package yang diterbitkan ke CodeArtifact repositori sering tersedia untuk diunduh dalam waktu kurang dari satu detik. Misalnya, jika Anda mempublikasikan 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 bisa 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 unduhan hingga tiga kali jika versi paket yang baru saja diterbitkan pada awalnya tidak tersedia pada upaya unduhan pertama.

catatan

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

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:

  • Diterbitkan - Versi paket berhasil diterbitkan dan dapat diminta menggunakan manajer paket. Versi paket akan disertakan dalam daftar versi paket yang dikembalikan ke manajer paket, misalnya, dalam outputnpm view <package-name> versions. Semua aset versi paket tersedia dari repositori.

  • Belum Selesai — Klien telah mengunggah satu atau lebih aset untuk versi paket, tetapi belum menyelesaikannya dengan memindahkannya ke negara bagian. Published Saat ini hanya versi paket generik dan Maven yang dapat memiliki status. Unfinished Untuk paket Maven, ini dapat terjadi ketika klien mengunggah satu atau lebih aset untuk versi paket tetapi tidak mempublikasikan 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 dalam Unfinished status dengan memberikan unfinished tanda saat memanggil API. PublishPackageVersion Paket generik dapat diubah ke Published status dengan menghilangkan unfinished bendera, atau dengan memanggil API. UpdatePackageVersionsStatus

  • Tidak terdaftar - Aset versi paket tersedia untuk diunduh dari repositori, tetapi versi paket tidak termasuk dalam daftar versi yang dikembalikan ke manajer 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 pembuatan untuk menerbitkan ulang versi paket yang Diarsipkan karena masih ada di repositori, tetapi Anda dapat mengubah status versi paket kembali ke Tidak Terdaftar atau Diterbitkan dengan API. UpdatePackageVersionsStatus

  • Disposed — Versi paket tidak muncul dalam daftar dan aset tidak dapat diunduh dari repositori. Perbedaan utama antara Disposed dan Archived adalah bahwa dengan status Disposed, 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 Disposed, Anda tidak akan lagi ditagih untuk penyimpanan aset paket.

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

Terlepas dari status yang tercantum sebelumnya, versi paket juga dapat dihapus dengan DeletePackageVersionsAPI. Setelah dihapus, versi paket tidak lagi ada di repositori dan Anda dapat dengan bebas menerbitkan ulang versi paket tersebut menggunakan pengelola paket atau alat pembuatan. 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 CodeArtifact mungkin berbeda dari nama atau versi yang disediakan saat paket diterbitkan. Untuk informasi selengkapnya tentang cara nama dan versi dinormalisasi CodeArtifact untuk setiap jenis paket, lihat dokumentasi berikut:

CodeArtifact tidak melakukan normalisasi pada format paket lainnya.