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
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 lesmy_repo
référentiels en amont. Si la version du package est trouvée, une référence à celle-ci estmy_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, uneNot 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 plus d’informations, consultez Ordre de priorité du référentiel en amont.
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 direct, 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
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
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
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 https://npmjs.comrepo-B
. Les versions installées sont également intégréesrepo-A
. L'exemple suivant installe. 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écutionnpm 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 parnpm
. repo-A
aws codeartifact list-package-versions --repository
repo-A
--domainmy_domain
\ --domain-owner111122223333
--formatnpm
--packagelodash
Exemple de sortie :
{ "package": "
lodash
", "format": "npm
", "versions": [ { "version": "4.17.15", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ] }
Comme il repo-B
dispose d'une connexion externe à https://npmjs.comrepo-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 depuis https://npmjs.comlodash
package importées au fil du temps, vous pouvez utiliser list-package-versions
ce qui suit.
aws codeartifact list-package-versions --repository
repo-B
--domainmy_domain
\ --domain-owner111122223333
--formatnpm
--packagelodash
--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
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 derepo-A
.
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érentielrepo-C
, la version du package n'est pas conservée dans le référentielrepo-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 packagerepo-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.
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.