

Amazon CodeCatalyst tidak lagi terbuka untuk pelanggan baru. Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Lihat informasi yang lebih lengkap di [Cara bermigrasi dari CodeCatalyst](migration.md).

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
<a name="packages-upstream-repositories-request"></a>

Contoh berikut menunjukkan skenario yang mungkin ketika manajer paket meminta paket dari repositori CodeCatalyst paket yang memiliki repositori upstream.

Untuk contoh ini, manajer paket, seperti`npm`, meminta versi paket dari repositori paket bernama `downstream` yang memiliki beberapa repositori upstream. Ketika paket diminta, hal berikut dapat terjadi:
+  Jika `downstream` berisi versi paket yang diminta, akan dikembalikan ke klien. 
+  Jika `downstream` tidak berisi versi paket yang diminta, CodeCatalyst cari di repositori upstream, dalam `downstream` urutan pencarian yang dikonfigurasi. Jika versi paket ditemukan, referensi untuk itu akan disalin ke `downstream`, dan versi paket dikembalikan ke klien. 
+  Jika tidak ada `downstream` atau repositori upstream yang berisi versi paket, `Not Found` respons HTTP 404 dikembalikan ke klien.

 Jumlah maksimum repositori hulu langsung yang diizinkan untuk satu repositori adalah 10. Jumlah maksimum repositori yang CodeCatalyst dicari saat versi paket diminta adalah 25. 

## Retensi paket dari repositori hulu
<a name="package-retention-upstream-repos"></a>

Jika versi paket yang diminta ditemukan di repositori upstream, referensi untuk itu dipertahankan dan selalu tersedia di repositori yang memintanya. Ini memastikan bahwa Anda memiliki akses ke paket Anda jika ada pemadaman tak terduga dari repositori upstream. 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
<a name="fetching-packages-through-an-upstream-relationship"></a>

CodeCatalyst dapat mengambil paket melalui beberapa repositori tertaut yang disebut repositori upstream. Jika repositori CodeCatalyst paket memiliki koneksi upstream ke repositori CodeCatalyst paket lain yang memiliki koneksi upstream ke repositori gateway, permintaan paket yang tidak ada di repositori upstream disalin dari repositori eksternal. Misalnya, pertimbangkan konfigurasi berikut: repositori bernama `repo-A` memiliki koneksi upstream ke repositori gateway,. `npm-public-registry-gateway` `npm-public-registry-gateway`memiliki koneksi hulu ke repositori paket publik,. [https://npmjs.com](https://npmjs.com)

![Diagram repositori hulu sederhana menunjukkan tiga repositori yang dirangkai bersama.](http://docs.aws.amazon.com/id_id/codecatalyst/latest/userguide/images/packages/upstream-with-external.png)


Jika `npm` dikonfigurasi untuk menggunakan `repo-A` repositori, menjalankan `npm install` memulai penyalinan paket dari ke. [https://npmjs.com](https://npmjs.com)`npm-public-registry-gateway` Versi yang dipasang juga ditarik ke dalam `repo-A`. Contoh berikut menginstal `lodash`.

```
$ npm config get registry
https://packages.{{region}}.codecatalyst.aws/npm/{{space-name}}/{{proj-name}}/{{repo-name}}/
$ npm install lodash
+ lodash@4.17.20
added 1 package from 2 contributors in 6.933s
```

Setelah berjalan`npm install`, hanya `repo-A` berisi versi terbaru (`lodash 4.17.20`) karena itulah versi yang diambil oleh `npm` from`repo-A`.

 Karena `npm-public-registry-gateway` memiliki koneksi upstream eksternal ke [https://npmjs.com](https://npmjs.com), semua versi paket yang diimpor dari [https://npmjs.com](https://npmjs.com)disimpan di`npm-public-registry-gateway`. Versi paket ini dapat diambil oleh repositori hilir mana pun dengan koneksi hulu yang mengarah ke. `npm-public-registry-gateway` 

Isi `npm-public-registry-gateway` menyediakan cara bagi Anda untuk melihat semua paket dan versi paket yang diimpor dari waktu [https://npmjs.com](https://npmjs.com)ke waktu.

## Retensi paket dalam repositori menengah
<a name="package-retention-intermediate-repositories"></a>

 CodeCatalyst memungkinkan Anda untuk rantai repositori hulu. Misalnya, `repo-A` dapat memiliki `repo-B` sebagai repositori upstream dan `repo-B` dapat memiliki `repo-C` sebagai repositori upstream. 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.](http://docs.aws.amazon.com/id_id/codecatalyst/latest/userguide/images/packages/upstream-chaining.png)


 Ketika manajer paket terhubung ke repositori `repo-A` dan mengambil versi paket dari repositori`repo-C`, versi paket tidak dipertahankan dalam repositori. `repo-B` Versi paket hanya disimpan di repositori hilir terjauh, yang dalam contoh ini adalah. `repo-A` Itu tidak disimpan di repositori perantara apa pun. 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 untuk `repo-A` mengambil versi paket dari`repo-D`, versi paket akan dipertahankan `repo-A` tetapi tidak di atau. `repo-B` `repo-C` 

Perilaku retensi paket serupa saat menarik versi paket dari repositori paket publik, kecuali bahwa versi paket selalu dipertahankan di repositori gateway yang memiliki koneksi hulu langsung ke repositori publik. Misalnya, `repo-A` memiliki `repo-B` sebagai repositori hulu. `repo-B`memiliki `npm-public-registry-gateway` sebagai repositori upstream, yang memiliki koneksi upstream ke repositori publik, **npmjs.com**; lihat diagram di bawah ini.

![Diagram repositori hulu yang menunjukkan tiga repositori dirantai bersama dengan koneksi hulu eksternal ke npmjs.com.](http://docs.aws.amazon.com/id_id/codecatalyst/latest/userguide/images/packages/upstream-chaining-external.png)


 **Jika manajer paket terhubung untuk `repo-A` meminta versi paket tertentu, *lodash 4.17.20* misalnya, dan versi paket tidak ada di salah satu dari tiga repositori, itu akan diambil dari npmjs.com.** **Ketika *lodash 4.17.20* diambil, itu dipertahankan karena itu adalah repositori hilir terjauh dan `repo-A` `npm-public-registry-gateway` karena memiliki koneksi hulu ke repositori eksternal publik, npmjs.com.** *lodash 4.17.20* tidak dipertahankan `repo-B` karena itu adalah repositori perantara. 