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
Cuando un cliente (por ejemplo, npm) solicita una versión de paquete de un CodeArtifact repositorio denominado my_repo
que tiene varios repositorios ascendentes, puede ocurrir lo siguiente:
-
Si
my_repo
contiene la versión del paquete solicitada, se devuelve al cliente. -
Si
my_repo
no contiene la versión del paquete solicitada, la CodeArtifact busca enmy_repo
los repositorios originales. Si se encuentra la versión del paquete, se copia una referencia a la misma enmy_repo
y la versión del paquete se devuelve al cliente. -
Si
my_repo
ni sus repositorios ascendentes contienen la versión del paquete, se devuelve una respuesta HTTP 404Not Found
al cliente.
Al añadir repositorios ascendentes mediante el comando create-repository
o update-repository
, el orden en que se pasan al parámetro --upstreams
determina su prioridad cuando se solicita una versión de paquete. Especifique los repositorios ascendentes --upstreams
en el orden en que desee usarlos cuando se CodeArtifact solicite una versión de paquete. Para obtener más información, consulte Orden de prioridad del repositorio ascendente.
El número máximo de repositorios ascendentes directos permitidos para un repositorio es 10. Como los repositorios ascendentes directos también pueden tener sus propios repositorios ascendentes directos, CodeArtifact pueden buscar versiones de paquetes en más de 10 repositorios. El número máximo de repositorios consultados cuando CodeArtifact se solicita una versión de paquete es 25.
Retención de paquetes de repositorios ascendentes
Si la versión de un paquete solicitada se encuentra en un repositorio ascendente, se conserva una referencia a la misma y siempre está disponible en el repositorio descendente. 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).
Obtener paquetes a través de una relación ascendente
Si un CodeArtifact repositorio tiene una relación ascendente con un repositorio que tiene una conexión externa, 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 un repositorio ascendente denominado repo-B
. repo-B
tiene una conexión externa a https://npmjs.com
Si npm
está configurado para usar el repositorio repo-A
, la ejecución de npm install
desencadena la copia de paquetes de https://npmjs.comrepo-B
. También se incluyen las versiones instaladasrepo-A
. El siguiente ejemplo instala 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
Después de ejecutarse npm install
, repo-A
contiene solo la versión más reciente (lodash 4.17.20
), ya que es la versión de la que npm
obtuvo de repo-A
.
aws codeartifact list-package-versions --repository
repo-A
--domainmy_domain
\ --domain-owner111122223333
--formatnpm
--packagelodash
Ejemplo de salida:
{ "package": "
lodash
", "format": "npm
", "versions": [ { "version": "4.17.15", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ] }
Como repo-B
tiene una conexión externa a https://npmjs.comrepo-B
. Estas versiones de paquetes podrían haber sido recuperadas por cualquier repositorio descendente con una relación ascendente con repo-B
.
El contenido de repo-B
proporciona una forma de ver todos los paquetes y las versiones de los paquetes importados desde https://npmjs.comlodash
importadas a lo largo del tiempo, puede utilizar list-package-versions
de la siguiente manera.
aws codeartifact list-package-versions --repository
repo-B
--domainmy_domain
\ --domain-owner111122223333
--formatnpm
--packagelodash
--max-results 5
Ejemplo de salida:
{ "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" }
Retención de paquetes en repositorios intermedios
CodeArtifact permite encadenar los repositorios ascendentes. Por ejemplo, repo-A
puede tener repo-B
como un flujo ascendente y repo-B
puede tener repo-C
como un flujo ascendente. Esta configuración hace que las versiones del paquete en repo-B
y repo-C
estén disponibles de repo-A
.
Cuando un administrador de paquetes se conecta al repositorio repo-A
y obtiene una versión del paquete del repositorio repo-C
, la versión del paquete no se conservará en el repositorio repo-B
. La versión del paquete solo se conservará en el repositorio más descendente, en este ejemplo, 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
extrajo 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 repo-C
.
El comportamiento de retención de paquetes es similar cuando se extrae una versión de paquete de un repositorio externo, excepto que la versión del paquete siempre se conserva en el repositorio que tiene la conexión externa adjunta. Por ejemplo, repo-A
tiene repo-B
como flujo ascendente. repo-B
tiene repo-C
como conexión ascendente y repo-C
también tiene npmjs.com configurado como una conexión externa; consulte el siguiente diagrama.
Si un administrador de paquetes conectado a repo-A
solicita una versión de paquete, por ejemplo, lodash 4.17.20, y la versión del paquete no está presente en ninguno de los tres repositorios, se obtendrá de npmjs.com. Cuando se extraiga lodash 4.17.20, se conservará en repo-A
, ya que es el repositorio más avanzado y repo-C
ya que tiene conectada la conexión externa a npmjs.com. lodash 4.17.20 no se conservará en repo-B
porque se trata de un repositorio intermedio.