

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.

# Travailler avec des packages dans CodeArtifact
<a name="packages"></a>

Les rubriques suivantes expliquent comment effectuer des actions sur des packages à l'aide de la CodeArtifact CLI et de l'API.

**Topics**
+ [Vue d'ensemble des packages](packages-overview.md)
+ [Lister les noms de packages](list-packages.md)
+ [Lister les versions des packages](list-packages-versions.md)
+ [Répertorier les actifs de la version](list-assets.md)
+ [Télécharger les ressources de la version du package](download-assets.md)
+ [Copier des packages entre des référentiels](copy-package.md)
+ [Supprimer un package ou une version de package](delete-package.md)
+ [Afficher et mettre à jour les détails et les dépendances des versions du package](describe-package-version.md)
+ [État de version du package de mise à jour](update-package-version-status.md)
+ [Modification des contrôles d'origine des packages](package-origin-controls.md)

# Vue d'ensemble des packages
<a name="packages-overview"></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](codeartifact-concepts.md#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.

**Contents**
+ [Formats de packages pris en charge](#supported-package-formats)
+ [Publication de packages](#package-publishing)
  + [Autorisations de publication](#package-publishing-permissions)
  + [Remplacement des actifs du package](#package-publishing-overwrite-assets)
  + [Packages privés et référentiels publics](#package-publishing-upstreams-direct)
  + [Publication de versions de packages corrigées](#package-publishing-patched-versions)
  + [Limites de taille des ressources pour la publication](#package-publishing-asset-size-limits)
  + [Latence de publication](#package-publishing-latency)
+ [État de la version du package](#package-version-status)
+ [Nom du package, version du package et normalisation du nom des actifs](#package-name-normalization)

## Formats de packages pris en charge
<a name="supported-package-formats"></a>

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)

## Publication de packages
<a name="package-publishing"></a>

 Vous pouvez publier de nouvelles versions de n'importe quel [format de package pris en charge](#supported-package-formats) CodeArtifact dans un référentiel à l'aide d'outils tels que `npm` `twine``Maven`,`Gradle`,`nuget`,, et`dotnet`.

### Autorisations de publication
<a name="package-publishing-permissions"></a>

Votre utilisateur ou rôle Gestion des identités et des accès AWS (IAM) doit être autorisé à publier dans le référentiel de destination. Les autorisations suivantes sont requises pour publier des packages :
+ **Cargaison :** `codeartifact:PublishPackageVersion`
+ **générique :** `codeartifact:PublishPackageVersion`
+ **Maven :** `codeartifact:PublishPackageVersion` et `codeartifact:PutPackageMetadata`
+ **npm :** `codeartifact:PublishPackageVersion`
+ **NuGet:** `codeartifact:PublishPackageVersion` et `codeartifact:ReadFromRepository`
+ **Python :** `codeartifact:PublishPackageVersion`
+ **Rubis :** `codeartifact:PublishPackageVersion`
+ **Rapide :** `codeartifact:PublishPackageVersion`

Dans la liste d'autorisations précédente, votre politique IAM doit spécifier la `package` ressource pour les `codeartifact:PutPackageMetadata` autorisations `codeartifact:PublishPackageVersion` et. Il doit également spécifier la `repository` ressource pour l'`codeartifact:ReadFromRepository`autorisation.

Pour plus d'informations sur les autorisations d' CodeArtifactentrée, consultez[AWS CodeArtifact référence aux autorisations](auth-and-access-control-permissions-reference.md).

### Remplacement des actifs du package
<a name="package-publishing-overwrite-assets"></a>

 Vous ne pouvez pas republier une ressource de package qui existe déjà avec un contenu différent. Supposons, par exemple, que vous ayez déjà publié un package Maven avec un actif `mypackage-1.0.jar` JAR. Vous ne pouvez publier à nouveau cette ressource que si la somme de contrôle des anciennes et des nouvelles ressources est identique. Pour republier la même ressource avec un nouveau contenu, supprimez d'abord la version du package à l'aide de la **delete-package-versions** commande. Toute tentative de republication du même nom de ressource avec un contenu différent entraînera une erreur de conflit HTTP 409. 

 Pour les formats de package qui prennent en charge plusieurs actifs (générique, PyPI et Maven), vous pouvez ajouter de nouveaux actifs portant des noms différents à une version de package existante, en supposant que vous disposez des autorisations requises. Pour les packages génériques, vous pouvez ajouter de nouveaux actifs tant que la version du package est dans l'`Unfinished`état. Étant donné que npm ne prend en charge qu'un seul actif par version de package, pour modifier une version de package publiée de quelque manière que ce soit, vous devez d'abord la supprimer à l'aide **delete-package-versions** de. 

 Si vous essayez de republier une ressource qui existe déjà (par exemple,`mypackage-1.0.jar`) et que le contenu de la ressource publiée et de la nouvelle ressource est identique, l'opération aboutira car elle est idempotente. 

### Packages privés et référentiels publics
<a name="package-publishing-upstreams-direct"></a>

 CodeArtifact ne publie pas les packages stockés dans CodeArtifact des référentiels publics tels que npmjs.com ou Maven Central. CodeArtifact importe des packages depuis des référentiels publics vers un CodeArtifact référentiel, mais ne déplace jamais les packages dans l'autre sens. Les packages que vous publiez dans CodeArtifact des référentiels restent privés et ne sont disponibles que pour les AWS comptes, les rôles et les utilisateurs auxquels vous avez accordé l'accès.

### Publication de versions de packages corrigées
<a name="package-publishing-patched-versions"></a>

 Parfois, vous souhaiterez peut-être publier une version de package modifiée, éventuellement disponible dans un dépôt public. Par exemple, vous avez peut-être découvert un bogue dans une dépendance d'application critique appelée`mydep 1.1`, et vous devez le corriger avant que le fournisseur du package ne puisse examiner et accepter la modification. Comme décrit précédemment, vous CodeArtifact empêche de publier `mydep 1.1` dans votre CodeArtifact référentiel si le référentiel public est accessible depuis votre CodeArtifact référentiel via des référentiels en amont et une connexion externe.

Pour contourner ce problème, publiez la version du package dans un autre CodeArtifact référentiel où le référentiel public n'est pas accessible. Utilisez ensuite l'`copy-package-versions`API pour copier la version corrigée de dans le CodeArtifact référentiel `mydep 1.1` à partir duquel vous allez la consommer. 

### Limites de taille des ressources pour la publication
<a name="package-publishing-asset-size-limits"></a>

La taille maximale d'une ressource de package pouvant être publiée est limitée par le quota **maximal de taille de fichier de ressource** indiqué dans[Quotas dans AWS CodeArtifact](service-limits.md). Par exemple, vous ne pouvez pas publier une roue Maven JAR ou Python dont la taille est supérieure au quota maximal de votre fichier de ressources actuel. Si vous devez y stocker des actifs plus importants CodeArtifact, demandez une augmentation de quota.

Outre le quota maximal de taille de fichier de ressource, la taille maximale d'une demande de publication pour les packages npm est de 2 Go. Cette limite est indépendante du quota maximal de taille du fichier de ressources et ne peut pas être augmentée avec une augmentation du quota. Dans une demande de publication npm (HTTP PUT), les métadonnées du package et le contenu de l'archive tar du package npm sont regroupés. De ce fait, la taille maximale réelle d'un package npm pouvant être publié varie et dépend de la taille des métadonnées incluses.

**Note**  
Les packages npm publiés sont limités à une taille maximale inférieure à 2 Go.

### Latence de publication
<a name="package-publishing-latency"></a>

Les versions de package publiées dans un CodeArtifact référentiel peuvent souvent être téléchargées en moins d'une seconde. Par exemple, si vous publiez une version de package npm sur CodeArtifact with`npm publish`, cette version devrait être disponible pour une `npm install` commande en moins d'une seconde. Cependant, la publication peut être incohérente et peut parfois prendre plus de temps. Si vous devez utiliser une version du package immédiatement après la publication, réessayez pour vous assurer que le téléchargement est fiable. Par exemple, après avoir publié la version du package, répétez le téléchargement jusqu'à trois fois si la version du package qui vient d'être publiée n'est pas initialement disponible lors de la première tentative de téléchargement.

**Note**  
L'importation d'une version de package depuis un dépôt public prend généralement plus de temps que la publication. Pour de plus amples informations, veuillez consulter [Latence de connexion externe](external-connection-requesting-packages.md#external-connection-latency).

## État de la version du package
<a name="package-version-status"></a>

Chaque version de package CodeArtifact possède un statut qui décrit l'état actuel et la disponibilité de la version du package. Vous pouvez modifier l'état de la version du package dans le SDK AWS CLI et. Pour de plus amples informations, veuillez consulter [État de version du package de mise à jour](update-package-version-status.md). 

Les valeurs possibles pour l'état de la version du package sont les suivantes :
+  **Publié** — La version du package a été publiée avec succès et peut être demandée à l'aide d'un gestionnaire de packages. La version du package sera incluse dans les listes de versions de package renvoyées aux gestionnaires de packages, par exemple dans la sortie de`npm view <package-name> versions`. Toutes les ressources de la version du package sont disponibles dans le référentiel. 
+  **Inachevé** : le client a chargé une ou plusieurs ressources pour une version de package, mais ne les a pas finalisées en les transférant dans l'`Published`état. Actuellement, seules les versions génériques et les versions de package Maven peuvent avoir un statut de`Unfinished`. Pour les packages Maven, cela peut se produire lorsque le client télécharge une ou plusieurs ressources pour une version de package mais ne publie pas de `maven-metadata.xml` fichier pour le package qui inclut cette version. Lorsqu'une version de package Maven est **inachevée**, elle ne sera pas incluse dans les listes de versions renvoyées aux clients et `mvn` ne pourra donc pas être utilisée dans le cadre d'une compilation. `gradle` Les packages génériques peuvent être délibérément conservés dans `Unfinished` cet état en fournissant l'`unfinished`indicateur lors de l'appel de l'[PublishPackageVersion](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PublishPackageVersion.html)API. L'`Published`état d'un package générique peut être changé en omettant le `unfinished` drapeau ou en appelant l'[UpdatePackageVersionsStatus](https://docs.aws.amazon.com//codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html)API. 
+  **Non répertorié** — Les ressources de la version du package peuvent être téléchargées depuis le référentiel, mais la version du package n'est pas incluse dans la liste des versions renvoyées aux gestionnaires de packages. Par exemple, pour un package npm, la sortie de n'`npm view <package-name> versions`inclura pas la version du package. Cela signifie que la logique de résolution des dépendances de npm ne sélectionnera pas la version du package car celle-ci n'apparaît pas dans la liste des versions disponibles. Toutefois, si la version du package **non répertorié** est déjà référencée dans un `npm package-lock.json` fichier, elle peut toujours être téléchargée et installée, par exemple lors de son exécution`npm ci`. 
+  **Archivé** — Les ressources de la version du package ne peuvent plus être téléchargées. La version du package ne sera pas incluse dans la liste des versions renvoyées aux gestionnaires de packages. Comme les actifs ne sont pas disponibles, la consommation de la version du package par les clients est bloquée. Si la version de votre application dépend d'une version mise à jour vers **Archivé**, la version sera interrompue, en supposant que la version du package n'a pas été mise en cache localement. [Vous ne pouvez pas utiliser un gestionnaire de packages ou un outil de génération pour republier une version de package **archivée** car elle est toujours présente dans le référentiel, mais vous pouvez redéfinir le statut de la version du package sur **Non répertorié** ou **Publié** avec l'UpdatePackageVersionsStatus API.](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html) 
+  **Supprimé** — La version du package n'apparaît pas dans les listes et les ressources ne peuvent pas être téléchargées depuis le référentiel. La principale différence entre **Disposé** et **Archivé** est que lorsque le statut **est** Disposé, les actifs de la version du package seront définitivement supprimés par CodeArtifact. Pour cette raison, vous ne pouvez pas déplacer une version de package du statut **Disposé** vers **Archivé**, **Non répertorié** ou **Publié**. La version du package ne peut plus être utilisée car les actifs ont été supprimés. Une fois qu'une version du package a été **marquée** comme supprimée, le stockage des actifs du package ne vous sera plus facturé. 

Les versions de package de tous les statuts seront renvoyées par défaut lors d' list-package-versionsun appel sans `--status` paramètre.

 Outre les états listés précédemment, une version de package peut également être supprimée avec l'[DeletePackageVersionsAPI](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DeletePackageVersions.html). Une fois supprimée, une version de package ne figure plus dans le référentiel et vous pouvez librement republier cette version de package à l'aide d'un gestionnaire de packages ou d'un outil de génération. Après la suppression d'une version de package, le stockage des actifs de cette version de package ne vous sera plus facturé. 

## Nom du package, version du package et normalisation du nom des actifs
<a name="package-name-normalization"></a>

CodeArtifact normalise les noms des packages, les versions des packages et les noms des actifs avant de les stocker, ce qui signifie que les noms ou les versions CodeArtifact peuvent être différents du nom ou de la version fournis lors de la publication du package. Pour plus d'informations sur la façon dont les noms et les versions sont normalisés CodeArtifact pour chaque type de package, consultez la documentation suivante :
+ [Normalisation du nom des paquets Python](python-name-normalization.md)
+ [NuGet normalisation du nom du package, de la version et du nom de l'actif](nuget-name-normalization.md)

CodeArtifact n'effectue pas de normalisation sur les autres formats de package.

# Lister les noms de packages
<a name="list-packages"></a>

Utilisez la `list-packages` commande in CodeArtifact pour obtenir une liste de tous les noms de packages d'un référentiel. Cette commande renvoie uniquement les noms des packages, pas les versions.

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

Exemple de sortie :

```
{
    "nextToken": "eyJidWNrZXRJZCI6I...",
    "packages": [
        {
            "package": "acorn",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "acorn-dynamic-import",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "ajv",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "ajv-keywords",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "anymatch",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "ast",
            "namespace": "webassemblyjs",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        }
    ]
}
```

## Répertorier les noms des packages npm
<a name="list-packages-npm"></a>

Pour répertorier uniquement les noms des packages npm, définissez la valeur de l'`--format`option sur. `npm`

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format npm
```

Pour répertorier les packages npm dans un espace de noms (npm *scope*), utilisez les `--namespace` options et. `--format`

**Important**  
La valeur de l'`--namespace`option ne doit pas inclure le début`@`. Pour rechercher l'espace de noms`@types`, définissez la valeur sur. *types*

**Note**  
L'`--namespace`option filtre par préfixe d'espace de noms. Tout package npm dont la portée commence par la valeur transmise à l'`--namespace`option sera renvoyé dans la `list-packages` réponse.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format npm --namespace types
```

Exemple de sortie :

```
{
    "nextToken": "eyJidWNrZXRJZ...",
    "packages": [
        {
            "package": "3d-bin-packing",
            "namespace": "types",
            "format": "npm"

        },
        {
            "package": "a-big-triangle",
            "namespace": "types",
            "format": "npm"

        },
        {
            "package": "a11y-dialog",
            "namespace": "types",
            "format": "npm"

        }
    ]
}
```

## Répertorier les noms des packages Maven
<a name="list-packages-maven"></a>

Pour répertorier uniquement les noms des packages Maven, définissez la valeur de l'`--format`option sur. `maven` Vous devez également spécifier l'ID du groupe Maven dans l'`--namespace`option.

**Note**  
L'`--namespace`option filtre par préfixe d'espace de noms. Tout package npm dont la portée commence par la valeur transmise à l'`--namespace`option sera renvoyé dans la `list-packages` réponse.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format maven --namespace org.apache.commons
```

Exemple de sortie :

```
{
    "nextToken": "eyJidWNrZXRJZ...",
    "packages": [
        {
            "package": "commons-lang3",
            "namespace": "org.apache.commons",
            "format": "maven"

        },
        {
            "package": "commons-collections4",
            "namespace": "org.apache.commons",
            "format": "maven"

        },
        {
            "package": "commons-compress",
            "namespace": "org.apache.commons",
            "format": "maven"

        }
    ]
}
```

## Répertorier les noms des paquets Python
<a name="list-packages-python"></a>

Pour répertorier uniquement les noms des packages Python, définissez la valeur de l'`--format`option sur`pypi`.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format pypi
```

## Filtrer par préfixe de nom de package
<a name="list-packages-package-prefix"></a>

 Pour renvoyer des packages commençant par une chaîne spécifiée, vous pouvez utiliser l'`--package-prefix`option. 

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format npm --package-prefix pat
```

Exemple de sortie :

```
{
    "nextToken": "eyJidWNrZXRJZ...",
    "packages": [
        {
            "package": "path",
            "format": "npm"

        },
        {
            "package": "pat-test",
            "format": "npm"

        },
        {
            "package": "patch-math3",
            "format": "npm"

        }
    ]
}
```

## Combinaisons d'options de recherche prises en charge
<a name="list-packages-option-combinations"></a>

Vous pouvez utiliser les `--package-prefix` options `--format``--namespace`, et dans n'importe quelle combinaison, sauf qu'`--namespace`elles ne peuvent pas être utilisées seules. La recherche de tous les packages npm dont la portée commence par `@types` nécessite que l'`--format`option soit spécifiée. L'utilisation `--namespace` en elle-même entraîne une erreur. 

 L'utilisation d'aucune des trois options est également prise en charge par `list-packages` et renverra tous les packages de tous les formats présents dans le référentiel. 

## Formater la sortie
<a name="list-packages-format-output"></a>

 Vous pouvez utiliser les paramètres disponibles pour toutes les AWS CLI commandes afin de rendre la `list-packages` réponse compacte et plus lisible. Utilisez le `--query` paramètre pour spécifier le format de chaque version de package renvoyée. Utilisez le `--output` paramètre pour formater la réponse en texte brut. 

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo \
  --output text --query 'packages[*].[package]'
```

Exemple de sortie :

```
accepts
array-flatten
body-parser
bytes
content-disposition
content-type
cookie
cookie-signature
```

 Pour plus d’informations, veuillez consulter [Contrôle de la sortie de commande à partir de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html) dans le *AWS Command Line Interface Guide de l’utilisateur*. 

## Valeurs par défaut et autres options
<a name="list-packages-defaults-options"></a>

 Par défaut, le nombre maximum de résultats renvoyés par `list-packages` est de 100. Vous pouvez modifier cette limite de résultats à l'aide de l'`--max-results`option.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo --max-results 20
```

La valeur maximale autorisée `--max-results` est de 1 000. Pour permettre de répertorier les packages dans des référentiels contenant plus de 1 000 packages, `list-packages` prend en charge la pagination à l'aide du `nextToken` champ dans la réponse. Si le nombre de packages dans le référentiel est supérieur à la valeur de`--max-results`, vous pouvez transmettre la valeur de `nextToken` à un autre appel de `list-packages` pour obtenir la page de résultats suivante.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo \
  --next-token rO0ABXNyAEdjb...
```

# Lister les versions des packages
<a name="list-packages-versions"></a>

Utilisez la `list-package-versions` commande in AWS CodeArtifact pour obtenir la liste de toutes les versions d'un nom de package dans un référentiel.

```
aws codeartifact list-package-versions --package kind-of \ 
--domain my_domain --domain-owner 111122223333 \
--repository my_repository --format npm
```

Exemple de sortie :

```
{
  "defaultDisplayVersion": "1.0.1",
  "format": "npm",
  "package": "kind-of",
  "versions": [
      {
          "version": "1.0.1",
          "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      },
      {
          "version": "1.0.0",
          "revision": "REVISION-SAMPLE-2-C752BEEF6D2CFC",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      },
      {
          "version": "0.1.2",
          "revision": "REVISION-SAMPLE-3-654S65A5C5E1FC",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      },
      {
          "version": "0.1.1",
          "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC"",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      },
      {
          "version": "0.1.0",
          "revision": "REVISION-SAMPLE-4-AF669139B772FC",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      }        
  ]
}
```

Vous pouvez ajouter le `--status` paramètre à l'`list-package-versions`appel pour filtrer les résultats en fonction de l'état de la version du package. Pour plus d'informations sur l'état de la version du package, consultez[État de la version du package](packages-overview.md#package-version-status). 

 Vous pouvez paginer la réponse à l'`list-package-versions`aide des `--next-token` paramètres `--max-results` et. Pour`--max-results`, spécifiez un entier compris entre 1 et 1 000 pour spécifier le nombre de résultats renvoyés sur une seule page. Sa valeur par défaut est 50. Pour renvoyer les pages suivantes, exécutez `list-package-versions` à nouveau et transmettez la `nextToken` valeur reçue dans la sortie de commande précédente à`--next-token`. Lorsque l'`--next-token`option n'est pas utilisée, la première page de résultats est toujours renvoyée. 

 La `list-package-versions` commande ne répertorie pas les versions des packages dans les référentiels en amont. Toutefois, les références aux versions de package d'un référentiel en amont qui ont été copiées dans votre référentiel lors d'une demande de version de package sont répertoriées. Pour de plus amples informations, veuillez consulter [Utilisation de référentiels en amont dans CodeArtifact](repos-upstream.md). 

## Répertorier les versions du package npm
<a name="list-packages-versions-npm"></a>

Pour répertorier toutes les versions de package d'un package npm, définissez la valeur de l'`--format`option sur. `npm`

```
aws codeartifact list-package-versions --package my_package --domain my_domain \ 
 --domain-owner 111122223333 --repository my_repo --format npm
```

Pour répertorier les versions du package npm dans un espace de noms spécifique (npm *scope*), utilisez l'option. `--namespace` La valeur de l'`--namespace`option ne doit pas inclure le début`@`. Pour rechercher l'espace de noms`@types`, définissez la valeur sur. *types*

```
aws codeartifact list-package-versions --package my_package --domain my_domain \
 --domain-owner 111122223333 --repository my_repo --format npm \
 --namespace types
```

## Répertorier les versions du package Maven
<a name="list-packages-versions-maven"></a>

Pour répertorier toutes les versions d'un package Maven, définissez la valeur de l'`--format`option sur. `maven` Vous devez également spécifier l'ID du groupe Maven dans l'`--namespace`option.

```
aws codeartifact list-package-versions --package my_package --domain my_domain \
 --domain-owner 111122223333 --repository my_repo --format maven \
 --namespace org.apache.commons
```

## Trier les versions
<a name="list-package-versions-sorting"></a>

 `list-package-versions`peut générer des versions triées par ordre décroissant en fonction de l'heure de publication (les versions les plus récentes sont répertoriées en premier). Utilisez le `--sort-by` paramètre avec une valeur de`PUBLISHED_TIME`, comme suit.

```
aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 --repository my_repository  \
--format npm --package webpack --max-results 5 --sort-by PUBLISHED_TIME
```

 Exemple de sortie : 

```
{

  "defaultDisplayVersion": "4.41.2",
  "format": "npm",
  "package": "webpack",
  "versions": [
      { 
        "version": "5.0.0-beta.7", 
        "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC",
        "status": "Published"
      },
      { 
        "version": "5.0.0-beta.6", 
        "revision": "REVISION-SAMPLE-2-C752BEEF6D2CFC",
        "status": "Published" 
      },
      { 
        "version": "5.0.0-beta.5", 
        "revision": "REVISION-SAMPLE-3-654S65A5C5E1FC",
        "status": "Published"
      },
      { 
        "version": "5.0.0-beta.4", 
        "revision": "REVISION-SAMPLE-4-AF669139B772FC",
        "status": "Published"
      },
      { 
        "version": "5.0.0-beta.3", 
        "revision": "REVISION-SAMPLE-5-C752BEE9B772FC",
        "status": "Published"
      }
  ],
  "nextToken": "eyJsaXN0UGF...."
}
```

## Version d'affichage par défaut
<a name="list-package-versions-default-version"></a>

 La valeur de retour pour `defaultDisplayVersion` dépend du format du package : 
+  Pour les packages génériques, Maven et PyPI, il s'agit de la version de package la plus récente publiée. 
+  Pour les packages npm, il s'agit de la version référencée par le `latest` tag. Si la `latest` balise n'est pas définie, il s'agit de la dernière version du package publiée. 

## Formater la sortie
<a name="list-package-versions-format-output"></a>

 Vous pouvez utiliser les paramètres disponibles pour toutes les AWS CLI commandes afin de rendre la `list-package-versions` réponse compacte et plus lisible. Utilisez le `--query` paramètre pour spécifier le format de chaque version de package renvoyée. Utilisez le `--output` paramètre pour formater la réponse sous forme de texte brut. 

```
aws codeartifact list-package-versions --package my-package-name --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format npm --output text --query 'versions[*].[version]'
```

Exemple de sortie :

```
0.1.1
0.1.2
0.1.0
3.0.0
```

 Pour plus d'informations, consultez la section [Contrôle de la sortie des commandes AWS CLI dans le](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html) *guide de AWS Command Line Interface l'utilisateur*. 

# Répertorier les actifs de la version
<a name="list-assets"></a>

Un *actif* est un fichier individuel (par exemple, un fichier npm ou un `.tgz` fichier Maven POM ou JAR) stocké dans CodeArtifact lequel est associé à une version de package. Vous pouvez utiliser la `list-package-version-assets` commande pour répertorier les actifs de chaque version de package.

Exécutez la `list-package-version-assets` commande pour renvoyer les informations suivantes à propos de chaque actif de votre AWS compte et de votre AWS région actuelle :
+  Son nom 
+  Sa taille, en octets. 
+  Ensemble de valeurs de hachage utilisées pour la validation de la somme de contrôle. 

Par exemple, utilisez la commande suivante pour répertorier les actifs du package Python`flatten-json`, version`0.1.7`.

```
aws codeartifact list-package-version-assets --domain my_domain --domain-owner 111122223333 \
 --repository my_repo --format pypi --package flatten-json \
 --package-version 0.1.7
```

Le résultat est présenté ci-dessous :

```
{
    "format": "pypi",
    "package": "flatten-json",
    "version": "0.1.7",
    "versionRevision": "REVISION-SAMPLE-1-C7F4S5E9B772FC",
    "assets": [
        {
            "name": "flatten_json-0.1.7-py3-none-any.whl",
            "size": 31520,
            "hashes": {
                "MD5": "41bba98d5b9219c43089eEXAMPLE-MD5",
                "SHA-1": "69b215c25dd4cda1d997a786ec6EXAMPLE-SHA-1",
                "SHA-256": "43f24850b7b7b7d79c5fa652418518fbdf427e602b1edabe6EXAMPLE-SHA-256",
                "SHA-512": "3947382ac2c180ee3f2aba4f8788241527c8db9dfe9f4b039abe9fc560aaf5a1fced7bd1e80a0dca9ce320d95f0864e0dec3ac4f2f7b2b2cbEXAMPLE-SHA-512"
            }
        },
        {
            "name": "flatten_json-0.1.7.tar.gz",
            "size": 2865,
            "hashes": {
                "MD5": "41bba98d5b9219c43089eEXAMPLE-MD5",
                "SHA-1": "69b215c25dd4cda1d997a786ec6EXAMPLE-SHA-1",
                "SHA-256": "43f24850b7b7b7d79c5fa652418518fbdf427e602b1edabe6EXAMPLE-SHA-256",
                "SHA-512": "3947382ac2c180ee3f2aba4f8788241527c8db9dfe9f4b039abe9fc560aaf5a1fced7bd1e80a0dca9ce320d95f0864e0dec3ac4f2f7b2b2cbEXAMPLE-SHA-512"
            }
        }
    ]
}
```

## Lister les actifs d'un package npm
<a name="list-assets-npm"></a>

Un package npm possède toujours un seul actif portant le nom de`package.tgz`. Pour répertorier les actifs d'un package npm délimité, incluez la portée dans l'`--namespace`option.

```
aws codeartifact list-package-version-assets --domain my_domain --domain-owner 111122223333 \
 --repository my_repo --format npm --package webpack \
 --namespace types --package-version 4.9.2
```

## Lister les actifs d'un package Maven
<a name="list-assets-maven"></a>

Pour répertorier les actifs d'un package Maven, incluez l'espace de noms du package dans l'`--namespace`option. Pour répertorier les actifs du package Maven : `commons-cli:commons-cli`

```
aws codeartifact list-package-version-assets --domain my_domain --domain-owner 111122223333 \
 --repository my_repo --format maven --package commons-cli \
 --namespace commons-cli --package-version 1.0
```

# Télécharger les ressources de la version du package
<a name="download-assets"></a>

Un *actif* est un fichier individuel (par exemple, un fichier npm ou un `.tgz` fichier Maven POM ou JAR) stocké dans CodeArtifact lequel est associé à une version de package. Vous pouvez télécharger les ressources du package à l'aide du`get-package-version-assets command`. Cela vous permet de récupérer des actifs sans utiliser un client de gestionnaire de packages tel que `npm` ou`pip`. Pour télécharger une ressource, vous devez fournir le nom de la ressource, qui peut être obtenu à l'aide de la `list-package-version-assets` commande. Pour plus d'informations, voir[Répertorier les actifs de la version](list-assets.md). La ressource sera téléchargée sur le stockage local avec un nom de fichier que vous spécifiez.

L'exemple suivant télécharge la *guava-27.1-jre.jar* ressource depuis le package Maven *com.google.guava:guava* avec la version*27.1-jre*.

```
aws codeartifact get-package-version-asset --domain my_domain --domain-owner 111122223333 --repository my_repo \
    --format maven --namespace com.google.guava --package guava --package-version 27.1-jre \
    --asset guava-27.1-jre.jar \
    guava-27.1-jre.jar
```

 Dans cet exemple, le nom du fichier a été spécifié *guava-27.1-jre.jar* par le dernier argument de la commande précédente, de sorte que la ressource téléchargée sera nommée*guava-27.1-jre.jar*. 

Le résultat de la commande sera le suivant :

```
{
    "assetName": "guava-27.1-jre.jar",
    "packageVersion": "27.1-jre",
    "packageVersionRevision": "YGp9ck2tmy03PGSxioclfYzQ0BfTLR9zzhQJtERv62I="
}
```

**Note**  
Pour télécharger des ressources à partir d'un package npm délimité, incluez la portée dans l'`--namespace`option. Le `@` symbole doit être omis lors de l'utilisation`--namespace`. Par exemple, si le champ d'application est`@types`, utilisez`--namespace types`.

 Le téléchargement de ressources à l'aide de cette ressource `get-package-version-asset` nécessite une `codeartifact:GetPackageVersionAsset` autorisation sur la ressource du package. *Pour plus d'informations sur les politiques d'autorisation basées sur les ressources, consultez la section Politiques [basées sur les ressources dans le Guide de l'](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based)utilisateur.Gestion des identités et des accès AWS * 

# Copier des packages entre des référentiels
<a name="copy-package"></a>

Vous pouvez copier les versions des packages d'un référentiel à un autre dans CodeArtifact. Cela peut être utile pour des scénarios tels que les flux de travail de promotion de packages ou le partage de versions de packages entre des équipes ou des projets. Les référentiels source et de destination doivent se trouver dans le même domaine pour copier les versions des packages.

## Autorisations IAM requises pour copier des packages
<a name="copypackageversions-iam-actions"></a>

Pour copier des versions de package CodeArtifact, l'utilisateur appelant doit disposer des autorisations IAM requises et la politique basée sur les ressources attachée aux référentiels source et de destination doit disposer des autorisations requises. Pour plus d'informations sur les politiques d'autorisation et les CodeArtifact référentiels basés sur les ressources, consultez. [Politiques de référentiel](repo-policies.md)

L'utilisateur appelant `copy-package-versions` doit avoir l'`ReadFromRepository`autorisation sur le référentiel source et l'`CopyPackageVersions`autorisation sur le référentiel de destination.

Le référentiel source doit disposer de l'`ReadFromRepository`autorisation et le référentiel de destination doit disposer de l'`CopyPackageVersions`autorisation attribuée au compte IAM ou à l'utilisateur qui copie des packages. Les politiques suivantes sont des exemples de politiques de référentiel à ajouter au référentiel source ou au référentiel de destination à l'aide de la `put-repository-permissions-policy` commande. Remplacez *111122223333* par l'identifiant du compte appelant`copy-package-versions`.

**Note**  
L'appel `put-repository-permissions-policy` remplacera la politique de dépôt actuelle, s'il en existe une. Vous pouvez utiliser la `get-repository-permissions-policy` commande pour voir s'il existe une politique. Pour plus d'informations, consultez[Lire une politique](repo-policies.md#reading-a-policy). Si une politique existe, vous souhaiterez peut-être y ajouter ces autorisations au lieu de la remplacer.

**Exemple de politique d'autorisation du référentiel source**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codeartifact:ReadFromRepository"
            ],
            "Effect": "Allow",
            "Principal": {
                 "AWS": "arn:aws:iam::111122223333:root"
            },
            "Resource": "*"
        }
    ]
}
```

------

**Exemple de politique d'autorisation du référentiel de destination**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codeartifact:CopyPackageVersions"
            ],
            "Effect": "Allow",
            "Principal": {
                 "AWS": "arn:aws:iam::111122223333:root"
            },
            "Resource": "*"
        }
    ]
}
```

------

## Copier les versions du package
<a name="copy-package-versions"></a>

Utilisez la `copy-package-versions` commande in CodeArtifact pour copier une ou plusieurs versions de package d'un référentiel source vers un référentiel de destination dans le même domaine. L'exemple suivant copiera les versions 6.0.2 et 4.0.0 d'un package npm nommé `my-package` du `my_repo` référentiel vers le référentiel. `repo-2`

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 --source-repository my_repo \
 --destination-repository repo-2 --package my-package --format npm \
 --versions 6.0.2 4.0.0
```

Vous pouvez copier plusieurs versions du même nom de package en une seule opération. Pour copier des versions de différents noms de packages, vous devez appeler chacun `copy-package-versions` d'entre eux.

La commande précédente produira le résultat suivant, en supposant que les deux versions puissent être copiées avec succès.

```
{
   "successfulVersions": {
        "6.0.2": {
            "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC",
            "status": "Published"
        },
        "4.0.0": {
            "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC",
            "status": "Published"
        }
    },
    "failedVersions": {}
}
```

## Copier un package depuis des référentiels en amont
<a name="copy-package-upstream"></a>

Normalement, `copy-package-versions` ne recherche dans le référentiel spécifié par l'`--source-repository`option que les versions à copier. Toutefois, vous pouvez copier des versions à la fois du référentiel source et de ses référentiels en amont à l'aide de `--include-from-upstream` cette option. Si vous utilisez le CodeArtifact SDK, appelez l'`CopyPackageVersions`API avec le `includeFromUpstream` paramètre défini sur true. Pour de plus amples informations, veuillez consulter [Utilisation de référentiels en amont dans CodeArtifact](repos-upstream.md).

## Copier un package npm délimité
<a name="copying-a-scoped-npm-package"></a>

 Pour copier une version de package npm dans une portée, utilisez l'`--namespace`option pour spécifier la portée. Par exemple, pour copier le package`@types/react`, utilisez`--namespace types`. Le `@` symbole doit être omis lors de l'utilisation`--namespace`.

```
aws codeartifact copy-package-versions  --domain my_domain --domain-owner 111122223333 --source-repository repo-1 \
 --destination-repository repo-2 --format npm --namespace types \
 --package react --versions 0.12.2
```

## Copier les versions du package Maven
<a name="copying-a-maven-package"></a>

Pour copier des versions de package Maven entre des référentiels, spécifiez le package à copier en transmettant l'ID du groupe Maven avec l'`--namespace`option et l'ArtifactID Maven avec l'option. `--name` Par exemple, pour copier une seule version de `com.google.guava:guava` :

```
 aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333  \
 --source-repository my_repo --destination-repository repo-2 --format maven --namespace com.google.guava \
 --package guava --versions 27.1-jre
```

Si la version du package est copiée avec succès, le résultat sera similaire à ce qui suit.

```
{
    "successfulVersions": {
        "27.1-jre": {
            "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC",
            "status": "Published"
        }
    },
    "failedVersions": {}
}
```

## Versions qui n'existent pas dans le référentiel source
<a name="versions-that-do-not-exist-in-the-source-repository"></a>

Si vous spécifiez une version qui n'existe pas dans le référentiel source, la copie échouera. Si certaines versions existent dans le référentiel source et d'autres non, toutes les versions ne seront pas copiées. Dans l'exemple suivant, la version 0.2.0 du package `array-unique` npm est présente dans le référentiel source, mais pas la version 5.6.7 :

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 \
         --source-repository my_repo --destination-repository repo-2 --format npm \
         --package array-unique --versions 0.2.0 5.6.7
```

Le résultat de ce scénario sera similaire au suivant.

```
{
    "successfulVersions": {},
    "failedVersions": {
        "0.2.0": {
            "errorCode": "SKIPPED",
            "errorMessage": "Version 0.2.0 was skipped"
        },
        "5.6.7": {
            "errorCode": "NOT_FOUND",
            "errorMessage": "Could not find version 5.6.7"
        }
    }
}
```

Le code `SKIPPED` d'erreur est utilisé pour indiquer que la version n'a pas été copiée dans le référentiel de destination car aucune autre version n'a pu être copiée. 

## Versions qui existent déjà dans le référentiel de destination
<a name="versions-that-already-exist-in-the-destination-repository"></a>

 Lorsqu'une version de package est copiée dans un référentiel où elle existe déjà, CodeArtifact compare ses actifs de package et les métadonnées au niveau de la version du package dans les deux référentiels.

 Si les actifs et les métadonnées de la version du package sont identiques dans les référentiels source et de destination, aucune copie n'est effectuée mais l'opération est considérée comme réussie. Cela signifie que c'`copy-package-versions`est idempotent. Dans ce cas, la version qui était déjà présente dans les référentiels source et de destination ne sera pas répertoriée dans la sortie de`copy-package-versions`.

Dans l'exemple suivant, deux versions du package npm `array-unique` sont présentes dans le référentiel `repo-1` source. La version 0.2.1 est également présente dans le référentiel de destination `dest-repo` et la version 0.2.0 ne l'est pas.

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 \
         --source-repository my_repo --destination-repository repo-2 --format npm --package array-unique \
         --versions 0.2.1 0.2.0
```

Le résultat de ce scénario sera similaire au suivant.

```
{
    "successfulVersions": {
        "0.2.0": {
            "revision": "Yad+B1QcBq2kdEVrx1E1vSfHJVh8Pr61hBUkoWPGWX0=",
            "status": "Published"
        }
    },
    "failedVersions": {}
}
```

La version 0.2.0 est répertoriée `successfulVersions` car elle a été copiée avec succès du référentiel source vers le référentiel de destination. La version 0.2.1 n'apparaît pas dans la sortie car elle était déjà présente dans le référentiel de destination.

 Si la version du package, les ressources ou les métadonnées diffèrent dans les référentiels source et de destination, l'opération de copie échouera. Vous pouvez utiliser le `--allow-overwrite` paramètre pour forcer un remplacement. 

Si certaines versions existent dans le référentiel de destination et d'autres non, toutes les versions ne seront pas copiées. Dans l'exemple suivant, la version 0.3.2 du package `array-unique` npm est présente à la fois dans les référentiels source et de destination, mais le contenu de la version du package est différent. La version 0.2.1 est présente dans le référentiel source mais pas dans le référentiel de destination.

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 \
         --source-repository my_repo --destination-repository repo-2 --format npm --package array-unique \
         --versions 0.3.2 0.2.1
```

Le résultat de ce scénario sera similaire au suivant.

```
{
    "successfulVersions": {},
    "failedVersions": {
        "0.2.1": {
            "errorCode": "SKIPPED",
            "errorMessage": "Version 0.2.1 was skipped"
        },
        "0.3.2": {
            "errorCode": "ALREADY_EXISTS",
            "errorMessage": "Version 0.3.2 already exists"
        }
    }
}
```

La version 0.2.1 est marquée comme `SKIPPED` car elle n'a pas été copiée dans le référentiel de destination. Il n'a pas été copié car la copie de la version 0.3.2 a échoué car elle était déjà présente dans le référentiel de destination, mais pas identique dans les référentiels source et de destination.

## Spécification d'une révision de version de package
<a name="specify-package-version-revision"></a>

 Une révision de version de package est une chaîne qui spécifie un ensemble spécifique de ressources et de métadonnées pour une version de package. Vous pouvez spécifier une révision de version de package pour copier les versions de package dans un état spécifique. Pour spécifier une révision de version de package, utilisez le `--version-revisions` paramètre pour transmettre une ou plusieurs versions de package séparées par des virgules et les paires de révisions de version de package à la `copy-package-versions` commande. 

**Note**  
Vous devez spécifier le `--versions` ou le `--version-revisions` paramètre avec`copy-package-versions`. Vous ne pouvez pas spécifier les deux. 

L'exemple suivant ne copiera la version 0.3.2 du package que `my-package` si elle est présente dans le référentiel source avec la révision `REVISION-1-SAMPLE-6C81EFF7DA55CC` de la version du package.

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 --source-repository repo-1 \
 --destination-repository repo-2 --format npm --namespace my-namespace \
 --package my-package --version-revisions 0.3.2=REVISION-1-SAMPLE-6C81EFF7DA55CC
```

L'exemple suivant copie deux versions du package`my-package`, 0.3.2 et 0.3.13. La copie ne réussira que si, dans le référentiel source, la version 0.3.2 de `my-package` contient une révision `REVISION-1-SAMPLE-6C81EFF7DA55CC` et la version 0.3.13 une révision. `REVISION-2-SAMPLE-55C752BEE772FC`

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 --source-repository repo-1 \
 --destination-repository repo-2 --format npm --namespace my-namespace \
 --package my-package --version-revisions 0.3.2=REVISION-1-SAMPLE-6C81EFF7DA55CC,0.3.13=REVISION-2-SAMPLE-55C752BEE772FC
```

 Pour rechercher les révisions d'une version de package, utilisez la `list-package-versions` commande `describe-package-version` ou. 

 Pour plus d'informations, veuillez consulter les sections [Révision de la version du package](codeartifact-concepts.md#welcome-concepts-package-version-revision) et [CopyPackageVersion](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_CopyPackageVersions.html) (français non garanti) de la *Référence d'API CodeArtifact *. 

## Copier les packages npm
<a name="copying-npm-packages"></a>

 Pour plus d'informations sur `copy-package-versions` le comportement avec les packages npm, consultez les [balises npm et l' CopyPackageVersionsAPI](npm-tags.md#tags-and-cpv). 

# Supprimer un package ou une version de package
<a name="delete-package"></a>

Vous pouvez supprimer une ou plusieurs versions de package à la fois à l'aide de la `delete-package-versions` commande. Pour supprimer complètement un package d'un référentiel, y compris toutes les versions et configurations associées, utilisez la `delete-package` commande. Un package peut exister dans un référentiel sans aucune version de package. Cela peut se produire lorsque toutes les versions sont supprimées à l'aide de la `delete-package-versions` commande, ou si le package a été créé sans aucune version à l'aide de l'opération `put-package-origin-configuration` API (voir[Modification des contrôles d'origine des packages](package-origin-controls.md)).

**Topics**
+ [Suppression d'un package (AWS CLI)](#delete-package-CLI)
+ [Suppression d'un package (console)](#delete-package-console)
+ [Supprimer une version de package (AWS CLI)](#delete-package-version-CLI)
+ [Suppression d'une version de package (console)](#delete-package-version-console)
+ [Supprimer un package npm ou une version de package](#delete-package-npm)
+ [Supprimer un package Maven ou une version de package](#delete-package-maven)
+ [Bonnes pratiques pour supprimer des packages ou des versions de packages](#delete-package-bp)

## Suppression d'un package (AWS CLI)
<a name="delete-package-CLI"></a>

Vous pouvez supprimer un package, y compris toutes ses versions et configurations, à l'aide de la `delete-package` commande. L'exemple suivant supprime le package PyPI `my-package` nommé dans le `my_repo` dépôt du domaine : `my_domain`

```
aws codeartifact delete-package --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi \
--package my-package
```

Exemple de sortie :

```
{
   "deletedPackage": { 
      "format": "pypi",
      "originConfiguration": { 
         "restrictions": { 
            "publish": "ALLOW",
            "upstream": "BLOCK"
         }
      },
      "package": "my-package"
   }
}
```

Vous pouvez confirmer que le package a été supprimé en exécutant `describe-package` le même nom de package :

```
aws codeartifact describe-package --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi --package my-package
```

## Suppression d'un package (console)
<a name="delete-package-console"></a>

1. Ouvrez la AWS CodeArtifact console sur [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. Dans le panneau de navigation, choisissez **Référentiels**.

1. Choisissez le **référentiel** dans lequel vous souhaitez supprimer un package.

1. Choisissez le **Package** que vous souhaitez supprimer.

1. Choisissez **Supprimer le package**.

## Supprimer une version de package (AWS CLI)
<a name="delete-package-version-CLI"></a>

Vous pouvez supprimer une ou plusieurs versions de package à la fois à l'aide de la `delete-package-versions` commande. L'exemple suivant supprime les versions `4.0.0``4.0.1`, et `5.0.0` du package PyPI `my-package` nommé dans `my_repo` le domaine : `my_domain`

```
aws codeartifact delete-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi \
--package my-package --versions 4.0.0 4.0.1 5.0.0
```

Exemple de sortie :

```
{
   "successfulVersions": {
      "4.0.0": {
         "revision": "oxwwYC9dDeuBoCt6+PDSwL6OMZ7rXeiXy44BM32Iawo=",
            "status": "Deleted"
      },
      "4.0.1": {
         "revision": "byaaQR748wrsdBaT+PDSwL6OMZ7rXeiBKM0551aqWmo=",
            "status": "Deleted"
      },
      "5.0.0": {
         "revision": "yubm34QWeST345ts+ASeioPI354rXeiSWr734PotwRw=",
            "status": "Deleted"
      }
   },
   "failedVersions": {}
}
```

Vous pouvez confirmer que les versions ont été supprimées en exécutant `list-package-versions` le même nom de package :

```
aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi --package my-package
```

## Suppression d'une version de package (console)
<a name="delete-package-version-console"></a>

1. Ouvrez la AWS CodeArtifact console sur [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. Dans le panneau de navigation, choisissez **Référentiels**.

1. Choisissez le **référentiel dans** lequel vous souhaitez supprimer les versions du package.

1. Choisissez le **Package** dont vous souhaitez supprimer les versions.

1. Sélectionnez la **version du package** que vous souhaitez supprimer.

1. Sélectionnez **Delete (Supprimer)**.
**Note**  
Dans la console, vous ne pouvez supprimer qu'une seule version de package à la fois. Pour en supprimer plusieurs à la fois, utilisez la CLI.

## Supprimer un package npm ou une version de package
<a name="delete-package-npm"></a>

Pour supprimer un package npm ou des versions de package individuelles, définissez l'`--format`option sur. `npm` Pour supprimer une version de package dans un package npm délimité, utilisez l'`--namespace`option pour spécifier la portée. Par exemple, pour supprimer le package`@types/react`, utilisez`--namespace types`. Omettez le `@` symbole lors de l'utilisation`--namespace`. 

```
aws codeartifact delete-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format npm --namespace types \
--package react --versions 0.12.2
```

Pour supprimer le package`@types/react`, y compris toutes ses versions :

```
aws codeartifact delete-package --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format npm --namespace types \
--package react
```

## Supprimer un package Maven ou une version de package
<a name="delete-package-maven"></a>

Pour supprimer un package Maven ou des versions de package individuelles, définissez l'`--format`option sur `maven` et spécifiez le package à supprimer en transmettant l'ID du groupe Maven avec l'`--namespace`option et le Maven ArtifactID avec l'option. `--name` Par exemple, ce qui suit montre comment supprimer une seule version de `com.google.guava:guava` :

```
 aws codeartifact delete-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format maven --namespace com.google.guava \
--package guava --versions 27.1-jre
```

L'exemple suivant montre comment supprimer le package`com.google.guava:guava`, y compris toutes ses versions :

```
 aws codeartifact delete-package --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format maven --namespace com.google.guava \
--package guava
```

## Bonnes pratiques pour supprimer des packages ou des versions de packages
<a name="delete-package-bp"></a>

Si vous devez supprimer une version du package, il est recommandé de créer un référentiel pour stocker une copie de sauvegarde de la version du package que vous souhaitez supprimer. Vous pouvez le faire en appelant d'abord `copy-package-versions` le dépôt de sauvegarde : 

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 --source-repository my_repo \
 --destination-repository repo-2 --package my-package --format npm \
 --versions 6.0.2 4.0.0
```

Une fois que vous avez copié la version du package, vous pouvez faire appel `delete-package-versions` au package ou à la version du package que vous souhaitez supprimer.

```
aws codeartifact delete-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi \
--package my-package --versions 4.0.0 4.0.1 5.0.0
```

# Afficher et mettre à jour les détails et les dépendances des versions du package
<a name="describe-package-version"></a>

Vous pouvez consulter les informations relatives à la version d'un package, y compris les dépendances, dans CodeArtifact. Vous pouvez également mettre à jour le statut d'une version de package. Pour plus d'informations sur l'état de la version du package, consultez[État de la version du package](packages-overview.md#package-version-status). 

## Afficher les détails de la version du package
<a name="view-package-details"></a>

 Utilisez la `describe-package-version` commande pour afficher les détails relatifs aux versions des packages. Les détails de la version du package sont extraits d'un package lorsqu'il est publié sur CodeArtifact. Les détails des différents packages varient et dépendent de leurs formats et de la quantité d'informations que leurs auteurs y ont ajoutées. 

 La plupart des informations contenues dans le résultat de la `describe-package-version` commande dépendent du format du package. Par exemple, `describe-package-version` extrait les informations d'un package npm de son `package.json` fichier. La révision est créée par CodeArtifact. Pour de plus amples informations, veuillez consulter [Spécification d'une révision de version de package](copy-package.md#specify-package-version-revision). 

 Deux versions de package portant le même nom peuvent se trouver dans le même référentiel si elles se trouvent chacune dans des espaces de noms différents. Utilisez le `--namespace` paramètre facultatif pour spécifier un espace de noms. Pour plus d’informations, consultez [Afficher les détails de la version du package npm](#describe-package-version-npm) ou [Afficher les détails de la version du package Maven](#describe-package-version-maven).

 L'exemple suivant renvoie des détails sur la version `1.9.0` d'un package Python nommé `pyhamcrest` qui se trouve dans le `my_repo` référentiel. 

```
aws codeartifact describe-package-version --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format pypi --package pyhamcrest --package-version 1.9.0
```

 Le résultat peut ressembler à ce qui suit.

```
{
  "format": "pypi",
  "package": "PyHamcrest",
  "displayName": "PyHamcrest",
  "version": "1.9.0",
  "summary": "Hamcrest framework for matcher objects",
  "homePage": "https://github.com/hamcrest/PyHamcrest",
  "publishedTime": 1566002944.273,
  "licenses": [
    {
      "id": "license-id",
      "name": "license-name"
    }
  ],
  "revision": "REVISION-SAMPLE-55C752BEE9B772FC"
}
```

**Note**  
CodeArtifact récupère les détails de la version du package, tels que la page d'accueil du package ou les informations de licence du package, à partir des métadonnées fournies par l'auteur du package. Si l'une de ces informations dépasse 400 Ko, ce qui correspond à la taille limite des éléments DynamoDB CodeArtifact , vous ne pourrez pas traiter ces données et il est possible que vous ne voyiez pas ces informations sur la console ou dans la réponse de. `describe-package-version` Par exemple, un package python tel que [https://pypi. org/project/rapyd-sdk/](https://pypi.org/project/rapyd-sdk/) possède un très grand champ de licence, ces informations ne seront donc pas traitées par. CodeArtifact

## Afficher les détails de la version du package npm
<a name="describe-package-version-npm"></a>

Pour afficher les détails d'une version de package npm, définissez la valeur de l'`--format`option sur. **npm** Vous pouvez éventuellement inclure l'espace de noms de version du package (npm *scope*) dans l'`--namespace`option. La valeur de l'`--namespace`option ne doit pas inclure le début`@`. Pour rechercher l'espace de noms`@types`, définissez la valeur sur. *types*

Ce qui suit renvoie des détails sur `4.41.5` la version d'un package npm nommé `webpack` dans le `@types` scope. 

```
aws codeartifact describe-package-version --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format npm --package webpack --namespace types --package-version 4.41.5
```

 Le résultat peut ressembler à ce qui suit. 

```
{
  "format": "npm",
  "namespace": "types",
  "package": "webpack",
  "displayName": "webpack",
  "version": "4.41.5",
  "summary": "Packs CommonJs/AMD modules for the browser. Allows ... further output omitted for brevity",
  "homePage": "https://github.com/webpack/webpack",
  "sourceCodeRepository": "https://github.com/webpack/webpack.git",
  "publishedTime": 1577481261.09,
  "licenses": [
    {
      "id": "license-id",
      "name": "license-name"
    }
  ],
  "revision": "REVISION-SAMPLE-55C752BEE9B772FC",
  "status": "Published",
  "origin": {
            "domainEntryPoint": {
                "externalConnectionName": "public:npmjs"
            },
            "originType": "EXTERNAL"
  }
}
```

## Afficher les détails de la version du package Maven
<a name="describe-package-version-maven"></a>

Pour afficher les détails d'une version de package Maven, définissez la valeur de l'`--format`option sur `maven` et incluez l'espace de noms de version du package dans l'`--namespace`option.

 L'exemple suivant renvoie des détails sur `1.2` la version d'un package Maven nommé `commons-rng-client-api` qui se trouve dans l'espace de `org.apache.commons` noms et dans le `my_repo` référentiel. 

```
aws codeartifact describe-package-version --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format maven --namespace org.apache.commons --package commons-rng-client-api --package-version 1.2
```

 Le résultat peut ressembler à ce qui suit.

```
{
  "format": "maven",
  "namespace": "org.apache.commons",
  "package": "commons-rng-client-api",
  "displayName": "Apache Commons RNG Client API",
  "version": "1.2",
  "summary": "API for client code that uses random numbers generators.",
  "publishedTime": 1567920624.849,
  "licenses": [],
  "revision": "REVISION-SAMPLE-55C752BEE9B772FC"
}
```

**Note**  
CodeArtifact n'extrait pas les informations détaillées sur la version du package des fichiers POM parents. Les métadonnées d'une version de package donnée incluront uniquement des informations dans le POM pour cette version de package exacte, et non pour le POM parent ou tout autre POM référencé de manière transitive à l'aide de la `parent` balise POM. Cela signifie que la sortie de `describe-package-version` omettra les métadonnées (telles que les informations de licence) pour les versions de package Maven qui reposent sur une `parent` référence pour contenir ces métadonnées.

## Afficher les dépendances entre les versions du package
<a name="view-package-dependencies"></a>

 Utilisez la `list-package-version-dependencies` commande pour obtenir la liste des dépendances d'une version de package. La commande suivante répertorie les dépendances d'un package npm nommé`my-package`, version`4.41.5`, dans le `my_repo` référentiel, dans le `my_domain` domaine. 

```
aws codeartifact list-package-version-dependencies --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format npm --package my-package --package-version 4.41.5
```

 Le résultat peut ressembler à ce qui suit. 

```
{
  "dependencies": [
    {
      "namespace": "webassemblyjs",
      "package": "ast",
      "dependencyType": "regular",
      "versionRequirement": "1.8.5"
    },
    {
      "namespace": "webassemblyjs",
      "package": "helper-module-context",
      "dependencyType": "regular",
      "versionRequirement": "1.8.5"
    },
    {
      "namespace": "webassemblyjs",
      "package": "wasm-edit",
      "dependencyType": "regular",
      "versionRequirement": "1.8.5"
    }
  ],
  "versionRevision": "REVISION-SAMPLE-55C752BEE9B772FC"
}
```

*Pour connaître la plage de valeurs prises en charge pour le champ DependencyType, consultez le type de [PackageDependency](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageDependency.html)données dans l'CodeArtifact API.*

## Afficher le fichier readme de la version du package
<a name="view-package-readme"></a>

 Certains formats de package, tels que npm, incluent un `README` fichier. Utilisez le `get-package-version-readme` pour obtenir le `README` fichier d'une version de package. La commande suivante renvoie le `README` fichier d'un package npm nommé`my-package`, version`4.41.5`, dans le `my_repo` référentiel, dans le `my_domain` domaine. 

**Note**  
CodeArtifact ne prend pas en charge l'affichage de fichiers readme à partir de packages génériques ou Maven.

```
aws codeartifact get-package-version-readme --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format npm --package my-package --package-version 4.41.5
```

 Le résultat peut ressembler à ce qui suit.

```
{  
  "format": "npm",
  "package": "my-package",
  "version": "4.41.5"
  "readme": "<div align=\"center\">\n   <a href=\https://github.com/webpack/webpack\"> ... more content ... \n",
  "versionRevision": "REVISION-SAMPLE-55C752BEE9B772FC"
}
```

# État de version du package de mise à jour
<a name="update-package-version-status"></a>

Chaque version de package CodeArtifact possède un statut qui décrit l'état actuel et la disponibilité de la version du package. Vous pouvez modifier l'état de la version du package à l'aide de la console AWS CLI et de la console.

**Note**  
Pour plus d'informations sur l'état de la version du package, y compris une liste des statuts disponibles, consultez[État de la version du package](packages-overview.md#package-version-status). 

## Mettre à jour le statut de version du package
<a name="updating-pv-status"></a>

La définition du statut d'une version de package permet de contrôler la manière dont une version de package peut être utilisée sans la supprimer complètement du référentiel. Par exemple, lorsqu'une version de package a le statut de`Unlisted`, elle peut toujours être téléchargée normalement, mais elle n'apparaîtra pas dans les listes de versions de package renvoyées à des commandes telles que`npm view`. L'[UpdatePackageVersionsStatus API](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html) permet de définir l'état de version de plusieurs versions d'un même package en un seul appel d'API. Pour une description des différents statuts, voir[Vue d'ensemble des packages](packages-overview.md).

Utilisez la `update-package-versions-status` commande pour modifier le statut d'une version de package en `Published``Unlisted`, ou`Archived`. Pour connaître les autorisations IAM requises pour utiliser la commande, consultez[Autorisations IAM requises pour mettre à jour l'état de la version d'un package](#update-package-version-status-iam). L'exemple suivant définit le statut de la version 4.1.0 du package `chalk` npm sur. `Archived`

```
aws codeartifact update-package-versions-status --domain my_domain
 --domain-owner 111122223333 --repository my_repo --format npm --package chalk 
--versions 4.1.0 --target-status Archived
```

Exemple de sortie :

```
{
    "successfulVersions": {
        "4.1.0": {
            "revision": "+Oz8skWbwY3k8M6SrNIqNj6bVH/ax+CxvkJx+No5j8I=",
            "status": "Archived"
        }
    },
    "failedVersions": {}
}
```

Cet exemple utilise un package npm, mais la commande fonctionne de la même manière pour les autres formats. Plusieurs versions peuvent être déplacées vers le même statut cible à l'aide d'une seule commande, voir l'exemple suivant.

```
aws codeartifact update-package-versions-status --domain my_domain
 --domain-owner 111122223333 --repository my_repo --format npm --package chalk 
--versions 4.1.0 4.1.1 --target-status Archived
```

Exemple de sortie :

```
{
    "successfulVersions": {
        "4.1.0": {
            "revision": "25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=",
            "status": "Archived"
        },
        "4.1.1": {
            "revision": "+Oz8skWbwY3k8M6SrNIqNj6bVH/ax+CxvkJx+No5j8I=",
            "status": "Archived"
        }
    },
    "failedVersions": {}
}
```

Notez qu'une fois publiée, une version de package ne peut pas être replacée dans cet `Unfinished` état. Ce statut n'est donc pas autorisé en tant que valeur pour le `--target-status` paramètre. Pour déplacer la version du package vers l'`Disposed`état, utilisez plutôt la `dispose-package-versions` commande comme décrit ci-dessous.

## Autorisations IAM requises pour mettre à jour l'état de la version d'un package
<a name="update-package-version-status-iam"></a>

`update-package-versions-status`Pour demander un package, vous devez avoir l'`codeartifact:UpdatePackageVersionsStatus`autorisation d'accéder à la ressource du package. Cela signifie que vous pouvez accorder l'autorisation `update-package-versions-status` d'appeler pour chaque forfait. Par exemple, une politique IAM qui accorde l'autorisation d'appeler `update-package-versions-status` le package npm *chalk* inclurait une déclaration comme celle-ci.

```
{
  "Action": [
    "codeartifact:UpdatePackageVersionsStatus"
  ],
  "Effect": "Allow",
  "Resource": "arn:aws:codeartifact:us-east-1:111122223333:package/my_domain/my_repo/npm//chalk"
}
```

## Mise à jour de l'état d'un package npm délimité
<a name="update-package-version-status-scoped-npm"></a>

Pour mettre à jour l'état de la version du package d'une version de package npm avec une portée, utilisez le `--namespace` paramètre. Par exemple, pour annuler la liste de la version 8.0.0 de`@nestjs/core`, utilisez la commande suivante.

```
aws codeartifact update-package-versions-status --domain my_domain
 --domain-owner 111122223333 --repository my_repo --format npm --namespace nestjs 
--package core --versions 8.0.0 --target-status Unlisted
```

## Mettre à jour le statut d'un package Maven
<a name="update-package-version-status-maven"></a>

Les packages Maven ont toujours un identifiant de groupe, appelé espace de noms dans. CodeArtifact Utilisez le `--namespace` paramètre pour spécifier l'ID du groupe Maven lors de l'appel`update-package-versions-status`. Par exemple, pour archiver la version 2.13.1 du package Maven`org.apache.logging.log4j:log4j`, utilisez la commande suivante.

```
aws codeartifact update-package-versions-status --domain my_domain
 --domain-owner 111122223333 --repository my_repo --format maven 
--namespace org.apache.logging.log4j --package log4j 
--versions 2.13.1 --target-status Archived
```

## Spécification d'une révision de version de package
<a name="update-status-specify-package-version-revision"></a>

Une révision de version de package est une chaîne qui spécifie un ensemble spécifique de ressources et de métadonnées pour une version de package. Vous pouvez spécifier une révision de version de package pour mettre à jour le statut des versions de package qui se trouvent dans un état spécifique. Pour spécifier une révision de version de package, utilisez le `--version-revisions` paramètre pour transmettre une ou plusieurs versions de package séparées par des virgules et les paires de révisions de version de package. L'état d'une version de package ne sera mis à jour que si la révision actuelle de la version de package correspond à la valeur spécifiée.

**Note**  
Le `—-versions` paramètre doit également être défini lors de son `--version-revisions` utilisation.

```
aws codeartifact update-package-versions-status --domain my_domain 
   --domain-owner 111122223333 --repository my_repo --format npm --package chalk 
   --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8bzVMJ4=" 
   --versions 4.1.0 --target-status Archived
```

Pour mettre à jour plusieurs versions à l'aide d'une seule commande, transmettez aux options une liste séparée par des virgules de paires de versions et de révisions de `--version-revisions` version. L'exemple de commande suivant définit deux paires différentes de version de package et de révision de version de package.

```
aws codeartifact update-package-versions-status --domain my_domain 
 --domain-owner 111122223333 --repository my_repo --format npm 
 --package chalk
 --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=,4.0.0=E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc="  
 --versions 4.1.0 4.0.0 --target-status Published
```

Exemple de sortie :

```
{
    "successfulVersions": {
        "4.0.0": {
            "revision": "E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=",
            "status": "Published"
        },
        "4.1.0": {
            "revision": "25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=",
            "status": "Published"
        }
    },
    "failedVersions": {}
}
```

Lors de la mise à jour de plusieurs versions de package, les versions transmises `--version-revisions` doivent être les mêmes que celles transmises`--versions`. Si une révision n'est pas spécifiée correctement, le statut de cette version ne sera pas mis à jour.

## Utilisation du paramètre d'état attendu
<a name="using-expected-status"></a>

La `update-package-versions-status` commande fournit le `--expected-status` paramètre qui permet de spécifier l'état actuel attendu d'une version de package. Si le statut actuel ne correspond pas à la valeur transmise`--expected-status`, le statut de cette version du package ne sera pas mis à jour.

Par exemple, dans*my\$1repo*, les versions 4.0.0 et 4.1.0 du package npm ont `chalk` actuellement un statut de. `Published` Un appel indiquant un statut attendu de `Unlisted` échouera à mettre à jour les deux versions du package en raison de l'incompatibilité des statuts. `update-package-versions-status`

```
aws codeartifact update-package-versions-status --domain my_domain
--domain-owner 111122223333 --repository my_repo --format npm --package chalk 
--versions 4.1.0 4.0.0 --target-status Archived --expected-status Unlisted
```

Exemple de sortie :

```
{
    "successfulVersions": {},
    "failedVersions": {
        "4.0.0": {
            "errorCode": "MISMATCHED_STATUS",
            "errorMessage": "current status: Published, expected status: Unlisted"
        },
        "4.1.0": {
            "errorCode": "MISMATCHED_STATUS",
            "errorMessage": "current status: Published, expected status: Unlisted"
        }
    }
}
```

## Erreurs liées aux différentes versions de package
<a name="update-package-version-status-errors"></a>

Il existe plusieurs raisons pour lesquelles le statut d'une version de package ne sera pas mis à jour lors de l'appel`update-package-versions-status`. Par exemple, la révision de la version du package a peut-être été spécifiée de manière incorrecte ou le statut attendu ne correspond pas à l'état actuel. Dans ces cas, la version sera incluse dans la `failedVersions` carte dans la réponse de l'API. Si une version échoue, les autres versions spécifiées dans le même appel à `update-package-versions-status` peuvent être ignorées et leur statut n'est pas mis à jour. Ces versions seront également incluses dans la `failedVersions` carte avec un `errorCode` de`SKIPPED`.

Dans l'implémentation actuelle de`update-package-versions-status`, si le statut d'une ou de plusieurs versions ne peut pas être modifié, toutes les autres versions seront ignorées. En d'autres termes, soit toutes les versions sont mises à jour avec succès, soit aucune version n'est mise à jour. Ce comportement n'est pas garanti dans le contrat d'API ; à l'avenir, certaines versions pourraient réussir tandis que d'autres échoueront en un seul appel à`update-package-versions-status`.

L'exemple de commande suivant inclut un échec de mise à jour de l'état de version causé par une incompatibilité de version de version de package. Cet échec de mise à jour entraîne l'annulation d'un autre appel de mise à jour de l'état de la version.

```
aws codeartifact update-package-versions-status --domain my_domain
  --domain-owner 111122223333 --repository my_repo 
  --format npm --package chalk 
  --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ=,4.0.0=E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=" 
  --versions 4.1.0 4.0.0 --target-status Archived
```

Exemple de sortie :

```
{
    "successfulVersions": {},
    "failedVersions": {
        "4.0.0": {
            "errorCode": "SKIPPED",
            "errorMessage": "version 4.0.0 is skipped"
        },
        "4.1.0": {
            "errorCode": "MISMATCHED_REVISION",
            "errorMessage": "current revision: 25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=, expected revision: 25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ="
        }
    }
}
```

## Élimination des versions du package
<a name="dispose-package-versions"></a>

Le statut `Disposed` du package a un comportement similaire à celui du package`Archived`, sauf que les actifs du package seront définitivement supprimés, de CodeArtifact sorte que le compte du propriétaire du domaine ne sera plus facturé pour le stockage des actifs. Pour plus d'informations sur le statut de chaque version de package, consultez[État de la version du package](packages-overview.md#package-version-status). Pour modifier le statut d'une version de package en`Disposed`, utilisez la `dispose-package-versions` commande. Cette fonctionnalité est distincte du `update-package-versions-status` fait que la suppression d'une version de package n'est pas réversible. Dans la mesure où les actifs du package seront supprimés, le statut de la version ne peut pas être redéfini sur `Archived``Unlisted`, ou`Published`. La seule action qui peut être entreprise sur une version de package qui a été supprimée est de la supprimer à l'aide de la `delete-package-versions` commande.

Pour que l'appel soit `dispose-package-versions` réussi, le principal IAM appelant doit avoir l'`codeartifact:DisposePackageVersions`autorisation d'accéder à la ressource du package.

Le comportement de la `dispose-package-versions` commande est similaire à `update-package-versions-status` celui des `--expected-status` options `--version-revisions ` et décrites dans les sections sur la [révision de la version](#update-status-specify-package-version-revision) et sur le [statut attendu](#using-expected-status). Par exemple, la commande suivante tente de supprimer une version de package mais échoue en raison d'un état attendu qui ne correspond pas.

```
aws codeartifact dispose-package-versions —domain my_domain --domain-owner 111122223333 
--repository my_repo --format npm --package chalk --versions 4.0.0 
--expected-status Unlisted
```

Exemple de sortie :

```
{
    "successfulVersions": {},
    "failedVersions": {
        "4.0.0": {
            "errorCode": "MISMATCHED_STATUS",
            "errorMessage": "current status: Published, expected status: Unlisted"
        }
    }
}
```

Si la même commande est exécutée à nouveau avec un `--expected-status` de`Published`, la destruction réussira.

```
aws codeartifact dispose-package-versions —domain my_domain --domain-owner 111122223333 
--repository my_repo --format npm --package chalk --versions 4.0.0 
--expected-status Published
```

Exemple de sortie :

```
{
    "successfulVersions": {
        "4.0.0": {
            "revision": "E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=",
            "status": "Disposed"
        }
    },
    "failedVersions": {}
}
```

# Modification des contrôles d'origine des packages
<a name="package-origin-controls"></a>

Dans AWS CodeArtifact, les versions de package peuvent être ajoutées à un référentiel en les publiant directement, en les extrayant d'un référentiel en amont ou en les ingérant depuis un référentiel public externe. Le fait d'autoriser l'ajout de versions d'un package à la fois par publication directe et par ingestion à partir de référentiels publics vous rend vulnérable aux attaques de substitution de dépendances. Pour de plus amples informations, veuillez consulter [Attaques de substitution de la dépendance](dependency-substitution-attacks.md). Pour vous protéger contre une attaque de substitution de dépendance, vous pouvez configurer les contrôles d'origine des packages sur un package dans un référentiel afin de limiter la manière dont les versions de ce package peuvent être ajoutées au référentiel.

La configuration des contrôles d'origine des packages doit être envisagée par toute équipe qui souhaite autoriser les nouvelles versions de différents packages à provenir à la fois de sources internes, telles que la publication directe, et de sources externes, telles que des référentiels publics. Par défaut, les contrôles d'origine des packages sont configurés en fonction de la manière dont la première version d'un package est ajoutée au référentiel. Pour plus d'informations sur les paramètres de contrôle de l'origine des packages et leurs valeurs par défaut, consultez[Paramètres de contrôle de l'origine des packages](#package-origin-control-settings).

Pour supprimer l'enregistrement du package après avoir utilisé l'opération `put-package-origin-configuration` API, utilisez `delete-package` (voir[Supprimer un package ou une version de package](delete-package.md)).

## Scénarios courants de contrôle d'accès aux packages
<a name="package-origin-control-scenarios"></a>

Cette section inclut certains scénarios courants lorsqu'une version de package est ajoutée à un CodeArtifact référentiel. Les paramètres de contrôle de l'origine des packages seront définis pour les nouveaux packages en fonction de la manière dont la première version du package est ajoutée.

Dans les scénarios suivants, un *package interne* est un package publié directement depuis un gestionnaire de packages vers votre référentiel, tel qu'un package que vous ou votre équipe créez et gérez. Un *package externe* est un package existant dans un dépôt public qui peut être ingéré dans votre référentiel via une connexion externe.

**Une version de package externe est publiée pour un package interne existant**

Dans ce scénario, considérez un package interne, *PackageA*. Votre équipe publie la première version du package pour *PackageA dans un* CodeArtifact référentiel. Comme il s'agit de la première version de package pour ce package, les paramètres de contrôle de l'origine du package sont automatiquement définis **sur Publier : Autoriser** et **Upstream : Bloquer**. Une fois que le package existe dans votre dépôt, un package portant le même nom est publié dans un dépôt public connecté à votre CodeArtifact dépôt. Il peut s'agir d'une tentative d'attaque de substitution de dépendance contre le package interne ou d'une simple coïncidence. Quoi qu'il en soit, les contrôles d'origine des packages sont configurés pour bloquer l'ingestion de la nouvelle version externe afin de se protéger contre une attaque potentielle.

Dans l'image suivante, *RePoA* est votre CodeArtifact dépôt avec une connexion externe à un dépôt public. Votre dépôt contient les versions 1.1 et 2.1 de *PackageA*, mais la version 3.0 est publiée dans le dépôt public. Normalement, *RePoA* ingère la version 3.0 une fois que le package a été demandé par un gestionnaire de packages. L'ingestion de packages étant définie sur **Bloquer**, la version 3.0 n'est pas ingérée dans votre CodeArtifact référentiel et n'est pas disponible pour les gestionnaires de packages qui y sont connectés.

![\[Graphique simple illustrant le blocage d'une nouvelle version de package externe dans un dépôt public.\]](http://docs.aws.amazon.com/fr_fr/codeartifact/latest/ug/images/package-origin-controls-one.png)


**Une version de package interne est publiée pour un package externe existant**

Dans ce scénario, un package, *PackageB*, existe en externe dans un référentiel public que vous avez connecté à votre référentiel. Lorsqu'un gestionnaire de packages connecté à votre référentiel demande *PackageB*, la version du package est ingérée dans votre référentiel depuis le référentiel public. Comme il s'agit de la première version de package de *PackageB* ajoutée à votre référentiel, les paramètres d'origine du package sont configurés sur **Publish : BLOCK et Upstream :** **ALLOW**. Plus tard, vous essayez de publier une version portant le même nom de package dans le référentiel. Soit vous ne connaissez pas le package public et vous essayez de publier un package indépendant sous le même nom, soit vous essayez de publier une version corrigée, soit vous essayez de publier directement la version exacte du package qui existe déjà en externe. CodeArtifact rejettera la version que vous essayez de publier, mais vous permettra d'annuler explicitement le rejet et de publier la version si nécessaire.

Dans l'image suivante, *RePoA* est votre CodeArtifact dépôt avec une connexion externe à un dépôt public. Votre dépôt contient la version 3.0 qu'il a ingérée depuis le dépôt public. Vous souhaitez publier la version 1.1 dans votre dépôt. Normalement, vous pouvez publier la version 1.2 sur *RePoA*, mais comme la publication est définie sur **Bloquer**, la version 1.2 ne peut pas être publiée.

![\[Graphique simple illustrant le blocage d'une nouvelle version de package externe dans un dépôt public.\]](http://docs.aws.amazon.com/fr_fr/codeartifact/latest/ug/images/package-origin-controls-two.png)


**Publication d'une version de package corrigée d'un package externe existant**

Dans ce scénario, un package, *PackageB*, existe en externe dans un référentiel public que vous avez connecté à votre référentiel. Lorsqu'un gestionnaire de packages connecté à votre référentiel demande *PackageB*, la version du package est ingérée dans votre référentiel depuis le référentiel public. Comme il s'agit de la première version de package de *PackageB* ajoutée à votre référentiel, les paramètres d'origine du package sont configurés sur **Publish : BLOCK et Upstream :** **ALLOW**. Votre équipe décide qu'elle doit publier les versions patchées de ce package dans le référentiel. Pour pouvoir publier directement les versions des packages, votre équipe modifie les paramètres de contrôle de l'origine des packages en **Publish : ALLOW** et **Upstream : BLOCK**. Les versions de ce package peuvent désormais être publiées directement dans votre dépôt et ingérées à partir de référentiels publics. Une fois que votre équipe a publié les versions du package corrigées, elle rétablit les paramètres d'origine du package sur **Publish : BLOCK et Upstream :** **ALLOW**.

## Paramètres de contrôle de l'origine des packages
<a name="package-origin-control-settings"></a>

Grâce aux contrôles de l'origine des packages, vous pouvez configurer la manière dont les versions des packages peuvent être ajoutées à un référentiel. Les listes suivantes incluent les paramètres et valeurs de contrôle d'origine des packages disponibles.

**Note**  
Les paramètres et valeurs disponibles sont différents lors de la configuration des contrôles d'origine sur les groupes de packages. Pour de plus amples informations, veuillez consulter [Contrôles d'origine des groupes de packages](package-group-origin-controls.md).

**Publish**

Ce paramètre permet de configurer si les versions des packages peuvent être publiées directement dans le référentiel à l'aide de gestionnaires de packages ou d'outils similaires.
+ **AUTORISER** : les versions du package peuvent être publiées directement.
+ **BLOCK** : Les versions du package ne peuvent pas être publiées directement.

**En amont**

Ce paramètre définit si les versions des packages peuvent être ingérées à partir de référentiels publics externes ou conservées à partir de référentiels en amont à la demande d'un gestionnaire de packages.
+ **AUTORISER** : Toute version de package peut être conservée à partir d'autres CodeArtifact référentiels configurés en tant que référentiels en amont ou ingérée à partir d'une source publique via une connexion externe.
+ **BLOCAGE** : Les versions de package ne peuvent pas être conservées à partir d'autres CodeArtifact référentiels configurés comme référentiels en amont ou ingérées à partir d'une source publique avec une connexion externe.

## Paramètres de contrôle de l'origine des packages par défaut
<a name="default-package-origin-control-settings"></a>

Les paramètres de contrôle d'origine des packages par défaut sont configurés en fonction des paramètres de contrôle d'origine du groupe de packages associé au package. Pour plus d'informations sur les groupes de packages et les contrôles d'origine des groupes de packages, consultez [Utilisation de groupes de packages dans CodeArtifact](package-groups.md) et[Contrôles d'origine des groupes de packages](package-group-origin-controls.md).

Si un package est associé à un groupe de packages avec des paramètres de restriction `ALLOW` correspondant à chaque type de restriction, les contrôles d'origine du package par défaut pour un package seront basés sur la manière dont la première version de ce package est ajoutée au référentiel.
+ Si la première version du package est publiée directement par un gestionnaire de packages, les paramètres seront **Publish : ALLOW** et **Upstream : BLOCK.**
+ Si la première version du package est ingérée à partir d'une source publique, les paramètres seront **Publish : BLOCK** et **Upstream : ALLOW**.

**Note**  
Les packages qui existaient dans CodeArtifact des référentiels avant mai 2022 environ seront dotés de contrôles d'origine par défaut tels que **Publish : ALLOW** et **Upstream : ALLOW**. Les contrôles d'origine des packages doivent être définis manuellement pour ces packages. Les valeurs par défaut actuelles ont été définies sur les nouveaux packages depuis lors et ont commencé à être appliquées lorsque la fonctionnalité a été lancée le 14 juillet 2022. Pour plus d'informations sur la définition des contrôles d'origine des packages, consultez[Modification des contrôles d'origine des packages](#edit-package-origin-controls).

Sinon, si un package est associé à un groupe de packages dont au moins un paramètre de restriction est `BLOCK` ou`ALLOW_SPECIFIC_REPOSITORIES`, les paramètres de contrôle d'origine par défaut pour ce package seront définis sur **Publish : ALLOW** et **Upstream : ALLOW**.

## Comment les contrôles d'origine des packages interagissent avec les contrôles d'origine des groupes de packages
<a name="package-origin-controls-interaction-package-groups"></a>

Étant donné que les packages ont des paramètres de contrôle d'origine et que les groupes de packages associés ont des paramètres de contrôle d'origine, il est important de comprendre comment ces deux paramètres différents interagissent les uns avec les autres.

L'interaction entre les deux paramètres est qu'un paramètre de l'emporte `BLOCK` toujours sur un paramètre de`ALLOW`. Le tableau suivant répertorie quelques exemples de configurations et leurs paramètres de contrôle d'origine effectifs.


| Paramètre de contrôle de l'origine du package | Paramètre de contrôle de l'origine du groupe de packages | Paramètre de contrôle d'origine efficace | 
| --- | --- | --- | 
| PUBLIER : AUTORISEREN AMONT : AUTORISER | PUBLIER : AUTORISEREN AMONT : AUTORISER | PUBLIER : AUTORISEREN AMONT : AUTORISER | 
| PUBLIER : BLOQUEREN AMONT : AUTORISER | PUBLIER : AUTORISEREN AMONT : AUTORISER | PUBLIER : BLOQUEREN AMONT : AUTORISER | 
| PUBLIER : AUTORISEREN AMONT : AUTORISER | PUBLIER : AUTORISEREN AMONT : BLOC | PUBLIER : AUTORISEREN AMONT : BLOC | 

Cela signifie qu'un package dont les paramètres d'origine sont **Publish : ALLOW** et **Upstream : ALLOW** s'en remet effectivement aux paramètres de contrôle d'origine du groupe de packages associé.

## Modification des contrôles d'origine des packages
<a name="edit-package-origin-controls"></a>

Les contrôles d'origine des packages sont configurés automatiquement en fonction de la manière dont la première version d'un package est ajoutée au référentiel. Pour plus d'informations, voir[Paramètres de contrôle de l'origine des packages par défaut](#default-package-origin-control-settings). Pour ajouter ou modifier des contrôles d'origine de package pour un package dans un CodeArtifact référentiel, effectuez les étapes de la procédure suivante.

**Pour ajouter ou modifier les contrôles d'origine des packages (console)**

1. Ouvrez la AWS CodeArtifact console sur [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. Dans le volet de navigation, choisissez **Repositories**, puis le référentiel contenant le package que vous souhaitez modifier. 

1. Dans le tableau **Packages**, recherchez et sélectionnez le package que vous souhaitez modifier.

1. Sur la page récapitulative du package, dans les **commandes Origin**, choisissez **Modifier**.

1. Dans **Modifier les contrôles d'origine**, choisissez les contrôles d'origine du package que vous souhaitez définir pour ce package. Les deux paramètres de contrôle de l'origine du package, Publish et Upstream, doivent être définis en même temps.
   + Pour autoriser la publication directe des versions du package, dans **Publier**, sélectionnez **Autoriser**. Pour bloquer la publication des versions du package, choisissez **Bloquer**.
   + **Pour autoriser l'ingestion de packages provenant de référentiels externes et l'extraction de packages depuis des référentiels en amont, dans **Sources en amont**, sélectionnez Autoriser.** Pour bloquer toute ingestion et extraction de versions de packages depuis des référentiels externes et en amont, choisissez **Bloquer.**

**Pour ajouter ou modifier les contrôles d'origine des packages (AWS CLI)**

1. Si ce n'est pas le cas, configurez le AWS CLI en suivant les étapes décrites dans[Configuration avec AWS CodeArtifact](get-set-up-for-codeartifact.md).

1. Utilisez la `put-package-origin-configuration` commande pour ajouter ou modifier les contrôles d'origine des packages. Remplacez les champs suivants :
   + *my\$1domain*Remplacez-le par le CodeArtifact domaine qui contient le package que vous souhaitez mettre à jour.
   + *my\$1repo*Remplacez-le par le CodeArtifact référentiel qui contient le package que vous souhaitez mettre à jour.
   + *npm*Remplacez-le par le format du package que vous souhaitez mettre à jour.
   + *my\$1package*Remplacez-le par le nom du package que vous souhaitez mettre à jour.
   + Remplacez *ALLOW* et par *BLOCK* les paramètres de contrôle de l'origine des packages souhaités.

   ```
   aws codeartifact put-package-origin-configuration --domain my_domain \
   --repository my_repo --format npm --package my_package \ 
   --restrictions publish=ALLOW,upstream=BLOCK
   ```

## Publication et référentiels en amont
<a name="package-publishing-upstreams"></a>

CodeArtifact n'autorise pas la publication de versions de packages présentes dans des référentiels en amont ou des référentiels publics accessibles. Supposons, par exemple, que vous souhaitiez publier un package `com.mycompany.mypackage:1.0` Maven dans un référentiel et que vous `myrepo` disposiez `myrepo` d'un référentiel en amont avec une connexion externe à Maven Central. Envisagez les scénarios suivants.

1. Les paramètres de contrôle de l'origine du package `com.mycompany.mypackage` sont **Publish : ALLOW** et **Upstream : ALLOW**. S'il `com.mycompany.mypackage:1.0` est présent dans le référentiel en amont ou dans Maven Central, CodeArtifact rejette toute tentative de publication dans ce référentiel `myrepo` avec une erreur de conflit 409. Vous pouvez toujours publier une version différente, telle que`com.mycompany.mypackage:1.1`.

1. Les paramètres de contrôle de l'origine du package `com.mycompany.mypackage` sont **Publish : ALLOW** et **Upstream : BLOCK**. Vous pouvez publier dans votre référentiel n'importe quelle version de `com.mycompany.mypackage` qui n'existe pas encore car les versions des packages ne sont pas accessibles.

1. Les paramètres de contrôle de l'origine du package `com.mycompany.mypackage` sont **Publish : BLOCK** et **Upstream : ALLOW**. Vous ne pouvez publier aucune version de package directement dans votre référentiel.