

Amazon ya no CodeCatalyst está abierto a nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cómo migrar desde CodeCatalyst](migration.md).

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Solicitar una versión de paquete con repositorios ascendentes
<a name="packages-upstream-repositories-request"></a>

El siguiente ejemplo muestra los posibles escenarios en los que un administrador de paquetes solicita un paquete de un repositorio de CodeCatalyst paquetes que tiene repositorios ascendentes.

En este ejemplo, un administrador de paquetes, como `npm`, solicita una versión de paquete desde un repositorio de paquetes denominado `downstream`, que tiene muchos repositorios ascendentes. Cuando se solicita el paquete, puede ocurrir lo siguiente:
+  Si `downstream` contiene la versión del paquete solicitada, se devuelve al cliente. 
+  Si `downstream` no contiene la versión del paquete solicitada, la CodeCatalyst busca en sus repositorios `downstream` principales, en el orden de búsqueda configurado. Si se encuentra la versión del paquete, se copia una referencia a la misma en `downstream` y la versión del paquete se devuelve al cliente. 
+  Si ni `downstream` ni sus repositorios ascendentes contienen la versión del paquete, se devuelve una respuesta HTTP 404 `Not Found` al cliente.

 El número máximo de repositorios ascendentes directos permitidos para un repositorio es 10. El número máximo de CodeCatalyst búsquedas en los repositorios cuando se solicita una versión de paquete es de 25. 

## Retención de paquetes de repositorios ascendentes
<a name="package-retention-upstream-repos"></a>

Si la versión de un paquete solicitada se encuentra en un repositorio ascendente, se conservará una referencia a la misma, que estará siempre disponible en el repositorio que la solicitó. Esto garantiza que tenga acceso a los paquetes en caso de que haya una interrupción inesperada del repositorio ascendente. La versión del paquete retenida no se ve afectada por ninguno de los siguientes factores: 
+  Eliminar el repositorio ascendente. 
+  Desconectar el repositorio ascendente del repositorio descendente. 
+  Eliminar la versión del paquete del repositorio ascendente. 
+  Editar la versión del paquete en el repositorio ascendente (por ejemplo, añadiéndole un nuevo activo). 

## Obtención de paquetes a través de una relación ascendente
<a name="fetching-packages-through-an-upstream-relationship"></a>

CodeCatalyst puede buscar paquetes a través de varios repositorios enlazados denominados repositorios ascendentes. Si un repositorio de CodeCatalyst paquetes tiene una conexión ascendente a otro repositorio de CodeCatalyst paquetes que tiene una conexión ascendente a un repositorio de puerta de enlace, las solicitudes de paquetes que no estén en el repositorio ascendente se copian del repositorio externo. Por ejemplo, considere la siguiente configuración: un repositorio denominado `repo-A` tiene una conexión ascendente con el repositorio de puerta de enlace,. `npm-public-registry-gateway` `npm-public-registry-gateway`tiene una conexión ascendente al repositorio público de paquetes,. [https://npmjs.com](https://npmjs.com)

![Diagrama sencillo de un repositorio ascendente que muestra tres repositorios encadenados.](http://docs.aws.amazon.com/es_es/codecatalyst/latest/userguide/images/packages/upstream-with-external.png)


Si `npm` está configurado para usar el `repo-A` repositorio, la ejecución `npm install` inicia la copia de los paquetes desde [https://npmjs.com](https://npmjs.com)dentro. `npm-public-registry-gateway` También se incluyen las versiones instaladas`repo-A`. El siguiente ejemplo instala `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
```

Tras ejecutar `npm install`, `repo-A` contiene solo la versión más reciente (`lodash 4.17.20`), ya que esa es la versión que `npm` ha obtenido desde `repo-A`.

 Como `npm-public-registry-gateway` tiene una conexión ascendente externa a [https://npmjs.com](https://npmjs.com), todas las versiones de los paquetes desde las que se importan se [https://npmjs.com](https://npmjs.com)almacenan en él. `npm-public-registry-gateway` Estas versiones de paquetes podrían haber sido recuperadas por cualquier repositorio descendente con una conexión ascendente que llevase a `npm-public-registry-gateway`. 

El contenido de `npm-public-registry-gateway` proporciona una forma de ver todos los paquetes y las versiones de los paquetes que se han importado a [https://npmjs.com](https://npmjs.com)lo largo del tiempo.

## Retención de paquetes en repositorios intermedios
<a name="package-retention-intermediate-repositories"></a>

 CodeCatalyst permite encadenar repositorios ascendentes. Por ejemplo, `repo-A` puede tener a `repo-B` como flujo ascendente y `repo-B` puede tener a `repo-C` como flujo ascendente. Esta configuración hace que las versiones del paquete en `repo-B` y `repo-C` estén disponibles de `repo-A`. 

![Diagrama sencillo de un repositorio ascendente que muestra tres repositorios encadenados.](http://docs.aws.amazon.com/es_es/codecatalyst/latest/userguide/images/packages/upstream-chaining.png)


 Cuando un administrador de paquetes se conecta al repositorio `repo-A` y obtiene una versión de paquete del repositorio `repo-C`, la versión del paquete no se conserva en el repositorio `repo-B`. La versión del paquete solo se conserva en el repositorio descendente más lejano; en este caso, `repo-A`. No se conservará en ningún repositorio intermedio. Esto también es válido para cadenas más largas; por ejemplo, si hubiera cuatro repositorios (`repo-A`, `repo-B`, `repo-C` y `repo-D`) y un administrador de paquetes conectado a `repo-A` extrajera una versión de paquete de `repo-D`, la versión del paquete se conservaría en `repo-A`, pero no en `repo-B` ni en `repo-C`. 

El comportamiento de retención de paquetes es similar al de la extracción de una versión de paquete de un repositorio externo, con la diferencia de que la versión del paquete siempre se conserva en el repositorio de puerta de enlace que tenga la conexión ascendente directa al repositorio externo. Por ejemplo, `repo-A` tiene a `repo-B` como repositorio ascendente. `repo-B` tiene a `npm-public-registry-gateway` como repositorio ascendente, que tiene una conexión ascendente con el repositorio público **npmjs.com**; consulte el siguiente diagrama.

![Diagrama de repositorios ascendentes, con tres repositorios encadenados entre sí con una conexión externa ascendente a npmjs.com.](http://docs.aws.amazon.com/es_es/codecatalyst/latest/userguide/images/packages/upstream-chaining-external.png)


 Si un administrador de paquetes conectado a `repo-A` solicita una versión de paquete específica, como *lodash 4.17.20*, y la versión del paquete no está en ninguno de los tres repositorios, se obtendrá de **npmjs.com**. Al obtener *lodash 4.17.20*, este se conserva en `repo-A`, ya que es el repositorio descendente más lejano, y en `npm-public-registry-gateway`, ya que tiene conectada la conexión ascendente al repositorio público externo (**npmjs.com**). *lodash 4.17.20* no se conservará en `repo-B` porque es un repositorio intermedio. 