

Amazon n' CodeCatalyst est plus ouvert aux nouveaux clients. Les clients existants peuvent continuer à utiliser le service normalement. Pour de plus amples informations, veuillez consulter [Comment effectuer une migration depuis CodeCatalyst](migration.md).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configuration et utilisation de référentiels en amont
<a name="packages-upstream-repositories"></a>

Vous pouvez connecter à la fois des référentiels de passerelle et d'autres référentiels de CodeCatalyst packages en amont de vos référentiels de packages. Cela permet à un client du gestionnaire de packages d'accéder aux packages contenus dans plusieurs référentiels de packages en utilisant un seul point de terminaison de référentiel de packages. Les principaux avantages de l'utilisation de référentiels en amont sont les suivants :
+ Il vous suffit de configurer votre gestionnaire de packages avec un seul point de terminaison de référentiel à extraire de plusieurs sources.
+ Les packages consommés à partir d'un référentiel en amont sont stockés dans votre référentiel en aval, ce qui garantit la disponibilité de vos packages même si le référentiel en amont connaît des pannes inattendues ou si les packages du référentiel en amont sont supprimés.

Vous pouvez ajouter des référentiels en amont lorsque vous créez un référentiel de packages. Vous pouvez également ajouter ou supprimer des référentiels en amont des référentiels de packages existants dans la CodeCatalyst console.

