Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Meminta versi paket dengan repositori hulu
Ketika klien (misalnya, npm) meminta versi paket dari repositori bernama my_repo
yang memiliki beberapa CodeArtifact repositori upstream, berikut ini dapat terjadi:
-
Jika
my_repo
berisi versi paket yang diminta, akan dikembalikan ke klien. -
Jika
my_repo
tidak berisi versi paket yang diminta, CodeArtifact cari dimy_repo
repositori upstream. Jika versi paket ditemukan, referensi untuk itu akan disalin kemy_repo
, dan versi paket dikembalikan ke klien. -
Jika
my_repo
atau repositori hulu tidak berisi versi paket, respons HTTP 404Not Found
dikembalikan ke klien.
Ketika Anda menambahkan repositori hulu menggunakan perintah create-repository
atau update-repository
, urutan penerusan ke parameter --upstreams
menentukan prioritas ketika versi paket diminta. Tentukan repositori upstream dengan --upstreams
urutan yang CodeArtifact ingin Anda gunakan saat versi paket diminta. Untuk informasi selengkapnya, lihat Urutan prioritas repositori hulu.
Jumlah maksimum repositori hulu langsung yang diizinkan untuk satu repositori adalah 10. Karena repositori hulu langsung juga dapat memiliki repositori hulu langsung sendiri, CodeArtifact dapat mencari lebih dari 10 repositori untuk versi paket. Jumlah maksimum repositori yang CodeArtifact terlihat ketika versi paket diminta adalah 25.
Retensi paket dari repositori hulu
Jika versi paket yang diminta ditemukan di repositori hulu, referensi untuk itu dipertahankan dan selalu tersedia dari repositori hilir. Versi paket yang dipertahankan tidak terpengaruh oleh salah satu dari berikut ini:
-
Menghapus repositori hulu.
-
Memutuskan koneksi repositori hulu dari repositori hilir.
-
Menghapus versi paket dari repositori hulu.
-
Mengedit versi paket di repositori hulu (misalnya, dengan menambahkan aset baru ke dalamnya).
Mengambil paket melalui hubungan hulu
Jika CodeArtifact repositori memiliki hubungan hulu dengan repositori yang memiliki koneksi eksternal, permintaan paket yang tidak ada di repositori hulu disalin dari repositori eksternal. Misalnya, pertimbangkan konfigurasi berikut ini: repositori bernama repo-A
memiliki repositori hulu bernama repo-B
. repo-B
memiliki koneksi eksternal ke https://npmjs.com
![Diagram repositori hulu sederhana menunjukkan tiga repositori yang dirangkai bersama.](images/upstream-with-external.png)
Jika npm
dikonfigurasi untuk menggunakan repositori repo-A
, menjalankan npm install
akan memicu penyalinan paket dari https://npmjs.comrepo-B
. Versi yang dipasang juga ditarik ke dalam repo-A
. Contoh berikut menginstal lodash
.
$ npm config get registry https://
my_domain
-111122223333
.d.codeartifact.us-west-2
.amazonaws.com/npm/my-downstream-repo
/ $ npm install lodash + lodash@4.17.20 added 1 package from 2 contributors in 6.933s
Setelah menjalankan npm install
, repo-A
hanya berisi versi terbaru (lodash 4.17.20
) karena itu adalah versi yang diambil oleh npm
dari repo-A
.
aws codeartifact list-package-versions --repository
repo-A
--domainmy_domain
\ --domain-owner111122223333
--formatnpm
--packagelodash
Contoh output:
{ "package": "
lodash
", "format": "npm
", "versions": [ { "version": "4.17.15", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ] }
Karena repo-B
memiliki koneksi eksternal ke https://npmjs.comrepo-B
. Versi paket ini bisa saja diambil oleh repositori hilir mana pun dengan hubungan hulu ke repo-B
.
Isi repo-B
menyediakan cara untuk melihat semua paket dan versi paket yang diimpor dari https://npmjs.comlodash
yang diimpor dari waktu ke waktu, Anda dapat menggunakan list-package-versions
, sebagai berikut.
aws codeartifact list-package-versions --repository
repo-B
--domainmy_domain
\ --domain-owner111122223333
--formatnpm
--packagelodash
--max-results 5
Contoh output:
{ "package": "
lodash
", "format": "npm
", "versions": [ { "version": "0.10.0", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, { "version": "0.2.2", "revision": "REVISION-2-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, { "version": "0.2.0", "revision": "REVISION-3-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, { "version": "0.2.1", "revision": "REVISION-4-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, { "version": "0.1.0", "revision": "REVISION-5-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ], "nextToken": "eyJsaXN0UGFja2FnZVZlcnNpb25zVG9rZW4iOiIwLjIuMiJ9" }
Retensi paket dalam repositori menengah
CodeArtifact memungkinkan rantai repositori hulu. Misalnya, repo-A
dapat memiliki repo-B
sebagai hulu dan repo-B
dapat memiliki repo-C
sebagai hulu. Konfigurasi ini membuat versi paket di repo-B
dan repo-C
tersedia dari repo-A
.
![Diagram repositori hulu sederhana menunjukkan tiga repositori yang dirangkai bersama.](images/upstream-chaining.png)
Ketika manajer paket terhubung ke repositori repo-A
dan mengambil versi paket dari repositori repo-C
, versi paket tidak akan disimpan dalam repositori repo-B
. Versi paket hanya akan disimpan di repositori paling hilir, dalam contoh ini, repo-A
. Versi paket tidak akan disimpan dalam repositori menengah. Hal ini juga berlaku untuk rantai yang lebih panjang; misalnya jika ada empat repositori repo-A
, repo-B
, repo-C
, dan repo-D
dan manajer paket yang terhubung ke repo-A
mengambil versi paket dari repo-D
, versi paket akan disimpan di repo-A
tapi tidak di repo-B
atau repo-C
.
Perilaku penyimpanan paket serupa dengan saat menarik versi paket dari repositori eksternal, kecuali bahwa versi paket selalu disimpan di repositori yang memiliki koneksi eksternal terpasang. Misalnya, repo-A
memiliki repo-B
sebagai hulu. repo-B
memiliki repo-C
sebagai hulu, dan repo-C
juga memiliki npmjs.com yang dikonfigurasi sebagai koneksi eksternal; lihat diagram berikut.
![Diagram repositori hulu menunjukkan tiga repositori yang dirangkai bersama-sama dengan koneksi eksternal ke npmjs.com.](images/upstream-chaining-external.png)
Jika manajer paket yang terhubung ke repo-A
meminta versi paket, lodash 4.17.20 misalnya, dan versi paket tidak ada di salah satu dari tiga repositori, akan diambil dari npmjs.com. Saat lodash 4.17.20 diambil, akan disimpan di repo-A
karena itu adalah repositori paling hilir dan repo-C
karena memiliki koneksi eksternal ke npmjs.com terlampir. lodash 4.17.20 tidak akan disimpan di repo-B
karena merupakan repositori menengah.