

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Lavorare con i pacchetti in CodeArtifact
<a name="packages"></a>

I seguenti argomenti mostrano come eseguire azioni sui pacchetti utilizzando la CodeArtifact CLI e l'API.

**Topics**
+ [Panoramica dei pacchetti](packages-overview.md)
+ [Elenca i nomi dei pacchetti](list-packages.md)
+ [Elenca le versioni dei pacchetti](list-packages-versions.md)
+ [Elenca le risorse della versione del pacchetto](list-assets.md)
+ [Scarica gli asset della versione del pacchetto](download-assets.md)
+ [Copia i pacchetti tra i repository](copy-package.md)
+ [Eliminare un pacchetto o una versione del pacchetto](delete-package.md)
+ [Visualizza e aggiorna i dettagli e le dipendenze della versione del pacchetto](describe-package-version.md)
+ [Aggiorna lo stato della versione del pacchetto](update-package-version-status.md)
+ [Modifica dei controlli di origine dei pacchetti](package-origin-controls.md)

# Panoramica dei pacchetti
<a name="packages-overview"></a>

Un *pacchetto* è un insieme di software e metadati necessari per risolvere le dipendenze e installare il software. In CodeArtifact, un pacchetto è costituito da un nome di pacchetto, uno spazio dei [nomi](codeartifact-concepts.md#welcome-concepts-package-namespace) opzionale come `@types` in`@types/node`, un set di versioni del pacchetto e metadati a livello di pacchetto come i tag npm.

**Contents**
+ [Formati di pacchetto supportati](#supported-package-formats)
+ [Pubblicazione di pacchetti](#package-publishing)
  + [Autorizzazioni di pubblicazione](#package-publishing-permissions)
  + [Sovrascrivere le risorse del](#package-publishing-overwrite-assets)
  + [Pacchetti privati e archivi pubblici](#package-publishing-upstreams-direct)
  + [Pubblicazione di versioni di pacchetti con patch](#package-publishing-patched-versions)
  + [Limiti di dimensione degli asset per la pubblicazione](#package-publishing-asset-size-limits)
  + [Latenza di pubblicazione](#package-publishing-latency)
+ [Stato della versione del pacchetto](#package-version-status)
+ [Nome del pacchetto, versione del pacchetto e normalizzazione del nome dell'asset](#package-name-normalization)

## Formati di pacchetto supportati
<a name="supported-package-formats"></a>

AWS CodeArtifact [supporta i [formati di pacchetti 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](using-ruby.md), Swift.](using-swift.md)

## Pubblicazione di pacchetti
<a name="package-publishing"></a>

 È possibile pubblicare nuove versioni di qualsiasi [formato di pacchetto supportato](#supported-package-formats) in un CodeArtifact repository utilizzando strumenti come`npm`,`twine`,`Maven`, `Gradle``nuget`, e`dotnet`.

### Autorizzazioni di pubblicazione
<a name="package-publishing-permissions"></a>

L'utente o il ruolo AWS Identity and Access Management (IAM) deve disporre delle autorizzazioni per la pubblicazione nell'archivio di destinazione. Per pubblicare i pacchetti sono necessarie le seguenti autorizzazioni:
+ **Carico:** `codeartifact:PublishPackageVersion`
+ **generico:** `codeartifact:PublishPackageVersion`
+ **Maven: e** `codeartifact:PublishPackageVersion` `codeartifact:PutPackageMetadata`
+ **npm:** `codeartifact:PublishPackageVersion`
+ **NuGet:** `codeartifact:PublishPackageVersion` e `codeartifact:ReadFromRepository`
+ **Python:** `codeartifact:PublishPackageVersion`
+ **Ruby:** `codeartifact:PublishPackageVersion`
+ **Rapido:** `codeartifact:PublishPackageVersion`

Nell'elenco precedente di autorizzazioni, la policy IAM deve specificare la `package` risorsa per le `codeartifact:PublishPackageVersion` autorizzazioni and. `codeartifact:PutPackageMetadata` Deve inoltre specificare la `repository` risorsa per l'autorizzazione. `codeartifact:ReadFromRepository`

Per ulteriori informazioni sulle autorizzazioni in CodeArtifact, vedere[AWS CodeArtifact riferimento alle autorizzazioni](auth-and-access-control-permissions-reference.md).

### Sovrascrivere le risorse del
<a name="package-publishing-overwrite-assets"></a>

 Non è possibile ripubblicare una risorsa del pacchetto già esistente con contenuti diversi. Ad esempio, supponete di aver già pubblicato un pacchetto Maven con una risorsa JAR. `mypackage-1.0.jar` Puoi pubblicare nuovamente quella risorsa solo se il checksum delle risorse vecchie e nuove è identico. Per ripubblicare la stessa risorsa con nuovi contenuti, eliminate prima la versione del pacchetto utilizzando il **delete-package-versions** comando. Il tentativo di ripubblicare lo stesso nome di risorsa con contenuti diversi genererà un errore di conflitto HTTP 409. 

 Per i formati di pacchetto che supportano più risorse (generico, PyPI e Maven), puoi aggiungere nuove risorse con nomi diversi a una versione del pacchetto esistente, supponendo che tu disponga delle autorizzazioni richieste. Per i pacchetti generici, potete aggiungere nuove risorse purché la versione del pacchetto sia nello stato. `Unfinished` Poiché npm supporta solo una singola risorsa per versione del pacchetto, per modificare in qualsiasi modo una versione del pacchetto pubblicata, devi prima eliminarla utilizzando**delete-package-versions**. 

 Se provate a ripubblicare una risorsa già esistente (ad esempio`mypackage-1.0.jar`) e il contenuto della risorsa pubblicata e della nuova risorsa sono identici, l'operazione avrà successo perché l'operazione è idempotente. 

### Pacchetti privati e archivi pubblici
<a name="package-publishing-upstreams-direct"></a>

 CodeArtifact non pubblica i pacchetti archiviati negli CodeArtifact archivi in archivi pubblici come npmjs.com o Maven Central. CodeArtifact importa pacchetti da repository pubblici a un CodeArtifact repository, ma non sposta mai i pacchetti nella direzione opposta. I pacchetti pubblicati CodeArtifact negli archivi rimangono privati e sono disponibili solo per AWS gli account, i ruoli e gli utenti a cui hai concesso l'accesso.

### Pubblicazione di versioni di pacchetti con patch
<a name="package-publishing-patched-versions"></a>

 A volte potresti voler pubblicare una versione modificata del pacchetto, potenzialmente una versione disponibile in un archivio pubblico. Ad esempio, potreste aver trovato un bug in una dipendenza critica dell'applicazione chiamata `mydep 1.1` e dovete correggerlo prima che il fornitore del pacchetto possa esaminare e accettare la modifica. Come descritto in precedenza, CodeArtifact impedisce la pubblicazione `mydep 1.1` nel CodeArtifact repository se l'archivio pubblico è raggiungibile dal repository tramite repository upstream e una CodeArtifact connessione esterna.

Per ovviare a questo problema, pubblica la versione del pacchetto in un CodeArtifact repository diverso in cui l'archivio pubblico non è raggiungibile. Quindi usa l'`copy-package-versions`API per copiare la versione con patch nel CodeArtifact repository `mydep 1.1` da cui la consumerai. 

### Limiti di dimensione degli asset per la pubblicazione
<a name="package-publishing-asset-size-limits"></a>

La dimensione massima di una risorsa del pacchetto che può essere pubblicata è limitata dalla quota **massima per le dimensioni del file Asset** mostrata in[Quote in AWS CodeArtifact](service-limits.md). Ad esempio, non potete pubblicare una ruota Maven JAR o Python più grande della dimensione massima del file di asset corrente. Se devi archiviare risorse più grandi in CodeArtifact, richiedi un aumento della quota.

Oltre alla quota massima per la dimensione del file di asset, la dimensione massima di una richiesta di pubblicazione per i pacchetti npm è di 2 GB. Questo limite è indipendente dalla quota massima per la dimensione del file di asset e non può essere aumentato con un aumento della quota. In una richiesta di pubblicazione npm (HTTP PUT), i metadati del pacchetto e il contenuto dell'archivio tar del pacchetto npm sono raggruppati insieme. Per questo motivo, la dimensione massima effettiva di un pacchetto npm che può essere pubblicato varia e dipende dalla dimensione dei metadati inclusi.

**Nota**  
I pacchetti npm pubblicati sono limitati a una dimensione massima inferiore a 2 GB.

### Latenza di pubblicazione
<a name="package-publishing-latency"></a>

Le versioni dei pacchetti pubblicate in un CodeArtifact repository sono spesso disponibili per il download in meno di un secondo. Ad esempio, se si pubblica una versione del pacchetto npm su CodeArtifact with`npm publish`, tale versione dovrebbe essere disponibile per un `npm install` comando in meno di un secondo. Tuttavia, la pubblicazione può essere incoerente e talvolta può richiedere più tempo. Se dovete utilizzare una versione del pacchetto subito dopo la pubblicazione, utilizzate nuovi tentativi per assicurarvi che il download sia affidabile. Ad esempio, dopo aver pubblicato la versione del pacchetto, ripeti il download fino a tre volte se la versione del pacchetto appena pubblicata non è inizialmente disponibile al primo tentativo di download.

**Nota**  
L'importazione di una versione del pacchetto da un archivio pubblico richiede in genere più tempo della pubblicazione. Per ulteriori informazioni, consulta [Latenza della connessione esterna](external-connection-requesting-packages.md#external-connection-latency).

## Stato della versione del pacchetto
<a name="package-version-status"></a>

Ogni versione del pacchetto in CodeArtifact ha uno stato che descrive lo stato corrente e la disponibilità della versione del pacchetto. È possibile modificare lo stato della versione del pacchetto in AWS CLI and SDK. Per ulteriori informazioni, consulta [Aggiorna lo stato della versione del pacchetto](update-package-version-status.md). 

Di seguito sono riportati i valori possibili per lo stato della versione del pacchetto:
+  **Pubblicato**: la versione del pacchetto è stata pubblicata correttamente e può essere richiesta utilizzando un gestore di pacchetti. La versione del pacchetto verrà inclusa negli elenchi delle versioni dei pacchetti restituiti ai gestori di pacchetti, ad esempio, nell'output di`npm view <package-name> versions`. Tutte le risorse della versione del pacchetto sono disponibili nel repository. 
+  **Incompiuto**: il client ha caricato una o più risorse per una versione del pacchetto, ma non l'ha finalizzata spostandola nello stato. `Published` Attualmente solo le versioni generiche e del pacchetto Maven possono avere lo stato di. `Unfinished` Per i pacchetti Maven, ciò può verificarsi quando il client carica una o più risorse per una versione del pacchetto ma non pubblica un `maven-metadata.xml` file per il pacchetto che include quella versione. Quando una versione del pacchetto Maven è **incompleta**, non verrà inclusa negli elenchi di versioni restituiti ai client di questo tipo `mvn` o`gradle`, quindi non può essere utilizzata come parte di una build. I pacchetti generici possono essere mantenuti deliberatamente `Unfinished` nello stato fornendo il `unfinished` flag quando si chiama l'API. [PublishPackageVersion](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PublishPackageVersion.html) Un pacchetto generico può essere modificato in `Published` stato omettendo il `unfinished` flag o chiamando l'[UpdatePackageVersionsStatus](https://docs.aws.amazon.com//codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html)API. 
+  **Non in elenco**: le risorse della versione del pacchetto possono essere scaricate dal repository, ma la versione del pacchetto non è inclusa nell'elenco delle versioni restituite ai gestori di pacchetti. Ad esempio, per un pacchetto npm, l'output di non `npm view <package-name> versions` includerà la versione del pacchetto. Ciò significa che la logica di risoluzione delle dipendenze di npm non selezionerà la versione del pacchetto perché la versione non appare nell'elenco delle versioni disponibili. Tuttavia, se la versione del pacchetto **Unlisted** è già referenziata in un `npm package-lock.json` file, può comunque essere scaricata e installata, ad esempio, durante l'esecuzione. `npm ci` 
+  **Archiviata**: le risorse della versione del pacchetto non possono più essere scaricate. La versione del pacchetto non verrà inclusa nell'elenco delle versioni restituite ai gestori di pacchetti. Poiché gli asset non sono disponibili, il consumo della versione del pacchetto da parte dei client è bloccato. Se la build dell'applicazione dipende da una versione aggiornata a **Archived**, la build si interromperà, supponendo che la versione del pacchetto non sia stata memorizzata nella cache locale. **[Non è possibile utilizzare un gestore di pacchetti o uno strumento di compilazione per ripubblicare una versione del pacchetto **archiviata** perché è ancora presente nel repository, ma è possibile modificare lo stato della versione del pacchetto riportandola a **Non** elencata o Pubblicata con l'API. UpdatePackageVersionsStatus ](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html)** 
+  **Eliminata:** la versione del pacchetto non viene visualizzata negli elenchi e le risorse non possono essere scaricate dall'archivio. La differenza fondamentale tra **Disposed** e **Archived** è che con lo stato **Disposed**, le risorse della versione del pacchetto verranno eliminate definitivamente da. CodeArtifact ****Per questo motivo, non è possibile spostare una versione del pacchetto da **Disposed** a **Archiviata, Non elencata** o Pubblicata.**** La versione del pacchetto non può più essere utilizzata perché le risorse sono state eliminate. Dopo che una versione del pacchetto è stata contrassegnata come **Disposta**, non ti verrà più addebitato alcun costo per l'archiviazione delle risorse del pacchetto. 

Le versioni del pacchetto di tutti gli stati verranno restituite per impostazione predefinita quando si chiama list-package-versions senza `--status` parametri.

 Oltre agli stati elencati in precedenza, è possibile eliminare anche una versione del pacchetto con l'[DeletePackageVersionsAPI](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DeletePackageVersions.html). Dopo l'eliminazione, una versione del pacchetto non è più presente nell'archivio ed è possibile ripubblicare liberamente quella versione del pacchetto utilizzando un gestore di pacchetti o uno strumento di compilazione. Dopo l'eliminazione di una versione del pacchetto, non ti verrà più addebitato alcun costo per l'archiviazione delle risorse di quella versione del pacchetto. 

## Nome del pacchetto, versione del pacchetto e normalizzazione del nome dell'asset
<a name="package-name-normalization"></a>

CodeArtifact normalizza i nomi dei pacchetti, le versioni dei pacchetti e i nomi delle risorse prima di archiviarli, il che significa che i nomi o le versioni CodeArtifact possono essere diversi dal nome o dalla versione forniti al momento della pubblicazione del pacchetto. Per ulteriori informazioni su come vengono normalizzati i nomi e le versioni CodeArtifact per ogni tipo di pacchetto, consultate la seguente documentazione:
+ [Normalizzazione dei nomi dei pacchetti in Python](python-name-normalization.md)
+ [NuGet normalizzazione del nome del pacchetto, della versione e del nome dell'asset](nuget-name-normalization.md)

CodeArtifact non esegue la normalizzazione su altri formati di pacchetti.

# Elenca i nomi dei pacchetti
<a name="list-packages"></a>

Usa il `list-packages` comando in CodeArtifact per ottenere un elenco di tutti i nomi dei pacchetti in un repository. Questo comando restituisce solo i nomi dei pacchetti, non le versioni.

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

Output di esempio:

```
{
    "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"
            }
        }
    ]
}
```

## Elenca i nomi dei pacchetti npm
<a name="list-packages-npm"></a>

Per elencare solo i nomi dei pacchetti npm, imposta il valore dell'`--format`opzione su. `npm`

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

Per elencare i pacchetti npm in uno spazio dei nomi (*ambito* npm), usa le opzioni and. `--namespace` `--format`

**Importante**  
Il valore dell'`--namespace`opzione non dovrebbe includere l'iniziale. `@` Per cercare lo spazio dei nomi`@types`, impostate il valore su. *types*

**Nota**  
L'`--namespace`opzione filtra in base al prefisso del namespace. Qualsiasi pacchetto npm con un ambito che inizia con il valore passato all'`--namespace`opzione verrà restituito nella risposta. `list-packages`

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

Output di esempio:

```
{
    "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"

        }
    ]
}
```

## Elenca i nomi dei pacchetti Maven
<a name="list-packages-maven"></a>

Per elencare solo i nomi dei pacchetti Maven, imposta il valore dell'opzione su. `--format` `maven` È inoltre necessario specificare l'ID del gruppo Maven nell'opzione. `--namespace`

**Nota**  
L'`--namespace`opzione filtra in base al prefisso dello spazio dei nomi. Qualsiasi pacchetto npm con un ambito che inizia con il valore passato all'`--namespace`opzione verrà restituito nella risposta. `list-packages`

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

Output di esempio:

```
{
    "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"

        }
    ]
}
```

## Elenca i nomi dei pacchetti Python
<a name="list-packages-python"></a>

Per elencare solo i nomi dei pacchetti Python, imposta il valore dell'`--format`opzione su. `pypi`

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

## Filtra per prefisso del nome del pacchetto
<a name="list-packages-package-prefix"></a>

 Per restituire i pacchetti che iniziano con una stringa specificata, puoi usare l'`--package-prefix`opzione. 

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

Output di esempio:

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

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

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

        }
    ]
}
```

## Combinazioni di opzioni di ricerca supportate
<a name="list-packages-option-combinations"></a>

È possibile utilizzare le `--package-prefix` opzioni `--format``--namespace`, e in qualsiasi combinazione, ad eccezione di quelle che non `--namespace` possono essere utilizzate da sole. La ricerca di tutti i pacchetti npm con un ambito che inizia con `@types` richiede la specificazione dell'`--format`opzione. L'utilizzo `--namespace` da solo genera un errore. 

 L'utilizzo di nessuna delle tre opzioni è supportato anche da `list-packages` e restituirà tutti i pacchetti di tutti i formati presenti nel repository. 

## Formatta l'output
<a name="list-packages-format-output"></a>

 È possibile utilizzare parametri disponibili per tutti i AWS CLI comandi per rendere la `list-packages` risposta compatta e più leggibile. Utilizzate il `--query` parametro per specificare il formato di ogni versione del pacchetto restituito. Utilizzate il `--output` parametro per formattare la risposta come testo normale. 

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

Output di esempio:

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

 Per ulteriori informazioni, consulta ‭[‬Controllo dell’output del comando da ‭ AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html) nella ‭*‬Guida per l'utente di AWS Command Line Interface ‬‭*. 

## Impostazioni predefinite e altre opzioni
<a name="list-packages-defaults-options"></a>

 Per impostazione predefinita, il numero massimo di risultati restituiti da `list-packages` è 100. È possibile modificare questo limite di risultati utilizzando l'`--max-results`opzione.

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

Il valore massimo consentito di `--max-results` è 1.000. Per consentire l'inserimento di pacchetti in repository con più di 1.000 pacchetti, `list-packages` supporta l'impaginazione utilizzando il `nextToken` campo nella risposta. Se il numero di pacchetti nel repository è superiore al valore di`--max-results`, è possibile passare il valore di `nextToken` a un'altra chiamata di per `list-packages` ottenere la pagina successiva di risultati.

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

# Elenca le versioni dei pacchetti
<a name="list-packages-versions"></a>

Usa il `list-package-versions` comando in AWS CodeArtifact per ottenere un elenco di tutte le versioni di un nome di pacchetto in un repository.

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

Output di esempio:

```
{
  "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"
            }
      }        
  ]
}
```

È possibile aggiungere il `--status` parametro alla `list-package-versions` chiamata per filtrare i risultati in base allo stato della versione del pacchetto. Per ulteriori informazioni sullo stato della versione del pacchetto, vedere[Stato della versione del pacchetto](packages-overview.md#package-version-status). 

 È possibile impaginare la risposta `list-package-versions` utilizzando i `--next-token` parametri `--max-results` and. Per`--max-results`, specificate un numero intero compreso tra 1 e 1000 per specificare il numero di risultati restituiti in una singola pagina. L'impostazione predefinita è 50. Per tornare alle pagine successive, esegui `list-package-versions` nuovamente e passa il `nextToken` valore ricevuto nell'output del comando precedente a`--next-token`. Quando l'`--next-token`opzione non viene utilizzata, viene sempre restituita la prima pagina dei risultati. 

 Il `list-package-versions` comando non elenca le versioni dei pacchetti negli archivi upstream. Tuttavia, vengono elencati i riferimenti alle versioni dei pacchetti in un repository upstream che sono state copiate nel repository durante una richiesta di versione del pacchetto. Per ulteriori informazioni, consulta [Lavorare con i repository upstream in CodeArtifact](repos-upstream.md). 

## Elenca le versioni del pacchetto npm
<a name="list-packages-versions-npm"></a>

Per elencare tutte le versioni del pacchetto per un pacchetto npm, imposta il valore dell'`--format`opzione su. `npm`

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

Per elencare le versioni del pacchetto npm in uno spazio dei nomi specifico (*ambito* npm), usa l'opzione. `--namespace` Il valore dell'`--namespace`opzione non deve includere l'iniziale. `@` Per cercare lo spazio dei nomi`@types`, impostate il valore su. *types*

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

## Elenca le versioni del pacchetto Maven
<a name="list-packages-versions-maven"></a>

Per elencare tutte le versioni del pacchetto per un pacchetto Maven, imposta il valore dell'opzione su. `--format` `maven` È inoltre necessario specificare l'ID del gruppo Maven nell'opzione. `--namespace`

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

## Ordina le versioni
<a name="list-package-versions-sorting"></a>

 `list-package-versions`può generare versioni ordinate in ordine decrescente in base alla data di pubblicazione (le versioni pubblicate più di recente vengono elencate per prime). Utilizzate il `--sort-by` parametro con un valore pari a, come segue. `PUBLISHED_TIME`

```
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
```

 Output di esempio: 

```
{

  "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...."
}
```

## Versione di visualizzazione predefinita
<a name="list-package-versions-default-version"></a>

 Il valore restituito per `defaultDisplayVersion` dipende dal formato del pacchetto: 
+  Per i pacchetti generici, Maven e PyPI, è la versione del pacchetto pubblicata più di recente. 
+  Per i pacchetti npm, è la versione a cui fa riferimento il tag. `latest` Se il `latest` tag non è impostato, è la versione del pacchetto pubblicata più di recente. 

## Formatta l'output
<a name="list-package-versions-format-output"></a>

 È possibile utilizzare parametri disponibili per tutti i AWS CLI comandi per rendere la `list-package-versions` risposta compatta e più leggibile. Utilizzate il `--query` parametro per specificare il formato di ogni versione del pacchetto restituito. Utilizzate il `--output` parametro per formattare la risposta come testo semplice. 

```
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]'
```

Output di esempio:

```
0.1.1
0.1.2
0.1.0
3.0.0
```

 Per ulteriori informazioni, consultate [Controllare l'output dei AWS CLI comandi dalla](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html) *Guida AWS Command Line Interface per l'utente*. 

# Elenca le risorse della versione del pacchetto
<a name="list-assets"></a>

Una *risorsa* è un singolo file (ad esempio, un file npm o un `.tgz` file Maven POM o JAR) archiviato in CodeArtifact e associato a una versione del pacchetto. È possibile utilizzare il `list-package-version-assets` comando per elencare le risorse in ogni versione del pacchetto.

Esegui il `list-package-version-assets` comando per restituire le seguenti informazioni su ogni risorsa del tuo AWS account e della tua AWS regione attuale:
+  Il suo nome. 
+  Le sue dimensioni, in byte. 
+  Un insieme di valori hash utilizzati per la convalida dei checksum. 

Ad esempio, utilizzate il comando seguente per elencare gli asset del pacchetto 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
```

Di seguito è riportato l'output.

```
{
    "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"
            }
        }
    ]
}
```

## Elenca gli asset di un pacchetto npm
<a name="list-assets-npm"></a>

Un pacchetto npm ha sempre una singola risorsa con un nome di. `package.tgz` Per elencare le risorse di un pacchetto npm con ambito, includi l'ambito nell'opzione. `--namespace`

```
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
```

## Elenca le risorse di un pacchetto Maven
<a name="list-assets-maven"></a>

Per elencare gli asset di un pacchetto Maven, includi il namespace del pacchetto nell'opzione. `--namespace` Per elencare gli asset del pacchetto 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
```

# Scarica gli asset della versione del pacchetto
<a name="download-assets"></a>

Una *risorsa* è un singolo file (ad esempio, un file npm o un `.tgz` file Maven POM o JAR) archiviato in CodeArtifact e associato a una versione del pacchetto. È possibile scaricare le risorse del pacchetto utilizzando. `get-package-version-assets command` Ciò consente di recuperare le risorse senza utilizzare un client di gestione dei pacchetti come `npm` o`pip`. Per scaricare una risorsa è necessario fornire il nome della risorsa che può essere ottenuto utilizzando il `list-package-version-assets` comando, per ulteriori informazioni, vedere[Elenca le risorse della versione del pacchetto](list-assets.md). La risorsa verrà scaricata nella memoria locale con un nome di file specificato dall'utente.

L'esempio seguente scarica la *guava-27.1-jre.jar* risorsa dal pacchetto Maven *com.google.guava:guava* con versione. *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
```

 In questo esempio, il nome del file è stato specificato come *guava-27.1-jre.jar* nell'ultimo argomento del comando precedente, quindi la risorsa scaricata verrà denominata. *guava-27.1-jre.jar* 

L'output del comando sarà:

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

**Nota**  
Per scaricare risorse da un pacchetto npm con ambito, includi l'ambito nell'`--namespace`opzione. Il `@` simbolo deve essere omesso durante l'utilizzo. `--namespace` Ad esempio, se l'ambito è`@types`, usa`--namespace types`.

 Il download di risorse utilizzando `get-package-version-asset` richiede l'`codeartifact:GetPackageVersionAsset`autorizzazione sulla risorsa del pacchetto. *Per ulteriori informazioni sulle politiche di autorizzazione basate sulle risorse, consultate Politiche basate sulle [risorse](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based) nella Guida per l'utente.AWS Identity and Access Management * 

# Copia i pacchetti tra i repository
<a name="copy-package"></a>

È possibile copiare le versioni dei pacchetti da un repository a un altro in. CodeArtifact Ciò può essere utile per scenari come i flussi di lavoro per la promozione dei pacchetti o la condivisione delle versioni dei pacchetti tra team o progetti. I repository di origine e di destinazione devono trovarsi nello stesso dominio per copiare le versioni dei pacchetti.

## Autorizzazioni IAM richieste per copiare i pacchetti
<a name="copypackageversions-iam-actions"></a>

Per copiare le versioni dei pacchetti CodeArtifact, l'utente chiamante deve disporre delle autorizzazioni IAM richieste e la policy basata sulle risorse allegata ai repository di origine e destinazione deve disporre delle autorizzazioni richieste. Per ulteriori informazioni sulle politiche e sugli archivi di autorizzazioni basati sulle risorse, consulta. CodeArtifact [Policy del repository](repo-policies.md)

L'utente che chiama `copy-package-versions` deve avere l'`ReadFromRepository`autorizzazione sul repository di origine e l'autorizzazione sul repository di destinazione. `CopyPackageVersions`

Il repository di origine deve disporre dell'`ReadFromRepository`autorizzazione e il repository di destinazione deve avere l'`CopyPackageVersions`autorizzazione assegnata all'account IAM o all'utente che copia i pacchetti. Le seguenti politiche sono esempi di politiche di repository da aggiungere al repository di origine o al repository di destinazione con il comando. `put-repository-permissions-policy` Sostituisci *111122223333* con l'ID dell'account chiamante. `copy-package-versions`

**Nota**  
La chiamata `put-repository-permissions-policy` sostituirà l'attuale politica del repository, se ne esiste una. Puoi usare il `get-repository-permissions-policy` comando per vedere se esiste una politica, per maggiori informazioni vedi[Leggi una politica](repo-policies.md#reading-a-policy). Se una politica esiste, potresti voler aggiungere queste autorizzazioni ad essa invece di sostituirla.

**Esempio di politica di autorizzazione del repository di origine**

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

****  

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

------

**Esempio di politica di autorizzazione del repository di destinazione**

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

****  

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

------

## Copia le versioni dei pacchetti
<a name="copy-package-versions"></a>

Usa il `copy-package-versions` comando in CodeArtifact per copiare una o più versioni del pacchetto da un repository di origine a un repository di destinazione nello stesso dominio. L'esempio seguente copierà le versioni 6.0.2 e 4.0.0 di un pacchetto npm denominato `my-package` dal repository al repository. `my_repo` `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
```

È possibile copiare più versioni dello stesso nome di pacchetto in un'unica operazione. Per copiare versioni di nomi di pacchetto diversi, è necessario chiamare ciascuno `copy-package-versions` di essi.

Il comando precedente produrrà l'output seguente, supponendo che entrambe le versioni possano essere copiate correttamente.

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

## Copia un pacchetto dai repository upstream
<a name="copy-package-upstream"></a>

Normalmente, cerca nel repository specificato dall'`--source-repository`opzione `copy-package-versions` solo le versioni da copiare. Tuttavia, è possibile copiare le versioni sia dal repository di origine che dai relativi repository upstream utilizzando l'opzione. `--include-from-upstream` Se utilizzi l' CodeArtifact SDK, chiama l'`CopyPackageVersions`API con il `includeFromUpstream` parametro impostato su true. Per ulteriori informazioni, consulta [Lavorare con i repository upstream in CodeArtifact](repos-upstream.md).

## Copia un pacchetto npm con ambito
<a name="copying-a-scoped-npm-package"></a>

 Per copiare una versione del pacchetto npm in un ambito, usa l'`--namespace`opzione per specificare l'ambito. Ad esempio, per copiare il pacchetto`@types/react`, usa`--namespace types`. Il `@` simbolo deve essere omesso durante l'utilizzo`--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
```

## Copia le versioni del pacchetto Maven
<a name="copying-a-maven-package"></a>

Per copiare le versioni dei pacchetti Maven tra i repository, specifica il pacchetto da copiare passando l'ID del gruppo Maven con l'`--namespace`opzione e il Maven ArtifactID con l'opzione. `--name` Ad esempio, per copiare una singola versione di: `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
```

Se la versione del pacchetto viene copiata correttamente, l'output sarà simile al seguente.

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

## Versioni che non esistono nel repository di origine
<a name="versions-that-do-not-exist-in-the-source-repository"></a>

Se si specifica una versione che non esiste nel repository di origine, la copia avrà esito negativo. Se alcune versioni esistono nel repository di origine e altre no, tutte le versioni non verranno copiate. Nell'esempio seguente, la versione 0.2.0 del pacchetto `array-unique` npm è presente nel repository dei sorgenti, ma la versione 5.6.7 no:

```
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
```

L'output in questo scenario sarà simile al seguente.

```
{
    "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"
        }
    }
}
```

Il codice `SKIPPED` di errore viene utilizzato per indicare che la versione non è stata copiata nel repository di destinazione perché non è stato possibile copiare un'altra versione. 

## Versioni già esistenti nel repository di destinazione
<a name="versions-that-already-exist-in-the-destination-repository"></a>

 Quando una versione del pacchetto viene copiata in un repository in cui esiste già, CodeArtifact confronta le risorse del pacchetto e i metadati a livello di versione del pacchetto nei due repository.

 Se le risorse e i metadati della versione del pacchetto sono identici negli archivi di origine e di destinazione, non viene eseguita una copia ma l'operazione viene considerata riuscita. Ciò significa che `copy-package-versions` è idempotente. Quando ciò si verifica, la versione che era già presente nei repository di origine e di destinazione non verrà elencata nell'output di. `copy-package-versions`

Nell'esempio seguente, due versioni del pacchetto npm `array-unique` sono presenti nel repository dei sorgenti. `repo-1` La versione 0.2.1 è presente anche nel repository di destinazione `dest-repo` e la versione 0.2.0 no.

```
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
```

L'output in questo scenario sarà simile al seguente.

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

La versione 0.2.0 è elencata in `successfulVersions` quanto è stata copiata correttamente dal repository di origine a quello di destinazione. La versione 0.2.1 non viene mostrata nell'output in quanto era già presente nell'archivio di destinazione.

 Se le risorse o i metadati della versione del pacchetto differiscono negli archivi di origine e di destinazione, l'operazione di copia avrà esito negativo. È possibile utilizzare il `--allow-overwrite` parametro per forzare una sovrascrittura. 

Se alcune versioni esistono nel repository di destinazione e altre no, tutte le versioni non verranno copiate. Nell'esempio seguente, la versione 0.3.2 del pacchetto `array-unique` npm è presente sia nell'archivio di origine che in quello di destinazione, ma i contenuti della versione del pacchetto sono diversi. La versione 0.2.1 è presente nel repository di origine ma non in quello di destinazione.

```
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
```

L'output in questo scenario sarà simile al seguente.

```
{
    "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 versione 0.2.1 è contrassegnata come `SKIPPED` se non fosse stata copiata nel repository di destinazione. Non è stato copiato perché la copia della versione 0.3.2 non è riuscita perché era già presente nel repository di destinazione, ma non era identica nei repository di origine e di destinazione.

## Specificare una revisione della versione del pacchetto
<a name="specify-package-version-revision"></a>

 Una revisione della versione del pacchetto è una stringa che specifica un insieme specifico di risorse e metadati per una versione del pacchetto. È possibile specificare una revisione della versione del pacchetto per copiare le versioni del pacchetto che si trovano in uno stato specifico. Per specificare una revisione della versione del pacchetto, utilizzate il `--version-revisions` parametro per passare al comando una o più versioni del pacchetto separate da virgole e le coppie di revisione della versione del pacchetto. `copy-package-versions` 

**Nota**  
È necessario specificare il parametro o con`--versions`. `--version-revisions` `copy-package-versions` Non è possibile specificare entrambi. 

L'esempio seguente copierà la versione 0.3.2 del pacchetto solo `my-package` se è presente nell'archivio dei sorgenti con la revisione della versione del pacchetto. `REVISION-1-SAMPLE-6C81EFF7DA55CC`

```
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'esempio seguente copia due versioni del pacchetto`my-package`, 0.3.2 e 0.3.13. La copia avrà successo solo se nel repository di origine la versione 0.3.2 di `my-package` ha una revisione e la versione 0.3.13 ha una revisione`REVISION-1-SAMPLE-6C81EFF7DA55CC`. `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
```

 Per trovare le revisioni di una versione del pacchetto, usa il comando o. `describe-package-version` `list-package-versions` 

 Per ulteriori informazioni, consulta le pagine [Revisione della versione del pacchetto](codeartifact-concepts.md#welcome-concepts-package-version-revision) e [CopyPackageVersion](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_CopyPackageVersions.html) nella *Documentazione di riferimento dell'API CodeArtifact *. 

## Copia i pacchetti npm
<a name="copying-npm-packages"></a>

 Per ulteriori informazioni sul `copy-package-versions` comportamento con i pacchetti npm, consulta i [tag npm e](npm-tags.md#tags-and-cpv) l'API. CopyPackageVersions 

# Eliminare un pacchetto o una versione del pacchetto
<a name="delete-package"></a>

È possibile eliminare una o più versioni del pacchetto alla volta utilizzando il `delete-package-versions` comando. Per rimuovere completamente un pacchetto da un repository, incluse tutte le versioni e le configurazioni associate, usa il `delete-package` comando. Un pacchetto può esistere in un repository senza alcuna versione del pacchetto. Ciò può accadere quando tutte le versioni vengono eliminate utilizzando il `delete-package-versions` comando o se il pacchetto è stato creato senza alcuna versione utilizzando l'operazione `put-package-origin-configuration` API (vedi[Modifica dei controlli di origine dei pacchetti](package-origin-controls.md)).

**Topics**
+ [Eliminazione di un pacchetto (AWS CLI)](#delete-package-CLI)
+ [Eliminazione di un pacchetto (console)](#delete-package-console)
+ [Eliminazione di una versione del pacchetto ()AWS CLI](#delete-package-version-CLI)
+ [Aggiunta di una versione del pacchetto (console)](#delete-package-version-console)
+ [Eliminazione di un pacchetto npm o di una versione del pacchetto](#delete-package-npm)
+ [Eliminazione di un pacchetto Maven o di una versione del pacchetto](#delete-package-maven)
+ [Procedure consigliate per l'eliminazione di pacchetti o versioni di pacchetti](#delete-package-bp)

## Eliminazione di un pacchetto (AWS CLI)
<a name="delete-package-CLI"></a>

È possibile eliminare un pacchetto, incluse tutte le versioni e la configurazione del pacchetto, utilizzando il `delete-package` comando. L'esempio seguente elimina il pacchetto PyPI `my-package` denominato nel `my_repo` repository nel dominio: `my_domain`

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

Output di esempio:

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

È possibile confermare che il pacchetto è stato eliminato eseguendo l'esecuzione con lo stesso `describe-package` nome di pacchetto:

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

## Eliminazione di un pacchetto (console)
<a name="delete-package-console"></a>

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

1. Nel riquadro di navigazione, selezionare **Repositories (Repository)**.

1. Scegli il **repository** da cui desideri eliminare un pacchetto.

1. Scegli il **Package** che desideri eliminare.

1. Scegli **Delete Package**.

## Eliminazione di una versione del pacchetto ()AWS CLI
<a name="delete-package-version-CLI"></a>

È possibile eliminare una o più versioni del pacchetto alla volta utilizzando il `delete-package-versions` comando. L'esempio seguente elimina `4.0.0` le `4.0.1` versioni e e `5.0.0` del pacchetto PyPI `my-package` denominato `my_repo` nel `my_domain` dominio:

```
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
```

Output di esempio:

```
{
   "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": {}
}
```

È possibile confermare che le versioni sono state eliminate eseguendo l'esecuzione `list-package-versions` con lo stesso nome di pacchetto:

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

## Aggiunta di una versione del pacchetto (console)
<a name="delete-package-version-console"></a>

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

1. Nel riquadro di navigazione, selezionare **Repositories (Repository)**.

1. Scegli il **repository** da cui desideri eliminare le versioni del pacchetto.

1. Scegli il **Package** da cui desideri eliminare le versioni.

1. Seleziona la **versione del pacchetto** che desideri eliminare.

1. Scegli **Elimina**.
**Nota**  
Nella console, puoi eliminare solo una versione del pacchetto alla volta. Per eliminarne più di uno alla volta, usa la CLI.

## Eliminazione di un pacchetto npm o di una versione del pacchetto
<a name="delete-package-npm"></a>

Per eliminare un pacchetto npm o singole versioni del pacchetto, imposta l'`--format`opzione su. `npm` Per eliminare una versione del pacchetto in un pacchetto npm con ambito, usa l'`--namespace`opzione per specificare l'ambito. Ad esempio, per eliminare il pacchetto`@types/react`, usa. `--namespace types` Omettete il `@` simbolo durante l'uso`--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
```

Per eliminare il pacchetto`@types/react`, incluse tutte le sue versioni:

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

## Eliminazione di un pacchetto Maven o di una versione del pacchetto
<a name="delete-package-maven"></a>

Per eliminare un pacchetto Maven o singole versioni del pacchetto, imposta l'`--format`opzione su `maven` e specifica il pacchetto da eliminare passando l'ID del gruppo Maven con l'opzione e il Maven ArtifactID con l'`--namespace`opzione. `--name` Ad esempio, quanto segue mostra come eliminare una singola versione di: `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'esempio seguente mostra come eliminare il pacchetto`com.google.guava:guava`, incluse tutte le sue versioni:

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

## Procedure consigliate per l'eliminazione di pacchetti o versioni di pacchetti
<a name="delete-package-bp"></a>

Se è necessario eliminare una versione del pacchetto, come procedura consigliata è consigliabile creare un repository per archiviare una copia di backup della versione del pacchetto che si desidera eliminare. Puoi farlo chiamando prima l'archivio `copy-package-versions` di backup: 

```
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
```

Dopo aver copiato la versione del pacchetto, puoi richiamare `delete-package-versions` il pacchetto o la versione del pacchetto che desideri eliminare.

```
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
```

# Visualizza e aggiorna i dettagli e le dipendenze della versione del pacchetto
<a name="describe-package-version"></a>

È possibile visualizzare le informazioni sulla versione di un pacchetto, comprese le dipendenze, in. CodeArtifact Puoi anche aggiornare lo stato di una versione del pacchetto. Per ulteriori informazioni sullo stato della versione del pacchetto, vedere[Stato della versione del pacchetto](packages-overview.md#package-version-status). 

## Visualizza i dettagli della versione del pacchetto
<a name="view-package-details"></a>

 Utilizzate il `describe-package-version` comando per visualizzare i dettagli sulle versioni dei pacchetti. I dettagli della versione del pacchetto vengono estratti da un pacchetto quando viene pubblicato su. CodeArtifact I dettagli nei diversi pacchetti variano e dipendono dai loro formati e dalla quantità di informazioni che gli autori hanno aggiunto. 

 La maggior parte delle informazioni nell'output del `describe-package-version` comando dipende dal formato del pacchetto. Ad esempio, `describe-package-version` estrae le informazioni di un pacchetto npm dal relativo `package.json` file. La revisione è stata creata da. CodeArtifact Per ulteriori informazioni, consulta [Specificare una revisione della versione del pacchetto](copy-package.md#specify-package-version-revision). 

 Due versioni di pacchetto con lo stesso nome possono trovarsi nello stesso repository se ognuna si trova in namespace diversi. Utilizzate il `--namespace` parametro opzionale per specificare uno spazio dei nomi. Per ulteriori informazioni, consulta [Visualizza i dettagli della versione del pacchetto npm](#describe-package-version-npm) o [Visualizza i dettagli della versione del pacchetto Maven](#describe-package-version-maven).

 L'esempio seguente restituisce dettagli sulla versione `1.9.0` di un pacchetto Python denominato `pyhamcrest` che si trova nel `my_repo` repository. 

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

 L'output potrebbe essere simile al seguente.

```
{
  "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"
}
```

**Nota**  
CodeArtifact recupera i dettagli della versione del pacchetto, come la home page del pacchetto o le informazioni sulla licenza del pacchetto, dai metadati forniti dall'autore del pacchetto. Se una di queste informazioni supera i 400 KB, che è il limite di dimensione degli elementi di DynamoDB CodeArtifact , non sarà in grado di elaborare tali dati e potresti non visualizzare queste informazioni sulla console o nella risposta di. `describe-package-version` [Ad esempio, un pacchetto python come pi. https://py org/project/rapyd-sdk/](https://pypi.org/project/rapyd-sdk/) ha un campo di licenza molto grande, quindi queste informazioni non verrebbero elaborate da. CodeArtifact

## Visualizza i dettagli della versione del pacchetto npm
<a name="describe-package-version-npm"></a>

Per visualizzare i dettagli sulla versione di un pacchetto npm, imposta il valore dell'`--format`opzione su. **npm** Facoltativamente, includi lo spazio dei nomi della versione del pacchetto (npm *scope*) nell'opzione. `--namespace` Il valore dell'`--namespace`opzione non deve includere l'interlinea. `@` Per cercare lo spazio dei nomi`@types`, impostate il valore su. *types*

Quanto segue restituisce i dettagli sulla versione `4.41.5` di un pacchetto npm denominato `webpack` nell'ambito. `@types` 

```
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
```

 L'output potrebbe essere simile al seguente. 

```
{
  "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"
  }
}
```

## Visualizza i dettagli della versione del pacchetto Maven
<a name="describe-package-version-maven"></a>

Per visualizzare i dettagli sulla versione di un pacchetto Maven, imposta il valore dell'`--format`opzione su `maven` e includi lo spazio dei nomi della versione del pacchetto nell'opzione. `--namespace`

 L'esempio seguente restituisce i dettagli sulla versione `1.2` di un pacchetto Maven denominato `commons-rng-client-api` che si trova nello spazio dei nomi e nel repository. `org.apache.commons` `my_repo` 

```
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
```

 L'output potrebbe essere simile al seguente.

```
{
  "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"
}
```

**Nota**  
CodeArtifact non estrae le informazioni dettagliate sulla versione del pacchetto dai file POM principali. I metadati per una determinata versione del pacchetto includeranno solo le informazioni nel POM relative a quella versione esatta del pacchetto, non al POM principale o a qualsiasi altro POM a cui si fa riferimento transitivamente utilizzando il tag POM. `parent` Ciò significa che l'output di `describe-package-version` ometterà i metadati (come le informazioni sulla licenza) per le versioni del pacchetto Maven che si basano su un riferimento per contenere questi metadati. `parent`

## Visualizza le dipendenze delle versioni del pacchetto
<a name="view-package-dependencies"></a>

 Usa il `list-package-version-dependencies` comando per ottenere un elenco delle dipendenze della versione del pacchetto. Il comando seguente elenca le dipendenze di un pacchetto npm denominato`my-package`, version`4.41.5`, nel `my_repo` repository, nel dominio. `my_domain` 

```
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
```

 L'output potrebbe essere simile al seguente. 

```
{
  "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"
}
```

*Per l'intervallo di valori supportati per il campo DependencyType, consulta il tipo di [PackageDependency](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageDependency.html)dati nell'API. CodeArtifact *

## Visualizza il file readme della versione del pacchetto
<a name="view-package-readme"></a>

 Alcuni formati di pacchetto, come npm, includono un `README` file. Usa il `get-package-version-readme` per ottenere il `README` file di una versione del pacchetto. Il comando seguente restituisce il `README` file di un pacchetto npm denominato`my-package`, version`4.41.5`, nel `my_repo` repository, nel `my_domain` dominio. 

**Nota**  
CodeArtifact non supporta la visualizzazione di file readme da pacchetti generici o 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
```

 L'output potrebbe essere simile al seguente.

```
{  
  "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"
}
```

# Aggiorna lo stato della versione del pacchetto
<a name="update-package-version-status"></a>

Ogni versione del pacchetto in CodeArtifact ha uno stato che descrive lo stato corrente e la disponibilità della versione del pacchetto. È possibile modificare lo stato della versione del pacchetto utilizzando AWS CLI sia la console che la console.

**Nota**  
Per ulteriori informazioni sullo stato della versione del pacchetto, incluso un elenco degli stati disponibili, vedere[Stato della versione del pacchetto](packages-overview.md#package-version-status). 

## Aggiornamento dello stato della versione del pacchetto
<a name="updating-pv-status"></a>

L'impostazione dello stato di una versione del pacchetto consente di controllare come una versione del pacchetto può essere utilizzata senza eliminarla completamente dal repository. Ad esempio, quando la versione di un pacchetto ha lo stato di`Unlisted`, può comunque essere scaricata normalmente, ma non verrà visualizzata negli elenchi delle versioni del pacchetto restituiti a comandi come. `npm view` L'[UpdatePackageVersionsStatus API](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html) consente di impostare lo stato della versione del pacchetto di più versioni dello stesso pacchetto in un'unica chiamata API. Per una descrizione dei diversi stati, vedere[Panoramica dei pacchetti](packages-overview.md).

Utilizzate il `update-package-versions-status` comando per modificare lo stato di una versione del pacchetto in `Published``Unlisted`, o`Archived`. Per visualizzare le autorizzazioni IAM necessarie per utilizzare il comando, consulta[Autorizzazioni IAM richieste per aggiornare lo stato della versione di un pacchetto](#update-package-version-status-iam). L'esempio seguente imposta lo stato della versione 4.1.0 del pacchetto npm su. `chalk` `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
```

Output di esempio:

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

Questo esempio utilizza un pacchetto npm, ma il comando funziona in modo identico per altri formati. È possibile spostare più versioni allo stesso stato di destinazione utilizzando un singolo comando, vedi l'esempio seguente.

```
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
```

Output di esempio:

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

Nota che una volta pubblicata, una versione del pacchetto non può essere riportata allo `Unfinished` stato, quindi questo stato non è consentito come valore per il `--target-status` parametro. Per spostare la versione del pacchetto nello `Disposed` stato, utilizzate invece il `dispose-package-versions` comando come descritto di seguito.

## Autorizzazioni IAM richieste per aggiornare lo stato della versione di un pacchetto
<a name="update-package-version-status-iam"></a>

`update-package-versions-status`Per richiedere un pacchetto, è necessario disporre dell'`codeartifact:UpdatePackageVersionsStatus`autorizzazione sulla risorsa del pacchetto. Ciò significa che è possibile concedere l'autorizzazione alla chiamata `update-package-versions-status` in base al pacchetto. Ad esempio, una policy IAM che conceda il permesso di chiamare `update-package-versions-status` il pacchetto npm *chalk* includerebbe un'istruzione come la seguente.

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

## Aggiornamento dello stato di un pacchetto npm con ambito
<a name="update-package-version-status-scoped-npm"></a>

Per aggiornare lo stato della versione del pacchetto di una versione del pacchetto npm con un ambito, usa il parametro. `--namespace` Ad esempio, per rimuovere la versione 8.0.0 di`@nestjs/core`, utilizzate il comando seguente.

```
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
```

## Aggiornamento dello stato di un pacchetto Maven
<a name="update-package-version-status-maven"></a>

I pacchetti Maven hanno sempre un ID di gruppo, che viene chiamato namespace in. CodeArtifact Usa il `--namespace` parametro per specificare l'ID del gruppo Maven durante la chiamata. `update-package-versions-status` Ad esempio, per archiviare la versione 2.13.1 del pacchetto `org.apache.logging.log4j:log4j` Maven, utilizzare il comando seguente.

```
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
```

## Specificare una revisione della versione del pacchetto
<a name="update-status-specify-package-version-revision"></a>

Una revisione della versione del pacchetto è una stringa che specifica un insieme specifico di risorse e metadati per una versione del pacchetto. È possibile specificare una revisione della versione del pacchetto per aggiornare lo stato delle versioni del pacchetto che si trovano in uno stato specifico. Per specificare una revisione della versione del pacchetto, utilizzate il `--version-revisions` parametro per passare una o più versioni del pacchetto separate da virgole e le coppie di revisione delle versioni del pacchetto. Lo stato di una versione del pacchetto verrà aggiornato solo se la revisione corrente della versione del pacchetto corrisponde al valore specificato.

**Nota**  
Il `—-versions` parametro deve essere definito anche quando si utilizza il `--version-revisions` parametro.

```
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
```

Per aggiornare più versioni con un solo comando, passate un elenco separato da virgole di coppie di versioni e revisioni di versione alle opzioni. `--version-revisions` Il comando di esempio seguente definisce due diverse coppie di versione del pacchetto e di revisione della versione del pacchetto.

```
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
```

Output di esempio:

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

Quando si aggiornano più versioni del pacchetto, le versioni passate `--version-revisions` devono essere le stesse a `--versions` cui è stato passato. Se una revisione viene specificata in modo errato, lo stato di quella versione non verrà aggiornato.

## Utilizzo del parametro di stato previsto
<a name="using-expected-status"></a>

Il `update-package-versions-status` comando fornisce il `--expected-status` parametro che supporta la specificazione dello stato corrente previsto di una versione del pacchetto. Se lo stato corrente non corrisponde al valore passato`--expected-status`, lo stato di quella versione del pacchetto non verrà aggiornato.

Ad esempio*my\$1repo*, nelle versioni 4.0.0 e 4.1.0 del pacchetto npm `chalk` attualmente hanno uno stato di. `Published` Una chiamata a `update-package-versions-status` ciò specifica uno stato previsto di non `Unlisted` riuscirà ad aggiornare entrambe le versioni del pacchetto a causa della mancata corrispondenza dello stato.

```
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
```

Output di esempio:

```
{
    "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"
        }
    }
}
```

## Errori con le singole versioni del pacchetto
<a name="update-package-version-status-errors"></a>

Esistono diversi motivi per cui lo stato di una versione del pacchetto non viene aggiornato durante la chiamata`update-package-versions-status`. Ad esempio, la revisione della versione del pacchetto potrebbe essere stata specificata in modo errato o lo stato previsto non corrisponde allo stato corrente. In questi casi, la versione verrà inclusa nella `failedVersions` mappa nella risposta dell'API. Se una versione fallisce, è possibile che le altre versioni specificate nella stessa chiamata a `update-package-versions-status` vengano ignorate e il loro stato non sia aggiornato. Tali versioni verranno incluse anche nella `failedVersions` mappa con un `errorCode` di`SKIPPED`.

Nell'attuale implementazione di`update-package-versions-status`, se non è possibile modificare lo stato di una o più versioni, tutte le altre versioni verranno ignorate. Cioè, tutte le versioni vengono aggiornate correttamente o nessuna versione viene aggiornata. Questo comportamento non è garantito nel contratto API; in futuro, alcune versioni potrebbero avere successo mentre altre versioni falliranno in una singola chiamata a`update-package-versions-status`.

Il comando di esempio seguente include un errore di aggiornamento dello stato della versione causato da una mancata corrispondenza della versione della versione del pacchetto. Questo errore di aggiornamento fa sì che un'altra chiamata di aggiornamento dello stato della versione venga ignorata.

```
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
```

Output di esempio:

```
{
    "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="
        }
    }
}
```

## Eliminazione delle versioni dei pacchetti
<a name="dispose-package-versions"></a>

Lo stato del `Disposed` pacchetto ha un comportamento simile a`Archived`, tranne per il fatto che gli asset del pacchetto verranno eliminati definitivamente, CodeArtifact in modo che all'account del proprietario del dominio non venga più addebitato lo spazio di archiviazione degli asset. Per ulteriori informazioni sullo stato di ogni versione del pacchetto, consulta[Stato della versione del pacchetto](packages-overview.md#package-version-status). Per modificare lo stato di una versione del pacchetto in`Disposed`, usa il `dispose-package-versions` comando. Questa funzionalità è distinta dal `update-package-versions-status` fatto che lo smaltimento di una versione del pacchetto non è reversibile. Poiché le risorse del pacchetto verranno eliminate, lo stato della versione non può essere ripristinato in `Archived``Unlisted`, o. `Published` L'unica azione che può essere eseguita su una versione del pacchetto che è stata eliminata è eliminarla utilizzando il `delete-package-versions` comando.

Per chiamare `dispose-package-versions` correttamente, il principale IAM chiamante deve disporre dell'`codeartifact:DisposePackageVersions`autorizzazione sulla risorsa del pacchetto.

Il comportamento del `dispose-package-versions` comando è simile`update-package-versions-status`, incluso il comportamento delle `--expected-status` opzioni `--version-revisions ` e descritte nelle sezioni sulla [revisione della versione](#update-status-specify-package-version-revision) e [sullo stato previsto](#using-expected-status). Ad esempio, il comando seguente tenta di eliminare una versione del pacchetto ma fallisce a causa di uno stato previsto non corrispondente.

```
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
```

Output di esempio:

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

Se lo stesso comando viene eseguito nuovamente con un `--expected-status` of`Published`, l'eliminazione avrà esito positivo.

```
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
```

Output di esempio:

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

# Modifica dei controlli di origine dei pacchetti
<a name="package-origin-controls"></a>

In AWS CodeArtifact, le versioni dei pacchetti possono essere aggiunte a un repository pubblicandole direttamente, estraendole da un repository upstream o importandole da un archivio pubblico esterno. Consentire l'aggiunta di versioni di pacchetto di un pacchetto sia mediante la pubblicazione diretta che l'importazione da archivi pubblici rende vulnerabili a un attacco di sostituzione delle dipendenze. Per ulteriori informazioni, consulta [Attacchi di sostituzione delle dipendenze](dependency-substitution-attacks.md). Per proteggersi da un attacco di sostituzione delle dipendenze, è possibile configurare i controlli di origine dei pacchetti su un pacchetto in un repository per limitare il modo in cui le versioni di quel pacchetto possono essere aggiunte al repository.

La configurazione dei controlli di origine dei pacchetti dovrebbe essere presa in considerazione da qualsiasi team che desideri consentire alle nuove versioni di pacchetti diversi di provenire sia da fonti interne, come la pubblicazione diretta, sia da fonti esterne, come gli archivi pubblici. Per impostazione predefinita, i controlli di origine dei pacchetti verranno configurati in base al modo in cui la prima versione di un pacchetto viene aggiunta all'archivio. Per informazioni sulle impostazioni del controllo dell'origine del pacchetto e sui relativi valori predefiniti, vedere[Impostazioni di controllo dell'origine del pacchetto](#package-origin-control-settings).

Per rimuovere il record del pacchetto dopo aver utilizzato l'operazione `put-package-origin-configuration` API, utilizzare `delete-package` (vedi[Eliminare un pacchetto o una versione del pacchetto](delete-package.md)).

## Scenari comuni di controllo dell'accesso ai pacchetti
<a name="package-origin-control-scenarios"></a>

Questa sezione include alcuni scenari comuni in cui una versione del pacchetto viene aggiunta a un CodeArtifact repository. Le impostazioni di controllo dell'origine dei pacchetti verranno impostate per i nuovi pacchetti a seconda di come viene aggiunta la prima versione del pacchetto.

Negli scenari seguenti, un *pacchetto interno* è un pacchetto pubblicato direttamente da un gestore di pacchetti nel repository, ad esempio un pacchetto creato e gestito dall'utente o dal suo team. Un *pacchetto esterno* è un pacchetto esistente in un archivio pubblico che può essere inserito nel tuo repository con una connessione esterna.

**Viene pubblicata una versione esterna del pacchetto per un pacchetto interno esistente**

In questo scenario, si consideri un pacchetto interno, *PackageA*. Il tuo team pubblica la prima versione del pacchetto per *PackageA* in un repository. CodeArtifact **Poiché questa è la prima versione del pacchetto, le impostazioni di controllo dell'origine del pacchetto vengono impostate automaticamente su **Pubblica: Consenti e Upstream:** Block.** Dopo che il pacchetto è presente nel repository, un pacchetto con lo stesso nome viene pubblicato in un archivio pubblico collegato al repository. CodeArtifact Potrebbe trattarsi di un tentativo di attacco di sostituzione delle dipendenze contro il pacchetto interno o potrebbe essere solo una coincidenza. Indipendentemente da ciò, i controlli di origine dei pacchetti sono configurati per bloccare l'ingestione della nuova versione esterna per proteggersi da un potenziale attacco.

Nell'immagine seguente, *RePoA è il tuo CodeArtifact repository con una* connessione esterna a un repository pubblico. Il tuo repository contiene le versioni 1.1 e 2.1 di *PackageA*, ma la versione 3.0 è pubblicata nell'archivio pubblico. Normalmente, *RePoA* ingerisce la versione 3.0 dopo che il pacchetto è stato richiesto da un gestore di pacchetti. Poiché l'ingestione dei pacchetti è impostata su **Block**, la versione 3.0 non viene inserita nel CodeArtifact repository e non è disponibile per i gestori di pacchetti ad esso collegati.

![\[Grafica semplice che mostra una nuova versione del pacchetto esterno bloccata da un archivio pubblico.\]](http://docs.aws.amazon.com/it_it/codeartifact/latest/ug/images/package-origin-controls-one.png)


**Viene pubblicata una versione interna del pacchetto per un pacchetto esterno esistente**

In questo scenario, un pacchetto, *packageB*, esiste esternamente in un repository pubblico collegato al repository. Quando un gestore di pacchetti connesso al tuo repository richiede *PackageB, la versione del pacchetto* viene inserita nel tuo repository dal repository pubblico. ****Poiché questa è la prima versione del pacchetto di *PackageB* aggiunta al repository, le impostazioni di origine del pacchetto sono configurate su Publish: BLOCK e Upstream: ALLOW.**** Successivamente, si tenta di pubblicare una versione con lo stesso nome di pacchetto nel repository. O non siete a conoscenza del pacchetto pubblico e state cercando di pubblicare un pacchetto non correlato con lo stesso nome, oppure state cercando di pubblicare una versione con patch, oppure state cercando di pubblicare direttamente la versione esatta del pacchetto che già esiste esternamente. CodeArtifact rifiuterà la versione che state tentando di pubblicare, ma vi permetterà di ignorare esplicitamente il rifiuto e di pubblicare la versione se necessario.

Nell'immagine seguente, *RePoA è il tuo CodeArtifact repository con una* connessione esterna a un archivio pubblico. Il tuo repository contiene la versione 3.0 che ha importato dal repository pubblico. Vuoi pubblicare la versione 1.1 nel tuo repository. Normalmente, è possibile pubblicare la versione 1.2 su *RePoA*, ma poiché la pubblicazione è impostata su **Block**, la versione 1.2 non può essere pubblicata.

![\[Grafica semplice che mostra una nuova versione del pacchetto esterno bloccata da un archivio pubblico.\]](http://docs.aws.amazon.com/it_it/codeartifact/latest/ug/images/package-origin-controls-two.png)


**Pubblicazione di una versione patchata di un pacchetto esterno esistente**

In questo scenario, un pacchetto, *packageB*, esiste esternamente in un repository pubblico collegato al repository. Quando un gestore di pacchetti connesso al tuo repository richiede *PackageB, la versione del pacchetto* viene inserita nel tuo repository dal repository pubblico. ****Poiché questa è la prima versione del pacchetto di *PackageB* aggiunta al repository, le impostazioni di origine del pacchetto sono configurate su Publish: BLOCK e Upstream: ALLOW.**** Il tuo team decide che deve pubblicare le versioni del pacchetto con patch di questo pacchetto nel repository. Per poter pubblicare direttamente le versioni dei pacchetti, il team modifica le impostazioni di controllo dell'origine del pacchetto in **Publish: ALLOW e **Upstream**:** BLOCK. Le versioni di questo pacchetto possono ora essere pubblicate direttamente nel repository e importate da archivi pubblici. **Dopo che il team ha pubblicato le versioni del pacchetto con patch, ripristina le impostazioni di origine del pacchetto su **Publish**: BLOCK e Upstream: ALLOW.**

## Impostazioni di controllo dell'origine del pacchetto
<a name="package-origin-control-settings"></a>

Con i controlli sull'origine dei pacchetti, è possibile configurare il modo in cui le versioni dei pacchetti possono essere aggiunte a un repository. Gli elenchi seguenti includono le impostazioni e i valori disponibili per il controllo dell'origine dei pacchetti.

**Nota**  
Le impostazioni e i valori disponibili sono diversi quando si configurano i controlli di origine sui gruppi di pacchetti. Per ulteriori informazioni, consulta [Controlli dell'origine dei gruppi di pacchetti](package-group-origin-controls.md).

**Pubblicare**

Questa impostazione configura se le versioni dei pacchetti possono essere pubblicate direttamente nel repository utilizzando gestori di pacchetti o strumenti simili.
+ **ALLOW**: le versioni dei Package possono essere pubblicate direttamente.
+ **BLOCK**: Le versioni dei pacchetti non possono essere pubblicate direttamente.

**A monte**

Questa impostazione configura se le versioni dei pacchetti possono essere importate da archivi pubblici esterni o conservate dagli archivi upstream quando richiesto da un gestore di pacchetti.
+ **CONSENTI**: qualsiasi versione del pacchetto può essere conservata da altri CodeArtifact repository configurati come archivi upstream o importata da una fonte pubblica con una connessione esterna.
+ **BLOCK**: le versioni dei pacchetti non possono essere conservate da altri CodeArtifact repository configurati come repository upstream o importate da una fonte pubblica con una connessione esterna.

## Impostazioni predefinite per il controllo dell'origine dei pacchetti
<a name="default-package-origin-control-settings"></a>

Le impostazioni di controllo dell'origine dei pacchetti predefinite sono configurate in base alle impostazioni di controllo dell'origine del gruppo di pacchetti associato al pacchetto. Per ulteriori informazioni sui gruppi di pacchetti e sui controlli di origine dei gruppi di pacchetti, vedere [Lavorare con i gruppi di pacchetti in CodeArtifact](package-groups.md) e[Controlli dell'origine dei gruppi di pacchetti](package-group-origin-controls.md).

Se un pacchetto è associato a un gruppo di pacchetti con impostazioni di restrizione `ALLOW` per ogni tipo di restrizione, i controlli di origine dei pacchetti predefiniti per un pacchetto si baseranno su come la prima versione di quel pacchetto viene aggiunta all'archivio.
+ **Se la prima versione del pacchetto viene pubblicata direttamente da un gestore di pacchetti, le impostazioni saranno **Publish: ALLOW e Upstream: BLOCK**.**
+ **Se la prima versione del pacchetto viene importata da una fonte pubblica, le impostazioni saranno **Publish: BLOCK e Upstream:** ALLOW.**

**Nota**  
**I pacchetti che esistevano nei CodeArtifact repository prima di maggio 2022 circa avranno i controlli di origine dei pacchetti predefiniti **Publish: ALLOW e Upstream: ALLOW**.** I controlli di origine dei pacchetti devono essere impostati manualmente per tali pacchetti. Gli attuali valori predefiniti sono stati impostati su nuovi pacchetti da quel momento e hanno iniziato a essere applicati quando la funzionalità è stata lanciata il 14 luglio 2022. Per ulteriori informazioni sull'impostazione dei controlli di origine dei pacchetti, consulta[Modifica dei controlli di origine dei pacchetti](#edit-package-origin-controls).

Altrimenti, se un pacchetto è associato a un gruppo di pacchetti con almeno un'impostazione di restrizione pari a `BLOCK` o`ALLOW_SPECIFIC_REPOSITORIES`, le impostazioni di controllo dell'origine predefinite per quel pacchetto saranno impostate su **Publish: ALLOW e **Upstream:** ALLOW**.

## In che modo i controlli di origine dei pacchetti interagiscono con i controlli di origine dei gruppi di pacchetti
<a name="package-origin-controls-interaction-package-groups"></a>

Poiché i pacchetti hanno impostazioni di controllo dell'origine e i gruppi di pacchetti associati hanno impostazioni di controllo dell'origine, è importante capire come queste due diverse impostazioni interagiscono tra loro.

L'interazione tra le due impostazioni è che un'impostazione di `BLOCK` sempre vince su un'impostazione di`ALLOW`. La tabella seguente elenca alcuni esempi di configurazioni e le relative impostazioni di controllo dell'origine effettive.


| Impostazione del controllo dell'origine del pacchetto | Impostazione del controllo dell'origine del gruppo di pacchetti | Impostazione efficace del controllo dell'origine | 
| --- | --- | --- | 
| PUBBLICA: CONSENTIUPSTREAM: CONSENTI | PUBBLICA: CONSENTIUPSTREAM: CONSENTI | PUBBLICA: CONSENTIUPSTREAM: CONSENTI | 
| PUBBLICA: BLOCCAUPSTREAM: CONSENTI | PUBBLICA: CONSENTIUPSTREAM: CONSENTI | PUBBLICA: BLOCCAUPSTREAM: CONSENTI | 
| PUBBLICA: CONSENTIUPSTREAM: CONSENTI | PUBBLICA: CONSENTIUPSTREAM: BLOCCA | PUBBLICA: CONSENTIUPSTREAM: BLOCCA | 

Ciò significa che un pacchetto con le impostazioni di origine di **Publish: ALLOW** e **Upstream: ALLOW** viene effettivamente rimandato alle impostazioni di controllo dell'origine del gruppo di pacchetti associato.

## Modifica dei controlli di origine dei pacchetti
<a name="edit-package-origin-controls"></a>

I controlli di origine dei pacchetti vengono configurati automaticamente in base al modo in cui la prima versione del pacchetto di un pacchetto viene aggiunta al repository, per ulteriori informazioni, vedere[Impostazioni predefinite per il controllo dell'origine dei pacchetti](#default-package-origin-control-settings). Per aggiungere o modificare i controlli di origine del pacchetto per un pacchetto in un CodeArtifact repository, effettuate i passaggi indicati nella procedura seguente.

**Per aggiungere o modificare i controlli di origine del pacchetto (console)**

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

1. Nel pannello di navigazione, scegli **Repository e scegli il repository** che contiene il pacchetto che desideri modificare. 

1. Nella tabella **Pacchetti**, cerca e seleziona il pacchetto che desideri modificare.

1. Nella pagina di riepilogo del pacchetto, in **Origin controls**, scegli **Modifica**.

1. In **Modifica controlli di origine**, scegli i controlli di origine del pacchetto che desideri impostare per questo pacchetto. Entrambe le impostazioni di controllo dell'origine del pacchetto, Publish e Upstream, devono essere impostate contemporaneamente.
   + Per consentire la pubblicazione diretta delle versioni dei pacchetti, in **Pubblica**, scegli **Consenti**. Per bloccare la pubblicazione delle versioni dei pacchetti, scegli **Blocca**.
   + ****Per consentire l'inserimento di pacchetti da repository esterni e l'estrazione di pacchetti da repository upstream, in Origini upstream, scegli Consenti.**** **Per bloccare tutte le importazioni e l'estrazione di versioni di pacchetti da repository esterni e upstream, scegliete Blocca.**

**Per aggiungere o modificare i controlli di origine dei pacchetti ()AWS CLI**

1. In caso contrario, configurali AWS CLI seguendo la procedura riportata di seguito[Configurazione con AWS CodeArtifact](get-set-up-for-codeartifact.md).

1. Usa il `put-package-origin-configuration` comando per aggiungere o modificare i controlli di origine del pacchetto. Sostituisci i seguenti campi:
   + Sostituisci *my\$1domain* con il CodeArtifact dominio che contiene il pacchetto che desideri aggiornare.
   + Sostituisci *my\$1repo* con il CodeArtifact repository che contiene il pacchetto che desideri aggiornare.
   + Sostituisci *npm* con il formato del pacchetto che desideri aggiornare.
   + Sostituisci *my\$1package* con il nome del pacchetto che desideri aggiornare.
   + Sostituisci *ALLOW* e *BLOCK* con le impostazioni di controllo dell'origine del pacchetto desiderate.

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

## Repository editoriali e upstream
<a name="package-publishing-upstreams"></a>

CodeArtifact non consente la pubblicazione di versioni di pacchetti presenti in repository upstream raggiungibili o in archivi pubblici. Ad esempio, supponiamo di voler pubblicare un pacchetto Maven in un repository e `myrepo` di disporre di un repository upstream con una `myrepo` connessione esterna `com.mycompany.mypackage:1.0` a Maven Central. Considerate i seguenti scenari.

1. Le impostazioni di controllo dell'origine del pacchetto attive `com.mycompany.mypackage` sono **Publish: ALLOW** e **Upstream: ALLOW**. Se `com.mycompany.mypackage:1.0` è presente nel repository upstream o in Maven Central, CodeArtifact rifiuta qualsiasi tentativo di pubblicazione su di esso con un errore di conflitto 409. `myrepo` È comunque possibile pubblicare una versione diversa, ad esempio. `com.mycompany.mypackage:1.1`

1. Le impostazioni di controllo dell'origine del pacchetto `com.mycompany.mypackage` sono **Publish: ALLOW** e **Upstream: BLOCK**. Puoi pubblicare nel tuo repository qualsiasi versione `com.mycompany.mypackage` di che non esista già perché le versioni del pacchetto non sono raggiungibili.

1. Le impostazioni di controllo dell'origine del pacchetto `com.mycompany.mypackage` sono **Publish: BLOCK** e **Upstream**: ALLOW. Non puoi pubblicare alcuna versione del pacchetto direttamente nel tuo repository.