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.
Daftar Isi
Format paket yang didukung
AWS CodeArtifact mendukung format paket Cargo, generik, Maven, npm,, NuGetPyPI, Ruby, Swift.
Publikasi paket
Anda dapat mempublikasikan versi baru dari format paket apa pun yang didukung ke CodeArtifact repositori menggunakan alat sepertinpm
,,,twine
, Maven
Gradle
nuget
, dan. dotnet
Izin publikasi
Pengguna AWS Identity and Access Management (IAM) atau peran Anda harus memiliki izin untuk mempublikasikan ke repositori tujuan. Izin berikut diperlukan untuk mempublikasikan paket:
-
Kargo:
codeartifact:PublishPackageVersion
-
generik:
codeartifact:PublishPackageVersion
-
Maven:
codeartifact:PublishPackageVersion
dancodeartifact:PutPackageMetadata
-
npm:
codeartifact:PublishPackageVersion
-
NuGet:
codeartifact:PublishPackageVersion
dancodeartifact:ReadFromRepository
-
Python:
codeartifact:PublishPackageVersion
-
Ruby:
codeartifact:PublishPackageVersion
-
Cepat:
codeartifact:PublishPackageVersion
Dalam daftar izin sebelumnya, IAM kebijakan Anda harus menentukan package
sumber daya untuk izin dan izin. 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, misalkan Anda sudah menerbitkan paket Maven dengan JAR aset. 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 menerbitkan ulang nama aset yang sama dengan konten yang berbeda akan menghasilkan 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 atau JAR 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 (HTTPPUT), 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 danSDK. 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 output dari
npm 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 mempublikasikanmaven-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 itumvn
ataugradle
, sehingga tidak dapat digunakan sebagai bagian dari build. Paket generik dapat dengan sengaja disimpan diUnfinished
negara bagian dengan memberikanunfinished
bendera saat memanggil file. PublishPackageVersionAPI Paket generik dapat diubah kePublished
status dengan menghilangkanunfinished
bendera, atau dengan memanggil. UpdatePackageVersionsStatusAPI -
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 filenpm package-lock.json
, versi paket masih boleh diunduh dan diinstal, misalnya, ketika menjalankannpm 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. UpdatePackageVersionsStatus API
-
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 file 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.