Lorsque vous ajoutez un référentiel de passerelle en tant que référentiel en amont, le référentiel de packages est connecté au référentiel de packages public correspondant du référentiel de passerelle. Pour obtenir la liste des référentiels de packages publics pris en charge, consultez[Référentiels de packages externes pris en charge et leurs référentiels de passerelle](packages-connect-external.md#packages-upstream-repositories-supported-external).

Vous pouvez lier plusieurs référentiels ensemble en tant que référentiels en amont. Par exemple, supposons que votre équipe crée un référentiel nommé `project-repo` et utilise déjà un autre référentiel nommé `team-repo` qui a été **npm-public-registry-gateway**ajouté en tant que référentiel en amont, qui est connecté au référentiel public npm,`npmjs.com`. Vous pouvez l'ajouter en `team-repo` tant que référentiel en amont à`project-repo`. Dans ce cas, il vous suffit de configurer votre gestionnaire de packages pour l'utiliser `project-repo` pour extraire des packages depuis `project-repo``team-repo`,`npm-public-registry-gateway`, et`npmjs.com`.

**Topics**
+ [Ajout d’un référentiel en amont](packages-upstream-repositories-add.md)
+ [Modification de l'ordre de recherche des référentiels en amont](packages-upstream-repositories-search-order.md)
+ [Demande d'une version de package avec des référentiels en amont](packages-upstream-repositories-request.md)
+ [Suppression d'un référentiel en amont](packages-upstream-repositories-remove.md)

# Ajout d’un référentiel en amont
<a name="packages-upstream-repositories-add"></a>

L'ajout d'un référentiel de packages public ou d'un autre CodeCatalyst référentiel de packages en tant que référentiel en amont à votre référentiel en aval met tous les packages du référentiel en amont à la disposition des gestionnaires de packages connectés au référentiel en aval.

**Pour ajouter un référentiel en amont**

1. Dans le panneau de navigation, choisissez **Packages**.

1. Sur la page **Référentiels de packages**, choisissez le référentiel de packages auquel vous souhaitez ajouter un référentiel en amont.

1. Sous le nom du référentiel de packages, choisissez **Upstreams**, **puis sélectionnez Select Upstream repositories**.

1. Dans **Sélectionner le type en amont**, choisissez l'une des options suivantes :
   + **Référentiels Gateway**

     Vous pouvez choisir parmi la liste des référentiels de passerelle disponibles.
**Note**  
Pour vous connecter aux autorités publiques chargées des packages externes, telles que Maven Central, npmjs.com ou Nuget Gallery, CodeCatalyst utilisez des référentiels de passerelle comme référentiels intermédiaires qui recherchent et stockent des packages extraits de référentiels externes. Cela permet d'économiser du temps et de transférer des données, car tous les référentiels de packages d'un projet utiliseront des packages provenant du référentiel intermédiaire de la passerelle. Pour de plus amples informations, veuillez consulter [Connexion à des référentiels externes publics](packages-connect-external.md).
   + **CodeCatalyst référentiels**

     Vous pouvez choisir parmi la liste des référentiels de CodeCatalyst packages disponibles dans votre projet.

1. **Lorsque vous avez sélectionné tous les référentiels que vous souhaitez ajouter en tant que référentiels en amont, choisissez **Sélectionner**, puis Enregistrer.**

   Pour plus d'informations sur la modification de l'ordre de recherche des référentiels en amont, consultez[Modification de l'ordre de recherche des référentiels en amont](packages-upstream-repositories-search-order.md).

Lorsque vous avez ajouté un dépôt en amont, vous pouvez utiliser un gestionnaire de packages connecté à votre dépôt local pour récupérer les packages depuis le dépôt en amont. Il n'est pas nécessaire de mettre à jour la configuration de votre gestionnaire de packages. Pour plus d'informations sur la demande de versions de package à partir d'un référentiel en amont, consultez[Demande d'une version de package avec des référentiels en amont](packages-upstream-repositories-request.md).

# Modification de l'ordre de recherche des référentiels en amont
<a name="packages-upstream-repositories-search-order"></a>

CodeCatalyst recherche les référentiels en amont dans leur ordre de recherche configuré. Lorsqu'un package est trouvé, la recherche CodeCatalyst s'arrête. Vous pouvez modifier l'ordre dans lequel les packages sont recherchés dans les référentiels en amont.

**Pour modifier l'ordre de recherche des référentiels en amont**

1. Dans le panneau de navigation, choisissez **Packages**.

1. Sur la page **Référentiels de packages**, choisissez le référentiel de packages dont vous souhaitez modifier l'ordre de recherche en amont.

1. Sous le nom du référentiel de packages, choisissez **Upstreams**.

1. Dans la section **Référentiels en amont**, vous pouvez consulter les référentiels en amont et leur ordre de recherche. Pour modifier l'ordre de recherche, faites glisser les référentiels dans la liste.

1. Lorsque vous avez terminé de modifier l'ordre de recherche des référentiels en amont, choisissez **Enregistrer**.

# Demande d'une version de package avec des référentiels en amont
<a name="packages-upstream-repositories-request"></a>

L'exemple suivant montre les scénarios possibles lorsqu'un gestionnaire de packages demande un package à partir d'un référentiel de CodeCatalyst packages contenant des référentiels en amont.

Dans cet exemple, un gestionnaire de packages, tel que`npm`, demande une version de package à partir d'un référentiel de packages nommé `downstream` qui possède plusieurs référentiels en amont. Lorsque le package est demandé, les événements suivants peuvent se produire :
+  S'il `downstream` contient la version du package demandée, il est renvoyé au client. 
+  S'il `downstream` ne contient pas la version du package demandée, CodeCatalyst recherchez-la dans `downstream` les référentiels en amont, dans l'ordre de recherche configuré. Si la version du package est trouvée, une référence à celle-ci est `downstream` copiée et la version du package est renvoyée au client. 
+  Si aucun `downstream` des référentiels en amont ne contient la version du package, une `Not Found` réponse HTTP 404 est renvoyée au client.

 Le nombre maximum de référentiels en amont autorisés pour un référentiel est de 10. Le nombre maximum de CodeCatalyst recherches dans les référentiels lorsqu'une version de package est demandée est de 25. 

## Conservation des packages depuis les référentiels en amont
<a name="package-retention-upstream-repos"></a>

Si une version de package demandée est trouvée dans un référentiel en amont, une référence à celle-ci est conservée et est toujours disponible dans le référentiel qui l'a demandée. Cela garantit que vous avez accès à vos packages en cas de panne inattendue du référentiel en amont. La version du package conservée n'est affectée par aucun des éléments suivants : 
+  Suppression du référentiel en amont. 
+  Déconnexion du référentiel en amont du référentiel en aval. 
+  Suppression de la version du package du référentiel en amont. 
+  Modification de la version du package dans le référentiel en amont (par exemple, en y ajoutant une nouvelle ressource). 

## Récupération de packages via une relation en amont
<a name="fetching-packages-through-an-upstream-relationship"></a>

CodeCatalyst peut récupérer des packages via plusieurs référentiels liés appelés référentiels en amont. Si un référentiel de CodeCatalyst packages possède une connexion en amont à un autre référentiel de CodeCatalyst packages doté d'une connexion en amont à un référentiel de passerelle, les demandes de packages ne figurant pas dans le référentiel en amont sont copiées depuis le référentiel externe. Par exemple, considérez la configuration suivante : un référentiel nommé `repo-A` possède une connexion en amont avec le référentiel de passerelle,`npm-public-registry-gateway`. `npm-public-registry-gateway`dispose d'une connexion en amont vers le référentiel public de packages, [https://npmjs.com](https://npmjs.com).

![\[Schéma de référentiel simple en amont montrant trois référentiels enchaînés.\]](http://docs.aws.amazon.com/fr_fr/codecatalyst/latest/userguide/images/packages/upstream-with-external.png)


S'il `npm` est configuré pour utiliser le `repo-A` référentiel, l'exécution `npm install` initie la copie des packages depuis et [https://npmjs.com](https://npmjs.com)vers`npm-public-registry-gateway`. Les versions installées sont également intégrées`repo-A`. L'exemple suivant permet d'installer. `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
```

Après l'exécution`npm install`, ne `repo-A` contient que la dernière version (`lodash 4.17.20`) car c'est la version qui a été récupérée par`npm`. `repo-A`

 Étant donné qu'il `npm-public-registry-gateway` dispose d'une connexion externe en amont à [https://npmjs.com](https://npmjs.com), toutes les versions de package importées [https://npmjs.com](https://npmjs.com)sont stockées dans`npm-public-registry-gateway`. Ces versions de package auraient pu être récupérées par n'importe quel dépôt en aval disposant d'une connexion en amont menant à`npm-public-registry-gateway`. 

Le contenu de `npm-public-registry-gateway` vous permet de voir tous les packages et versions de packages importés [https://npmjs.com](https://npmjs.com)au fil du temps.

## Rétention des packages dans des référentiels intermédiaires
<a name="package-retention-intermediate-repositories"></a>

 CodeCatalyst vous permet d'enchaîner les référentiels en amont. Par exemple, il `repo-A` peut être `repo-B` utilisé comme référentiel en amont `repo-B` ou en `repo-C` tant que référentiel en amont. Cette configuration permet aux versions du package d'être intégrées `repo-B` et `repo-C` disponibles auprès de`repo-A`. 

![\[Schéma de référentiel simple en amont montrant trois référentiels enchaînés.\]](http://docs.aws.amazon.com/fr_fr/codecatalyst/latest/userguide/images/packages/upstream-chaining.png)


 Lorsqu'un gestionnaire de packages se connecte au référentiel `repo-A` et récupère une version de package à partir du référentiel`repo-C`, la version du package n'est pas conservée dans le référentiel`repo-B`. La version du package n'est conservée que dans le référentiel le plus en aval, c'est-à-dire dans cet exemple. `repo-A` Il n'est conservé dans aucun référentiel intermédiaire. Cela est également vrai pour les chaînes plus longues ; par exemple, s'il y avait quatre référentiels :`repo-A`, `repo-B``repo-C`, et`repo-D`, et `repo-A` qu'un gestionnaire de packages était connecté pour `repo-A` récupérer une version de package`repo-D`, la version du package serait conservée dans ou pas dans `repo-B` ou. `repo-C` 

Le comportement de rétention des packages est similaire lors de l'extraction d'une version de package depuis un référentiel de packages public, sauf que la version du package est toujours conservée dans le référentiel de passerelle qui dispose d'une connexion directe en amont avec le référentiel public. Par exemple, `repo-A` a `repo-B` comme référentiel en amont. `repo-B`dispose `npm-public-registry-gateway` d'un dépôt en amont, qui dispose d'une connexion en amont au dépôt public, **npmjs.com** ; voir le schéma ci-dessous.

![\[Schéma du référentiel en amont montrant trois référentiels enchaînés avec une connexion amont externe à npmjs.com.\]](http://docs.aws.amazon.com/fr_fr/codecatalyst/latest/userguide/images/packages/upstream-chaining-external.png)


 **Si un gestionnaire de packages connecté à `repo-A` demande une version de package spécifique, *lodash 4.17.20* par exemple, et que la version du package n'est présente dans aucun des trois référentiels, elle sera récupérée sur npmjs.com.** **Lorsque *lodash 4.17.20* est récupéré, il est conservé `repo-A` car il s'agit du dépôt le plus en aval et `npm-public-registry-gateway` puisqu'il dispose d'une connexion en amont au référentiel externe public, npmjs.com.** *lodash 4.17.20* n'est pas conservé `repo-B` car il s'agit d'un dépôt intermédiaire. 

# Suppression d'un référentiel en amont
<a name="packages-upstream-repositories-remove"></a>

Si vous ne souhaitez plus accéder aux packages d'un référentiel en amont, vous pouvez supprimer le référentiel en amont d'un référentiel de packages.

**Avertissement**  
Lorsque vous supprimez un référentiel en amont, vous risquez de rompre les chaînes de relations en amont, ce qui pourrait interrompre vos projets ou vos builds.

**Pour supprimer un référentiel en amont**

1. Dans le panneau de navigation, choisissez **Packages**.

1. Sur la page **Référentiels de packages**, choisissez le référentiel de packages dont vous souhaitez supprimer un référentiel en amont.

1. Sous le nom du référentiel de packages, choisissez **Upstreams**.

1. Dans la section **Modifier les référentiels en amont**, recherchez le référentiel en amont que vous souhaitez supprimer et ![\[Remove\]](http://docs.aws.amazon.com/fr_fr/codecatalyst/latest/userguide/images/packages/remove.png) choisissez-le.

1. Lorsque vous avez terminé de supprimer les référentiels en amont, choisissez **Enregistrer**.