Demande de packages à partir de connexions externes - CodeArtifact

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 de packages à partir de connexions externes

Les sections suivantes décrivent comment demander un package à partir d'une connexion externe et le CodeArtifact comportement attendu lors de la demande d'un package.

Récupère des packages depuis une connexion externe

Pour récupérer des packages à partir d'une connexion externe une fois que vous les avez ajoutés à votre CodeArtifact référentiel, comme décrit dansConnect un CodeArtifact dépôt à un dépôt public, configurez votre gestionnaire de packages pour utiliser votre référentiel et installer les packages.

Note

Les instructions suivantes utilisentnpm, pour afficher les instructions de configuration et d'utilisation d'autres types de packagesUtilisation CodeArtifact avec MavenA l'aide deCodeArtifactavecNuGet, voir ouEn utilisantCodeArtifactavec Python.

Pour récupérer des packages à partir d'une connexion externe
  1. Configurez et authentifiez votre gestionnaire de packages auprès de votre CodeArtifact référentiel. Pour npm, utilisez la commande aws codeartifact login suivante.

    aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo
  2. Demandez le package depuis le référentiel public. Pournpm cela, utilisez lanpm install commande suivante en remplaçant lodash par le package que vous souhaitez installer.

    npm install lodash
  3. Une fois le package copié dans votre CodeArtifact référentiel, vous pouvez utiliser leslist-package-versions commandeslist-packages et pour l'afficher.

    aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo

    Exemple de sortie :

    { "packages": [ { "format": "npm", "package": "lodash" } ] }

    Lalist-package-versions commande répertorie toutes les versions du package copiées dans votre CodeArtifact référentiel.

    aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package lodash

    Exemple de sortie :

    { "defaultDisplayVersion: "1.2.5" "format": "npm", "package": "lodash", "namespace": null, "versions": [ { "version": "1.2.5", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ] }

Latence inférieure inférieure inférieure inférieure inférieure

Lorsque vous récupérez un package depuis un référentiel public à l'aide d'une connexion externe, il existe un délai entre le moment où le package est extrait du référentiel public et le moment où il est stocké dans votre CodeArtifact référentiel. Par exemple, supposons que vous ayez installé la version 1.2.5 du package npm « lodash » comme décrit dansRécupère des packages depuis une connexion externe. Bien que la commandenpm install lodash lodash ait été exécutée correctement, la version du package n'apparaît peut-être pas encore dans votre CodeArtifact référentiel. Il faut généralement environ 3 minutes pour que la version du package apparaisse dans votre référentiel, bien que cela puisse parfois prendre plus de temps.

En raison de cette latence, il se peut que vous ayez réussi à récupérer une version de package, mais que vous ne puissiez pas encore voir la version dans votre référentiel, dans la CodeArtifact console ou lorsque vous appelez les opérations de l' ListPackageVersions API ListPackages et. Une CodeArtifact fois que la version du package aura persisté de manière asynchrone, elle sera visible dans la console et via des demandes d'API.

CodeArtifact comportement lorsqu'un référentiel externe n'est pas disponible

Il arrive parfois qu'un dépôt externe soit en panne, ce qui signifie qu'il est CodeArtifact impossible de récupérer des packages depuis celui-ci, ou que la récupération des packages est beaucoup plus lente que d'habitude. Dans ce cas, les versions de packages déjà extraites d'un référentiel externe (par exemple npmjs.com) et stockées dans un CodeArtifact référentiel continueront d'être disponibles au téléchargement depuis CodeArtifact. Toutefois, les packages qui n'y sont pas déjà stockés CodeArtifact peuvent ne pas être disponibles, même lorsqu'une connexion externe à ce référentiel a été configurée. Par exemple, votre CodeArtifact référentiel peut contenir la version du package npm,lodash 4.17.19 car c'est ce que vous avez utilisé dans votre application jusqu'à présent. Lorsque vous souhaitez effectuer une mise à niveau vers4.17.20, vous CodeArtifact allez normalement récupérer cette nouvelle version sur npmjs.com et la stocker dans votre CodeArtifact référentiel. Toutefois, en cas de panne de npmjs.com, cette nouvelle version ne sera pas disponible. La seule solution consiste à réessayer ultérieurement, une fois que npmjs.com aura été restauré.

Les pannes de référentiel externe peuvent également affecter la publication de nouvelles versions de packages sur CodeArtifact. Dans un référentiel avec une connexion externe configurée, cela n' CodeArtifact autorisera pas la publication d'une version de package déjà présente dans le référentiel externe. Pour plus d'informations, veuillez consulter Vue d'ensemble des packages. Toutefois, dans de rares cas, une panne d'un référentiel externe peut signifier que CodeArtifact celui-ci ne dispose pas up-to-date d'informations sur les packages et les versions de packages présents dans un référentiel externe. Dans ce cas, cela CodeArtifact peut autoriser la publication d'une version de package qu'elle refuserait normalement.

Disponibilité de nouvelles versions de packages

Pour qu'une version de package figurant dans un référentiel public tel que npmjs.com soit disponible via un CodeArtifact référentiel, elle doit d'abord être ajoutée à un cache de métadonnées de package régional. Ce cache est géré par chaque CodeArtifact AWS région et contient des métadonnées qui décrivent le contenu des référentiels publics pris en charge. En raison de ce cache, il existe un délai entre le moment où une nouvelle version de package est publiée dans un référentiel public et le moment où elle est disponible à partir de CodeArtifact. Ce délai varie selon le type de colis.

Pour les packages npm, Python et Nuget, il peut y avoir un délai pouvant aller jusqu'à 30 minutes entre la publication d'une nouvelle version du package sur npmjs.com, pypi.org ou nuget.org et le moment où elle est disponible pour l'installation à partir d'un CodeArtifact référentiel. CodeArtifact synchronise automatiquement les métadonnées de ces deux référentiels pour s'assurer que le cache est à jour.

Pour les packages Maven, il peut y avoir un délai pouvant aller jusqu'à 3 heures entre la publication d'une nouvelle version du package dans un référentiel public et le moment où elle est disponible pour l'installation à partir d'un CodeArtifact référentiel. CodeArtifact vérifiera la présence de nouvelles versions d'un package au plus une fois toutes les 3 heures. La première demande pour un nom de package donné après l'expiration de la durée de vie du cache de 3 heures entraînera l'importation de toutes les nouvelles versions de ce package dans le cache régional.

Pour les packages Maven couramment utilisés, les nouvelles versions sont généralement importées toutes les 3 heures, car le taux élevé de demandes signifie que le cache est souvent mis à jour dès que sa durée de vie est expirée. Pour les packages peu utilisés, le cache ne disposera pas de la dernière version tant qu'une version du package n'est pas demandée à un CodeArtifact référentiel. Lors de la première demande, seules les versions précédemment importées seront disponibles CodeArtifact, mais cette demande entraînera la mise à jour du cache. Lors de demandes ultérieures, les nouvelles versions du package seront ajoutées au cache et pourront être téléchargées.

Importation de versions de packages contenant plusieurs actifs

Les packages Maven et Python peuvent avoir plusieurs actifs par version de package. Cela rend l'importation de packages de ces formats plus complexe que celle de npm et de NuGet packages, qui ne contiennent qu'un seul actif par version de package. Pour obtenir une description des ressources importées pour ces types de packages et de la manière dont les ressources récemment ajoutées sont mises à disposition, consultezDemande de packages Python depuis des connexions en amont et externes etDemande de packages Maven depuis des connexions en amont et externes.