

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.

# AWS CodeArtifact concepts
<a name="codeartifact-concepts"></a>

 Voici quelques concepts et termes à connaître lorsque vous les utilisez CodeArtifact. 

**Topics**
+ [

## Ressource
](#welcome-concepts-asset)
+ [

## Domain
](#welcome-concepts-domain)
+ [

## Référentiel
](#welcome-concepts-repository)
+ [

## Package
](#welcome-concepts-package)
+ [

## Groupe de packages
](#welcome-concepts-package-group)
+ [

## Espace de noms du package
](#welcome-concepts-package-namespace)
+ [

## Version du package
](#welcome-concepts-package-version)
+ [

## Révision de la version du package
](#welcome-concepts-package-version-revision)
+ [

## Référentiel en amont
](#welcome-concepts-upstream)

## Ressource
<a name="welcome-concepts-asset"></a>

Un *actif* est un fichier individuel stocké dans CodeArtifact un fichier associé à une version de package, tel qu'un fichier npm ou des `.tgz` fichiers Maven POM et JAR.

## Domain
<a name="welcome-concepts-domain"></a>

*Les référentiels sont agrégés dans une entité de niveau supérieur appelée domaine.* Toutes les ressources et métadonnées du package sont stockées dans le domaine, mais elles sont consommées via des référentiels. Un actif de package donné, tel qu'un fichier JAR Maven, est stocké une fois par domaine, quel que soit le nombre de référentiels dans lesquels il se trouve. Toutes les ressources et métadonnées d'un domaine sont chiffrées avec la même clé AWS KMS key (clé KMS) stockée dans AWS Key Management Service (AWS KMS).

Chaque dépôt est membre d'un seul domaine et ne peut pas être déplacé vers un autre domaine.

À l'aide d'un domaine, vous pouvez appliquer une politique organisationnelle à plusieurs référentiels. Cette approche vous permet de déterminer quels comptes peuvent accéder aux référentiels du domaine et quels référentiels publics peuvent être utilisés comme sources de packages.

Bien qu'une organisation puisse avoir plusieurs domaines, nous recommandons un seul domaine de production contenant tous les artefacts publiés. Ainsi, les équipes peuvent trouver et partager des packages au sein de votre organisation.

## Référentiel
<a name="welcome-concepts-repository"></a>

Un CodeArtifact *référentiel* contient un ensemble de [versions de packages](#welcome-concepts-package-version), chacune correspondant à un ensemble de [ressources](#welcome-concepts-asset). Les référentiels sont polyglottes : un référentiel unique peut contenir tous les types de packages pris en charge. Chaque référentiel expose des points de terminaison permettant de récupérer et de publier des packages à l'aide d'outils tels que la CLI nuget, la CLI npm, la CLI Maven (mvn) et pip. Vous pouvez créer jusqu'à 1 000 référentiels par domaine.

## Package
<a name="welcome-concepts-package"></a>

Un *package* est un ensemble de logiciels et de métadonnées nécessaires pour résoudre les dépendances et installer le logiciel. Dans CodeArtifact, un package se compose d'un nom de package, d'un espace de [noms](#welcome-concepts-package-namespace) facultatif tel que `@types` in`@types/node`, d'un ensemble de versions de package et de métadonnées au niveau du package telles que des balises npm.

AWS CodeArtifact [[prend en charge les formats de package [Cargo](using-cargo.md), [generic](using-generic.md), [Maven](using-maven.md), [npm](using-npm.md), [NuGet](using-nuget.md)[PyPI](using-python.md), Ruby et Swift.](using-swift.md)](using-ruby.md)

## Groupe de packages
<a name="welcome-concepts-package-group"></a>

*Les groupes de packages* peuvent être utilisés pour appliquer une configuration à plusieurs packages qui correspondent à un modèle défini en utilisant le format du package, l'espace de noms du package et le nom du package. Vous pouvez utiliser des groupes de packages pour configurer plus facilement les contrôles d'origine des packages pour plusieurs packages. Les contrôles d'origine des packages sont utilisés pour bloquer ou autoriser l'ingestion ou la publication de nouvelles versions de packages, ce qui protège les utilisateurs contre les actions malveillantes connues sous le nom d'attaques de substitution de dépendances.

## Espace de noms du package
<a name="welcome-concepts-package-namespace"></a>

Certains formats de package prennent en charge les noms de packages hiérarchiques afin d'organiser les packages en groupes logiques et d'éviter les collisions de noms. Par exemple, npm prend en charge les scopes. Pour plus d'informations, consultez la documentation de [npm scopes.](https://docs.npmjs.com/cli/v7/using-npm/scope) Le package npm `@types/node` a une portée `@types` et un nom de`node`. Il existe de nombreux autres noms de packages dans le `@types` champ d'application. Dans CodeArtifact, la portée (« types ») est appelée espace de noms du package et le nom (« nœud ») est appelé nom du package. Pour les packages Maven, l'espace de noms du package correspond au Maven GroupID. Le package Maven `org.apache.logging.log4j:log4j` possède un groupID (espace de noms de package) `org.apache.logging.log4j` et un artifactID (nom du package). `log4j` Pour les packages génériques, un [espace de noms](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PublishPackageVersion.html#namespace) est requis. Certains formats de package tels que PyPI ne prennent pas en charge les noms hiérarchiques avec un concept similaire à npm scope ou Maven GroupID. Sans moyen de regrouper les noms de packages, il peut être plus difficile d'éviter les collisions de noms.

## Version du package
<a name="welcome-concepts-package-version"></a>

Une *version de package* identifie la version spécifique d'un package, telle que`@types/node 12.6.9`. Le format et la sémantique du numéro de version varient en fonction des différents formats de package. Par exemple, les versions du package npm doivent être conformes à la spécification de [version sémantique](https://semver.org/). Dans CodeArtifact, une version de package comprend l'identifiant de version, les métadonnées au niveau de la version du package et un ensemble de ressources.

## Révision de la version du package
<a name="welcome-concepts-package-version-revision"></a>

 Une *révision de version de package* est une chaîne qui identifie un ensemble spécifique de ressources et de métadonnées pour une version de package. Chaque fois qu'une version de package est mise à jour, une nouvelle révision de version de package est créée. Par exemple, vous pouvez publier une archive de distribution source (**sdist**) pour une version de package Python, puis ajouter une **roue** Python contenant du code compilé à la même version. Lorsque vous publiez la **roue**, une nouvelle version du package est créée. 

## Référentiel en amont
<a name="welcome-concepts-upstream"></a>

Un référentiel est *situé en amont* d'un autre lorsque les versions des packages qu'il contient sont accessibles depuis le point de terminaison du référentiel du référentiel en aval. Cette approche fusionne efficacement le contenu des deux référentiels du point de vue du client. À l'aide de CodeArtifact, vous pouvez créer une relation en amont entre deux référentiels.