

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.

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

 Lorsqu'un client (par exemple, npm) demande une version de package à partir d'un CodeArtifact référentiel nommé `my_repo` contenant plusieurs référentiels en amont, les événements suivants peuvent se produire : 
+  S'il `my_repo` contient la version du package demandée, il est renvoyé au client. 
+  S'il `my_repo` ne contient pas la version du package demandée, CodeArtifact recherchez-la dans les `my_repo` référentiels en amont. Si la version du package est trouvée, une référence à celle-ci est `my_repo` copiée et la version du package est renvoyée au client. 
+  Si `my_repo` ni les référentiels en amont ne contiennent la version du package, une `Not Found` réponse HTTP 404 est renvoyée au client.

 Lorsque vous ajoutez des référentiels en amont à l'aide de la `update-repository` commande `create-repository` ou, l'ordre dans lequel ils sont transmis au `--upstreams` paramètre détermine leur priorité lorsqu'une version de package est demandée. Spécifiez les référentiels en amont `--upstreams` dans l'ordre que vous CodeArtifact souhaitez utiliser lorsqu'une version de package est demandée. Pour de plus amples informations, veuillez consulter [Ordre de priorité du référentiel en amont](repo-upstream-search-order.md). 

 Le nombre maximum de référentiels en amont autorisés pour un référentiel est de 10. Comme les référentiels en amont direct peuvent également avoir leurs propres référentiels en amont, ils CodeArtifact peuvent rechercher des versions de packages dans plus de 10 référentiels. Le nombre maximum de référentiels consultés CodeArtifact 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 en aval. 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érez des packages via une relation en amont
<a name="fetching-packages-through-an-upstream-relationship"></a>

Si un CodeArtifact référentiel entretient une relation en amont avec un référentiel doté d'une connexion externe, 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 un référentiel en amont nommé`repo-B`. `repo-B`dispose d'une connexion externe à [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/codeartifact/latest/ug/images/upstream-with-external.png)


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

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

```
aws codeartifact list-package-versions --repository repo-A --domain my_domain \
            --domain-owner 111122223333 --format npm --package lodash
```

Exemple de sortie :

```
{
    "package": "lodash",
    "format": "npm",
    "versions": [
        {
            "version": "4.17.15",
            "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC",
            "status": "Published"
        }
    ]
}
```

 Étant donné qu'il `repo-B` possède une connexion externe à [https://npmjs.com](https://npmjs.com), toutes les versions de package importées [https://npmjs.com](https://npmjs.com)sont stockées dans`repo-B`. Ces versions de package auraient pu être récupérées par n'importe quel dépôt en aval ayant une relation en amont avec. `repo-B` 

Le contenu de `repo-B` fournit un moyen de voir tous les packages et versions de packages importés [https://npmjs.com](https://npmjs.com)au fil du temps. Par exemple, pour voir toutes les versions du `lodash` package importées au fil du temps, vous pouvez utiliser `list-package-versions` ce qui suit.

```
aws codeartifact list-package-versions --repository repo-B --domain my_domain \
            --domain-owner 111122223333 --format npm --package lodash --max-results 5
```

Exemple de sortie :

```
{
    "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"
}
```

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

 CodeArtifact permet de chaîner des référentiels en amont. Par exemple, `repo-A` peut avoir `repo-B` comme amont et `repo-B` peut avoir `repo-C` comme 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/codeartifact/latest/ug/images/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 ne sera conservée que dans le référentiel le plus en aval, dans cet exemple,. `repo-A` Il ne sera conservé dans aucun dépôt 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 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-A` `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 externe, sauf que la version du package est toujours conservée dans le référentiel auquel la connexion externe est attachée. Par exemple, `repo-A` a `repo-B` en amont. `repo-B`possède `repo-C` une connexion amont et **npmjs.com** est `repo-C` également configuré en tant que connexion externe ; voir le schéma suivant.

![\[Schéma de dépôt en amont montrant trois référentiels enchaînés par une connexion externe à npmjs.com.\]](http://docs.aws.amazon.com/fr_fr/codeartifact/latest/ug/images/upstream-chaining-external.png)


 **Si un gestionnaire de packages connecté à `repo-A` demande une version de package, *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é car il s'agit du dépôt le plus en aval et `repo-A` `repo-C` car la connexion externe à npmjs.com y est attachée.** *lodash 4.17.20* ne sera pas conservé `repo-B` car il s'agit d'un dépôt intermédiaire. 