Meminta versi paket dengan repositori hulu - CodeArtifact

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 di my_repo repositori upstream. Jika versi paket ditemukan, referensi untuk itu akan disalin ke my_repo, dan versi paket dikembalikan ke klien.

  • Jika my_repo atau repositori hulu tidak berisi versi paket, respons HTTP 404 Not 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.

Jika npm dikonfigurasi untuk menggunakan repositori repo-A, menjalankan npm install akan memicu penyalinan paket dari https://npmjs.com ke repo-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 --domain my_domain \ --domain-owner 111122223333 --format npm --package lodash

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.com, semua versi paket yang diimpor dari https://npmjs.com disimpan di repo-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.com dari waktu ke waktu. Misalnya, untuk melihat semua versi paket lodash yang diimpor dari waktu ke waktu, Anda dapat menggunakan list-package-versions, sebagai berikut.

aws codeartifact list-package-versions --repository repo-B --domain my_domain \ --domain-owner 111122223333 --format npm --package lodash --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.

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.

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.