

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Trabajando con paquetes en CodeArtifact
<a name="packages"></a>

En los temas siguientes, se muestra cómo realizar acciones en los paquetes mediante la CodeArtifact CLI y la API.

**Topics**
+ [Información general sobre paquetes](packages-overview.md)
+ [Mostrar nombres de paquetes](list-packages.md)
+ [Listar las versiones de los paquetes](list-packages-versions.md)
+ [Enumerar los activos de la versión del paquete](list-assets.md)
+ [Descargar recursos de la versión del paquete](download-assets.md)
+ [Copiar paquetes entre repositorios](copy-package.md)
+ [Eliminar un paquete o una versión de un paquete](delete-package.md)
+ [Ver y actualizar los detalles y las dependencias de la versión del paquete](describe-package-version.md)
+ [Actualización del estado de la versión del paquete](update-package-version-status.md)
+ [Edición de los controles de origen de los paquetes](package-origin-controls.md)

# Información general sobre paquetes
<a name="packages-overview"></a>

Un *paquete* es un paquete de software y los metadatos necesarios para resolver las dependencias e instalar el software. En CodeArtifact, un paquete consta de un nombre de paquete, un espacio de [nombres](codeartifact-concepts.md#welcome-concepts-package-namespace) opcional, como `@types` in`@types/node`, un conjunto de versiones del paquete y metadatos a nivel de paquete, como las etiquetas npm.

**Contents**
+ [Formatos de paquetes admitidos](#supported-package-formats)
+ [Publicación de paquetes](#package-publishing)
  + [Permisos de publicación](#package-publishing-permissions)
  + [Sobrescribir los activos del paquete](#package-publishing-overwrite-assets)
  + [Paquetes privados y repositorios públicos](#package-publishing-upstreams-direct)
  + [Publicar versiones de paquetes parcheadas](#package-publishing-patched-versions)
  + [Límites de tamaño de los activos para su publicación](#package-publishing-asset-size-limits)
  + [Latencia de publicación](#package-publishing-latency)
+ [El estado de la versión del paquete](#package-version-status)
+ [Normalización del nombre del paquete, la versión del paquete y el nombre del activo](#package-name-normalization)

## Formatos de paquetes admitidos
<a name="supported-package-formats"></a>

AWS CodeArtifact [[admite los formatos de paquete [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 y Swift.](using-swift.md)](using-ruby.md)

## Publicación de paquetes
<a name="package-publishing"></a>

 Puede publicar nuevas versiones de cualquier [formato de paquete compatible](#supported-package-formats) en un CodeArtifact repositorio mediante herramientas como`npm`,, `twine``Maven`, `Gradle` y. `nuget` `dotnet`

### Permisos de publicación
<a name="package-publishing-permissions"></a>

Su usuario o rol AWS Identity and Access Management (de IAM) debe tener permisos para publicar en el repositorio de destino. Se requieren los siguientes permisos para publicar paquetes:
+ **Cargo:** `codeartifact:PublishPackageVersion`
+ **Genérico:** `codeartifact:PublishPackageVersion`
+ **Maven:** `codeartifact:PublishPackageVersion` y `codeartifact:PutPackageMetadata`
+ **npm:** `codeartifact:PublishPackageVersion`
+ **NuGet:** `codeartifact:PublishPackageVersion` y `codeartifact:ReadFromRepository`
+ **Python:** `codeartifact:PublishPackageVersion`
+ **Rubí:** `codeartifact:PublishPackageVersion`
+ **Swift:** `codeartifact:PublishPackageVersion`

En la lista de permisos anterior, su política de IAM debe especificar el recurso `package` para los permisos `codeartifact:PublishPackageVersion` y `codeartifact:PutPackageMetadata`. También debe especificar el recurso `repository` para el permiso `codeartifact:ReadFromRepository`.

Para obtener más información sobre los permisos en CodeArtifact, consulte[AWS CodeArtifact referencia de permisos](auth-and-access-control-permissions-reference.md).

### Sobrescribir los activos del paquete
<a name="package-publishing-overwrite-assets"></a>

 No puede volver a publicar un activo de paquete que ya existe con un contenido diferente. Por ejemplo, suponga que ya publicó un paquete de Maven con un activo `mypackage-1.0.jar` JAR. Solo puede volver a publicar ese activo si la suma de comprobación de los activos antiguos y nuevos es idéntica. Para volver a publicar el mismo recurso con contenido nuevo, elimine primero la versión del paquete con el comando **delete-package-versions**. Si intenta volver a publicar el mismo nombre de activo con un contenido diferente, se producirá un error de conflicto con el protocolo HTTP 409. 

 Para los formatos de paquetes que admiten varios activos (generic, PyPI y Maven), puede agregar nuevos activos con nombres diferentes a una versión de paquete existente, siempre que tenga los permisos necesarios. En el caso de los paquetes genéricos, puede añadir nuevos activos siempre que la versión del paquete esté en ese estado `Unfinished`. Como npm solo admite un activo por versión de paquete, para modificar una versión de paquete publicada de cualquier forma, primero debe eliminarla mediante **delete-package-versions**. 

 Si intenta volver a publicar un activo que ya existe (por ejemplo, `mypackage-1.0.jar`) y el contenido del activo publicado y el nuevo son idénticos, la operación se realizará correctamente porque la operación es idempotente. 

### Paquetes privados y repositorios públicos
<a name="package-publishing-upstreams-direct"></a>

 CodeArtifact no publica los paquetes almacenados en CodeArtifact repositorios públicos como npmjs.com o Maven Central. CodeArtifact importa paquetes de repositorios públicos a un CodeArtifact repositorio, pero nunca los mueve en la otra dirección. Los paquetes que publiques en los CodeArtifact repositorios permanecen privados y solo están disponibles para las AWS cuentas, los roles y los usuarios a los que hayas concedido acceso.

### Publicar versiones de paquetes parcheadas
<a name="package-publishing-patched-versions"></a>

 A veces, es posible que desee publicar una versión de paquete modificada, posiblemente una que esté disponible en un repositorio público. Por ejemplo, es posible que haya encontrado un error en una de las dependencias críticas de una aplicación llamada `mydep 1.1`, y necesite solucionarlo antes de que el proveedor del paquete pueda revisar y aceptar el cambio. Como se ha descrito anteriormente, CodeArtifact impide publicar `mydep 1.1` en el CodeArtifact repositorio si se puede acceder al repositorio público desde el CodeArtifact repositorio a través de los repositorios anteriores y de una conexión externa.

Para solucionar este problema, publica la versión del paquete en un CodeArtifact repositorio diferente en el que no se pueda acceder al repositorio público. A continuación, utiliza la `copy-package-versions` API para copiar la versión parcheada de en el CodeArtifact repositorio desde el que la vayas `mydep 1.1` a consumir. 

### Límites de tamaño de los activos para su publicación
<a name="package-publishing-asset-size-limits"></a>

El tamaño máximo de un paquete que se puede publicar está limitado por la cuota **máxima de tamaño del archivo de activos** que se muestra en [Cuotas en AWS CodeArtifact](service-limits.md). Por ejemplo, no puede publicar una rueda JAR o Python de Maven que supere la cuota máxima de tamaño de su archivo de activos actual. Si necesitas almacenar activos más grandes CodeArtifact, solicita un aumento de cuota.

Además de la cuota máxima de tamaño de archivo de activos, el tamaño máximo de una solicitud de publicación para paquetes npm es de 2 GB. Este límite es independiente de la cuota máxima de tamaño del archivo de activos y no se puede aumentar con un aumento de cuota. En una solicitud de publicación de npm (HTTP PUT), los metadatos del paquete y el contenido del archivo tar del paquete npm se agrupan. Por este motivo, el tamaño máximo real de un paquete npm que se puede publicar varía y depende del tamaño de los metadatos incluidos.

**nota**  
Los paquetes npm publicados están limitados a un tamaño máximo inferior a 2 GB.

### Latencia de publicación
<a name="package-publishing-latency"></a>

Las versiones de los paquetes publicadas en un CodeArtifact repositorio suelen estar disponibles para su descarga en menos de un segundo. Por ejemplo, si publicas una versión del paquete npm en CodeArtifact with`npm publish`, esa versión debería estar disponible para un `npm install` comando en menos de un segundo. Sin embargo, la publicación puede ser incoherente y, a veces, puede llevar más tiempo. Si debe utilizar una versión del paquete inmediatamente después de publicarla, vuelva a intentarlo para asegurarse de que la descarga es fiable. Por ejemplo, después de publicar la versión del paquete, repita la descarga hasta tres veces si la versión del paquete recién publicada no está disponible inicialmente en el primer intento de descarga.

**nota**  
La importación de una versión de paquete desde un repositorio público suele tardar más que la publicación. Para obtener más información, consulte [Latencia de conexión externa](external-connection-requesting-packages.md#external-connection-latency).

## El estado de la versión del paquete
<a name="package-version-status"></a>

Cada versión del paquete CodeArtifact tiene un estado que describe el estado actual y la disponibilidad de la versión del paquete. Puede cambiar el estado de la versión del paquete en AWS CLI y el SDK. Para obtener más información, consulte [Actualización del estado de la versión del paquete](update-package-version-status.md). 

Los siguientes son valores posibles para el estado de la versión del paquete:
+  **Publicada**: la versión del paquete se publicó correctamente y se puede solicitar mediante un administrador de paquetes. La versión del paquete se incluirá en las listas de versiones de los paquetes devueltas a los administradores de paquetes, por ejemplo, en la salida de `npm view <package-name> versions`. Todos los activos de la versión del paquete están disponibles en el repositorio. 
+  **Inacabado**: el cliente ha cargado uno o más activos para una versión de paquete, pero no los ha finalizado moviéndolos al estado `Published`. Actualmente, solo las versiones genéricas y de paquetes de Maven pueden tener un estado de `Unfinished`. En el caso de los paquetes de Maven, esto puede ocurrir cuando el cliente carga uno o más activos para una versión del paquete, pero no publica un archivo `maven-metadata.xml` para el paquete que incluye esa versión. Cuando una versión de un paquete de Maven esté **inacabada**, no se incluirá en las listas de versiones devueltas a los clientes como `mvn` o `gradle`, por lo que no podrá usarse como parte de una compilación. Los paquetes genéricos se pueden mantener en ese `Unfinished` estado de forma deliberada; para ello, se `unfinished` indica la marca al llamar a la [PublishPackageVersion](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PublishPackageVersion.html)API. Un paquete genérico se puede cambiar al `Published` estado omitiendo la `unfinished` marca o llamando a la [UpdatePackageVersionsStatus](https://docs.aws.amazon.com//codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html)API. 
+  **No listada**: los activos de la versión del paquete están disponibles para su descarga desde el repositorio, pero la versión del paquete no se incluye en la lista de versiones devueltas a los administradores de paquetes. Por ejemplo, en el caso de un paquete npm, la salida de `npm view <package-name> versions` no incluirá la versión del paquete. Esto significa que la lógica de resolución de dependencias de npm no seleccionará la versión del paquete porque la versión no aparece en la lista de versiones disponibles. Sin embargo, si ya se hace referencia a la versión del paquete **no listada** en un archivo `npm package-lock.json`, aún se puede descargar e instalar, por ejemplo, cuando se ejecuta `npm ci`. 
+  **Archivada**: los activos de la versión del paquete ya no se pueden descargar. La versión del paquete no se incluirá en la lista de versiones devueltas a los administradores de paquetes. Como los activos no están disponibles, los clientes bloquean el consumo de la versión del paquete. Si la compilación de la aplicación depende de una versión actualizada a **Archivada**, la compilación se interrumpirá si la versión del paquete no se ha almacenado en caché local. [No puedes usar un administrador de paquetes o una herramienta de compilación para volver a publicar una versión de paquete **archivada** porque todavía está presente en el repositorio, pero puedes cambiar el estado de la versión del paquete a **No listada** o **Publicada** con la API. UpdatePackageVersionsStatus ](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html) 
+  **Eliminada**: la versión del paquete no aparece en las listas y los activos no se pueden descargar del repositorio. **La principal diferencia entre Descartado y **Archivado** es que, si el estado es Dispuesto, los activos de la versión del paquete se **eliminarán** permanentemente.** CodeArtifact Por este motivo, no puede mover una versión de paquete de **Eliminada** a **Archivada**, **No listada** o **Publicada**. La versión del paquete ya no se puede utilizar porque se han eliminado los activos. Una vez que una versión del paquete se haya marcado como **Eliminada**, ya no se le facturará el almacenamiento de los activos del paquete. 

Las versiones de paquete de todos los estados se devolverán de forma predeterminada cuando se llame list-package-versions sin `--status` parámetros.

 Además de los estados enumerados anteriormente, la versión de un paquete también se puede eliminar con la [DeletePackageVersionsAPI](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DeletePackageVersions.html). Una vez eliminada, la versión de un paquete deja de estar en el repositorio y puede volver a publicarla libremente mediante un administrador de paquetes o una herramienta de compilación. Tras eliminar una versión de paquete, ya no se le facturará el almacenamiento de los activos de esa versión de paquete. 

## Normalización del nombre del paquete, la versión del paquete y el nombre del activo
<a name="package-name-normalization"></a>

CodeArtifact normaliza los nombres de los paquetes, las versiones de los paquetes y los nombres de los activos antes de almacenarlos, lo que significa que los nombres o las versiones CodeArtifact pueden ser diferentes del nombre o la versión proporcionados cuando se publicó el paquete. Para obtener más información sobre cómo se normalizan los nombres y las versiones CodeArtifact para cada tipo de paquete, consulte la siguiente documentación:
+ [Normalización de nombres de paquetes de Python](python-name-normalization.md)
+ [Normalización del nombre, la versión y el nombre del activo del paquete NuGet](nuget-name-normalization.md)

CodeArtifact no realiza la normalización en otros formatos de paquete.

# Mostrar nombres de paquetes
<a name="list-packages"></a>

Use el `list-packages` comando in CodeArtifact para obtener una lista de todos los nombres de paquetes de un repositorio. Este comando devuelve solo los nombres de los paquetes, no las versiones.

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

Código de salida de ejemplo:

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

## Enumerar los nombres de los paquetes de npm
<a name="list-packages-npm"></a>

Para enumerar solo los nombres de los paquetes npm, defina el valor de la opción `--format` en `npm`.

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

Para enumerar los paquetes npm en un espacio de nombres (*alcance* npm), utilice las opciones `--namespace` y `--format`.

**importante**  
El valor de la opción `--namespace` no debe incluir el `@` inicial. Para buscar el espacio de nombres`@types`, defina el valor en. *types*

**nota**  
La opción `--namespace` filtra por prefijo de espacio de nombres. Cualquier paquete npm con un alcance que comience con el valor pasado a la opción `--namespace` se devolverá en la respuesta `list-packages`.

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

Código de salida de ejemplo:

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

        }
    ]
}
```

## Enumerar los nombres de los paquetes de Maven
<a name="list-packages-maven"></a>

Para enumerar solo los nombres de los paquetes Maven, defina el valor de la opción `--format` en `maven`. También debe especificar el ID del grupo Maven en la opción `--namespace`.

**nota**  
La opción `--namespace` filtra por prefijo de espacio de nombres. Cualquier paquete npm con un alcance que comience con el valor pasado a la opción `--namespace` se devolverá en la respuesta `list-packages`.

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

Código de salida de ejemplo:

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

        }
    ]
}
```

## Enumerar los nombres de los paquetes de Python
<a name="list-packages-python"></a>

Para enumerar solo los nombres de los paquetes de Python, defina el valor de la opción `--format` en `pypi`.

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

## Filtrar por prefijo de nombre de paquete
<a name="list-packages-package-prefix"></a>

 Para devolver paquetes que comiencen por una cadena específica, puede usar la opción `--package-prefix`. 

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

Código de salida de ejemplo:

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

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

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

        }
    ]
}
```

## Combinaciones de opciones de búsqueda compatibles
<a name="list-packages-option-combinations"></a>

Puede usar las opciones `--format`, `--namespace` y `--package-prefix` en cualquier combinación, excepto que `--namespace` no se puede usar por sí solo. La búsqueda de todos los paquetes npm con un alcance que comience por `@types` requiere que se especifique la opción `--format`. Usar `--namespace` por sí solo produce un error. 

 El uso de ninguna de las tres opciones también es compatible con `list-packages` y devolverá todos los paquetes de todos los formatos presentes en el repositorio. 

## Formatear salida
<a name="list-packages-format-output"></a>

 Puede usar los parámetros que están disponibles para todos los AWS CLI comandos para que la `list-packages` respuesta sea compacta y más legible. Utilice el parámetro `--query` para especificar el formato de cada versión del paquete devuelto. Utilice el parámetro `--output` para dar formato a la respuesta como texto sin formato. 

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

Código de salida de ejemplo:

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

 Para obtener más información, consulte [‬Control de la salida de comandos de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html)‬ en la *Guía del usuario de AWS Command Line Interface *. 

## Valores predeterminados y otras opciones
<a name="list-packages-defaults-options"></a>

 De forma predeterminada, el número máximo de resultados devueltos por `list-packages` es 100. Puede cambiar este límite de resultados mediante la opción `--max-results`.

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

El valor máximo permitido de `--max-results` es de 1000. Para permitir la publicación de paquetes en repositorios con más de 1000 paquetes, `list-packages` admite la paginación mediante el campo `nextToken` de la respuesta. Si el número de paquetes del repositorio es superior al valor de `--max-results`, puede pasar el valor de `nextToken` a otra invocación de `list-packages` para obtener la siguiente página de resultados.

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

# Listar las versiones de los paquetes
<a name="list-packages-versions"></a>

Use el `list-package-versions` comando in AWS CodeArtifact para obtener una lista de todas las versiones del nombre de un paquete en un repositorio.

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

Código de salida de ejemplo:

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

Puede añadir el parámetro `--status` a la llamada `list-package-versions` para filtrar los resultados en función del estado de la versión del paquete. Para obtener más información sobre el estado de la versión del paquete, consulte [El estado de la versión del paquete](packages-overview.md#package-version-status). 

 Puede paginar la respuesta `list-package-versions` utilizando los parámetros `--max-results` y `--next-token`. Para `--max-results`, especifique un número entero comprendido entre 1 y 1000 para especificar el número de resultados devueltos en una sola página. El valor predeterminado es 50. Para volver a las páginas siguientes, ejecute `list-package-versions` de nuevo y pase el valor `nextToken` recibido en el resultado del comando anterior a `--next-token`. Cuando no se utiliza la opción `--next-token`, siempre se devuelve la primera página de resultados. 

 El comando `list-package-versions` no muestra las versiones de los paquetes en los repositorios ascendentes. Sin embargo, se muestran las referencias a las versiones de paquetes de un repositorio principal que se copiaron en su repositorio durante una solicitud de versión de paquete. Para obtener más información, consulte [Trabajar con repositorios ascendentes en CodeArtifact](repos-upstream.md). 

## Enumerar las versiones del paquete npm
<a name="list-packages-versions-npm"></a>

Para enumerar todas las versiones de un paquete npm, defina el valor de la opción `--format` en `npm`.

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

Para enumerar las versiones del paquete npm en un espacio de nombres específico (*alcance* npm), use la opción `--namespace`. El valor de la opción `--namespace` no debe incluir el `@` inicial. Para buscar el espacio de nombres`@types`, defina el valor en. *types*

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

## Enumerar las versiones de los paquetes de Maven
<a name="list-packages-versions-maven"></a>

Para enumerar todas las versiones de un paquete de Maven, establezca el valor de la opción `--format` en `maven`. También debe especificar el ID del grupo Maven en la opción `--namespace`.

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

## Ordenar versiones
<a name="list-package-versions-sorting"></a>

 `list-package-versions` puede generar versiones ordenadas en orden descendente según la hora de publicación (las versiones publicadas más recientemente aparecen primero). Utilice el parámetro `--sort-by` con un valor de `PUBLISHED_TIME`, de la siguiente manera.

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

 Código de salida de ejemplo: 

```
{

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

## Versión de visualización predeterminada
<a name="list-package-versions-default-version"></a>

 El valor devuelto para `defaultDisplayVersion` depende del formato del paquete: 
+  Para los paquetes genéricos, Maven y PyPI, es la versión del paquete publicada más recientemente. 
+  En el caso de los paquetes npm, es la versión a la que hace referencia la etiqueta `latest`. Si la etiqueta `latest` no está configurada, es la versión del paquete publicada más recientemente. 

## Formatear salida
<a name="list-package-versions-format-output"></a>

 Puede usar los parámetros que están disponibles para todos los AWS CLI comandos para que la `list-package-versions` respuesta sea compacta y más legible. Utilice el parámetro `--query` para especificar el formato de cada versión del paquete devuelto. Utilice el parámetro `--output` para dar formato a la respuesta como texto sin formato. 

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

Código de salida de ejemplo:

```
0.1.1
0.1.2
0.1.0
3.0.0
```

 Para obtener más información, consulte [‬Control de la salida de comandos de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html)‬ en la *Guía del usuario de AWS Command Line Interface *. 

# Enumerar los activos de la versión del paquete
<a name="list-assets"></a>

Un *activo* es un archivo individual (por ejemplo, un archivo npm o un `.tgz` archivo POM o JAR de Maven) almacenado y asociado a una versión de paquete. CodeArtifact Puede usar el comando `list-package-version-assets` para enumerar los activos de cada versión del paquete.

Ejecuta el `list-package-version-assets` comando para obtener la siguiente información sobre cada activo de tu AWS cuenta y de tu región actual AWS :
+  Su nombre. 
+  Su tamaño, en bytes. 
+  Conjunto de valores hash que se utilizan para la validación de la suma de verificación. 

Por ejemplo, utilice el siguiente comando para enumerar los activos del paquete `flatten-json` Python, versión `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
```

El ejemplo siguiente muestra el código resultante.

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

## Enumerar los activos de un paquete npm
<a name="list-assets-npm"></a>

Un paquete npm siempre tiene un único activo con el nombre de `package.tgz`. Para enumerar los activos de un paquete npm con un alcance específico, incluya el alcance en la opción `--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
```

## Enumerar los activos de un paquete Maven
<a name="list-assets-maven"></a>

Para enumerar los activos de un paquete Maven, incluya el espacio de nombres del paquete en la opción `--namespace`. Para enumerar los activos del paquete 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
```

# Descargar recursos de la versión del paquete
<a name="download-assets"></a>

Un *activo* es un archivo individual (por ejemplo, un archivo npm o un `.tgz` archivo POM o JAR de Maven) almacenado y asociado a una versión de paquete. CodeArtifact Puede descargar los activos del paquete mediante `get-package-version-assets command`. Esto le permite recuperar activos sin utilizar un cliente administrador de paquetes como `npm` o `pip`. Para descargar un activo, debe proporcionar el nombre del activo, que se puede obtener mediante el comando `list-package-version-assets`; para obtener más información, consulte [Enumerar los activos de la versión del paquete](list-assets.md). El activo se descargará al almacenamiento local con el nombre de archivo que especifique.

El siguiente ejemplo descarga el *guava-27.1-jre.jar* activo del paquete *com.google.guava:guava* Maven con la versión. *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
```

 En este ejemplo, el nombre del archivo se especificó en el último argumento del comando anterior, *guava-27.1-jre.jar* por lo que se asignará un nombre *guava-27.1-jre.jar* al activo descargado. 

La salida del comando será:

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

**nota**  
Para descargar activos de un paquete npm con alcance, incluya el alcance en la opción `--namespace`. Se debe omitir el símbolo `@` cuando se utilice `--namespace`. Por ejemplo, si el alcance es `@types`, utilice `--namespace types`.

 La descarga de activos mediante el recurso del paquete `get-package-version-asset` requiere un permiso `codeartifact:GetPackageVersionAsset`. Para obtener más información sobre las políticas de permisos basadas en recursos, consulte [Políticas basadas en recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based) en la *Guía del usuario de AWS Identity and Access Management *. 

# Copiar paquetes entre repositorios
<a name="copy-package"></a>

Puede copiar versiones de paquetes de un repositorio a otro en CodeArtifact. Esto puede resultar útil en situaciones como los flujos de trabajo de promoción de paquetes o el intercambio de versiones de paquetes entre equipos o proyectos. Los repositorios de origen y destino deben estar en el mismo dominio para copiar versiones de paquetes.

## Permisos de IAM necesarios para copiar paquetes
<a name="copypackageversions-iam-actions"></a>

Para copiar las versiones de los paquetes CodeArtifact, el usuario que realiza la llamada debe tener los permisos de IAM necesarios y la política basada en recursos asociada a los repositorios de origen y destino debe tener los permisos necesarios. Para obtener más información sobre las políticas de permisos y los repositorios basados en recursos, consulte. CodeArtifact [Políticas de repositorios](repo-policies.md)

El usuario que realiza la llamada a `copy-package-versions` debe tener el permiso `ReadFromRepository` en el repositorio de origen y el permiso `CopyPackageVersions` en el repositorio de destino.

El repositorio de origen debe tener permiso el `ReadFromRepository` y el repositorio de destino debe tener el permiso `CopyPackageVersions` asignado a la cuenta de IAM o al usuario que copia los paquetes. Las siguientes políticas son ejemplos de políticas de repositorio que se deben añadir al repositorio de origen o al repositorio de destino con el comando `put-repository-permissions-policy`. *111122223333*Sustitúyalo por el identificador de la cuenta que realiza la llamada. `copy-package-versions`

**nota**  
La llamada `put-repository-permissions-policy` sustituirá a la política de repositorio actual, si existe alguna. Puede usar el comando `get-repository-permissions-policy` para comprobar si existe una política; para obtener más información, consulte [Leer una política](repo-policies.md#reading-a-policy). Si existe una política, es posible que desee agregarle estos permisos en lugar de reemplazarla.

**Ejemplo de política de permisos del repositorio de origen**

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

****  

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

------

**Ejemplo de política de permisos del repositorio de destino**

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

****  

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

------

## Copiar versiones de los paquetes
<a name="copy-package-versions"></a>

Use el `copy-package-versions` comando in CodeArtifact para copiar una o más versiones de paquetes de un repositorio de origen a un repositorio de destino del mismo dominio. El siguiente ejemplo copiará las versiones 6.0.2 y 4.0.0 de un paquete npm denominado `my-package` del repositorio `my_repo` al repositorio `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
```

Puede copiar varias versiones del mismo nombre de paquete en una sola operación. Para copiar versiones de distintos nombres de paquetes, debe llamar a `copy-package-versions` para cada una.

El comando anterior producirá el siguiente resultado, suponiendo que ambas versiones se hayan copiado correctamente.

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

## Copiar un paquete de los repositorios originales
<a name="copy-package-upstream"></a>

Normalmente, `copy-package-versions` solo busca en el repositorio especificado por la opción `--source-repository` las versiones que desee copiar. Sin embargo, puede copiar versiones tanto del repositorio de origen como de sus repositorios anteriores mediante la opción `--include-from-upstream`. Si usas el CodeArtifact SDK, llama a la `CopyPackageVersions` API con el `includeFromUpstream` parámetro establecido en true. Para obtener más información, consulte [Trabajar con repositorios ascendentes en CodeArtifact](repos-upstream.md).

## Copiar un paquete npm con alcance
<a name="copying-a-scoped-npm-package"></a>

 Para copiar una versión del paquete npm en un alcance, utilice la opción `--namespace` para especificar el alcance. Por ejemplo, para copiar el paquete `@types/react`, utilice `--namespace types`. Se debe omitir el símbolo `@` cuando se utilice `--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
```

## Copiar las versiones de los paquetes de Maven
<a name="copying-a-maven-package"></a>

Para copiar versiones de paquetes de Maven entre repositorios, especifique el paquete que desea copiar pasando el ID de grupo de Maven con la opción `--namespace` y el Maven ArtifactID con la opción `--name`. Por ejemplo, para copiar una sola versión de `com.google.guava:guava`:

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

Si se copia correctamente la versión del paquete, el resultado será similar al que se incluye a continuación.

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

## Versiones que no existen en el repositorio de origen
<a name="versions-that-do-not-exist-in-the-source-repository"></a>

Si especifica una versión que no existe en el repositorio de origen, se producirá un error en la copia. Si existen algunas versiones en el repositorio de origen y otras no, no se copiarán todas las versiones. En el siguiente ejemplo, la versión 0.2.0 del paquete npm `array-unique` está presente en el repositorio de origen, pero la versión 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
```

El resultado en esta situación será similar al siguiente.

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

El código de error `SKIPPED` se usa para indicar que la versión no se copió en el repositorio de destino porque no se pudo copiar otra versión. 

## Versiones que ya existen en el repositorio de destino
<a name="versions-that-already-exist-in-the-destination-repository"></a>

 Cuando la versión de un paquete se copia en un repositorio donde ya existe, CodeArtifact compara los activos del paquete y los metadatos a nivel de versión del paquete en los dos repositorios.

 Si los activos y los metadatos de la versión del paquete son idénticos en los repositorios de origen y destino, no se realiza una copia, pero la operación se considera correcta. Esto significa que `copy-package-versions` es idempotente. Cuando esto ocurre, la versión que ya estaba presente en los repositorios de origen y destino no aparecerá en la salida de `copy-package-versions`.

En el siguiente ejemplo, hay dos versiones del paquete npm `array-unique` en el repositorio de origen `repo-1`. La versión 0.2.1 también está presente en el repositorio de destino `dest-repo` y la versión 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
```

El resultado en esta situación será similar al siguiente.

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

La versión 0.2.0 aparece en la lista `successfulVersions` porque se copió correctamente del repositorio de origen al de destino. La versión 0.2.1 no se muestra en la salida porque ya estaba presente en el repositorio de destino.

 Si los activos o los metadatos de la versión del paquete difieren en los repositorios de origen y destino, la operación de copia fallará. Puede usar el parámetro `--allow-overwrite` para forzar una sobrescritura. 

Si existen algunas versiones en el repositorio de destino y otras no, no se copiarán todas las versiones. En el siguiente ejemplo, la versión 0.3.2 del paquete npm `array-unique` está presente en los repositorios de origen y de destino, pero el contenido de la versión del paquete es diferente. La versión 0.2.1 está presente en el repositorio de origen pero no en el de destino.

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

El resultado en esta situación será similar al siguiente.

```
{
    "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 versión 0.2.1 está marcada como `SKIPPED` porque no se copió en el repositorio de destino. No se copió porque la copia de la versión 0.3.2 falló porque ya estaba presente en el repositorio de destino, pero no era idéntica en los repositorios de origen y destino.

## Especificación de una versión de paquete
<a name="specify-package-version-revision"></a>

 La revisión de la versión de un paquete es una cadena que especifica un conjunto específico de activos y metadatos para una versión de paquete. Puede especificar una revisión de la versión del paquete para copiar las versiones del paquete que se encuentran en un estado específico. Para especificar una revisión de la versión del paquete, utilice el parámetro `--version-revisions` para pasar una o más versiones del paquete separadas por comas y los pares de revisión de la versión del paquete al comando `copy-package-versions`. 

**nota**  
Debe especificar el parámetro `--versions` o `--version-revisions` con `copy-package-versions`. No puede especificar ambos. 

El siguiente ejemplo solo copiará la versión 0.3.2 del paquete `my-package` si está presente en el repositorio de origen con la versión revisada del paquete `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
```

En el siguiente ejemplo, se copian dos versiones del paquete `my-package`, la 0.3.2 y la 0.3.13. La copia solo se realizará correctamente si en el repositorio de origen la versión 0.3.2 de `my-package` tiene una revisión `REVISION-1-SAMPLE-6C81EFF7DA55CC` y la versión 0.3.13 tiene una revisión `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
```

 Para buscar las revisiones de una versión de paquete, utilice el comando `describe-package-version` o `list-package-versions`. 

 Para obtener más información consulte [Revisión de la versión del paquete](codeartifact-concepts.md#welcome-concepts-package-version-revision) y [CopyPackageVersion](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_CopyPackageVersions.html) en la *Referencia de la API de CodeArtifact *. 

## Copiar paquetes npm
<a name="copying-npm-packages"></a>

 Para obtener más información sobre `copy-package-versions` el comportamiento de los paquetes npm, consulta las [etiquetas npm y](npm-tags.md#tags-and-cpv) la API. CopyPackageVersions 

# Eliminar un paquete o una versión de un paquete
<a name="delete-package"></a>

Puede eliminar una o más versiones de paquetes a la vez mediante el comando `delete-package-versions`. Para eliminar un paquete de un repositorio por completo, incluidas todas las versiones y la configuración asociadas, utilice el comando `delete-package`. Un paquete puede existir en un repositorio sin ninguna versión del paquete. Esto puede ocurrir cuando se eliminan todas las versiones mediante el comando `delete-package-versions` o si el paquete se creó sin ninguna versión mediante la operación de la API `put-package-origin-configuration` (consulte [Edición de los controles de origen de los paquetes](package-origin-controls.md)).

**Topics**
+ [Eliminación de un paquete (AWS CLI)](#delete-package-CLI)
+ [Eliminación de un paquete (consola)](#delete-package-console)
+ [Eliminar una versión de un paquete (AWS CLI)](#delete-package-version-CLI)
+ [Eliminación de una versión de un paquete (consola)](#delete-package-version-console)
+ [Eliminación de un paquete npm o una versión de un paquete](#delete-package-npm)
+ [Eliminación de un paquete Maven o una versión de un paquete](#delete-package-maven)
+ [Prácticas recomendadas para eliminar paquetes o versiones de paquetes](#delete-package-bp)

## Eliminación de un paquete (AWS CLI)
<a name="delete-package-CLI"></a>

Puede eliminar un paquete, incluidas todas sus versiones y configuraciones, mediante el comando `delete-package`. El siguiente ejemplo elimina el paquete PyPI nombrado `my-package` en el repositorio `my_repo` del dominio `my_domain`:

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

Código de salida de ejemplo:

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

Para confirmar que el paquete se ha eliminado, ejecute `describe-package` para el mismo nombre de paquete:

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

## Eliminación de un paquete (consola)
<a name="delete-package-console"></a>

1. Abre la AWS CodeArtifact consola en [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. En el panel de navegación, haga clic en **Repositorios**.

1. Elija el **repositorio** del que desea eliminar un paquete.

1. Elija el **paquete** desea eliminar.

1. Seleccione **Eliminar paquete**.

## Eliminar una versión de un paquete (AWS CLI)
<a name="delete-package-version-CLI"></a>

Puede eliminar una o más versiones de paquetes a la vez mediante el comando `delete-package-versions`. El siguiente ejemplo elimina las versiones `4.0.0`, `4.0.1` y `5.0.0` del paquete PyPI denominado `my-package` en `my_repo` en el dominio `my_domain`:

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

Código de salida de ejemplo:

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

Puede confirmar que las versiones se eliminaron ejecutando `list-package-versions` para el mismo nombre de paquete:

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

## Eliminación de una versión de un paquete (consola)
<a name="delete-package-version-console"></a>

1. [Abre la consola en AWS CodeArtifact codeartifact/home. https://console.aws.amazon.com/codesuite/](https://console.aws.amazon.com/codesuite/codeartifact/home)

1. En el panel de navegación, haga clic en **Repositorios**.

1. Elija el **repositorio** del que desea eliminar versiones de paquetes.

1. Elija el **paquete** del que desea eliminar versiones.

1. Seleccione la **versión del paquete** que desea eliminar.

1. Elija **Eliminar**.
**nota**  
En la consola, solo puede eliminar una versión del paquete a la vez. Para eliminar más de una a la vez, utilice la CLI.

## Eliminación de un paquete npm o una versión de un paquete
<a name="delete-package-npm"></a>

Para eliminar un paquete npm o versiones de paquetes individuales, defina la opción `--format` en `npm`. Para eliminar una versión de paquete en un paquete npm con alcance, utilice la opción `--namespace` para especificar el alcance. Por ejemplo, para eliminar el paquete `@types/react`, utilice `--namespace types`. Omita el símbolo `@` cuando utilice `--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
```

Para eliminar el paquete `@types/react`, incluidas todas sus versiones:

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

## Eliminación de un paquete Maven o una versión de un paquete
<a name="delete-package-maven"></a>

Para eliminar un paquete de Maven o versiones de paquetes individuales, defina la opción `--format` en `maven` y especifique el paquete que desea eliminar pasando el ID de grupo de Maven con la opción `--namespace` y el Maven ArtifactID con la opción `--name`. Por ejemplo, a continuación se muestra cómo eliminar una única versión de `com.google.guava:guava`:

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

En el siguiente ejemplo se muestra cómo eliminar el paquete `com.google.guava:guava`, incluidas todas sus versiones:

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

## Prácticas recomendadas para eliminar paquetes o versiones de paquetes
<a name="delete-package-bp"></a>

Si necesita eliminar una versión de un paquete, le recomendamos crear un repositorio para almacenar una copia de seguridad de la versión del paquete que desea eliminar. Para ello, haga primero una llamada al repositorio `copy-package-versions` de copias de seguridad: 

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

Cuando haya hecho la copia de la versión del paquete, haga una llamada a `delete-package-versions` en el paquete o la versión del paquete que desee eliminar.

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

# Ver y actualizar los detalles y las dependencias de la versión del paquete
<a name="describe-package-version"></a>

Puede ver información sobre la versión de un paquete, incluidas las dependencias, en. CodeArtifact También puede actualizar el estado de una versión del paquete. Para obtener más información sobre el estado de la versión del paquete, consulte [El estado de la versión del paquete](packages-overview.md#package-version-status). 

## Ver detalles de la versión del paquete
<a name="view-package-details"></a>

 Utilice el comando `describe-package-version` para ver detalles sobre versiones de paquetes. Los detalles de la versión del paquete se extraen de un paquete cuando se publica en CodeArtifact. Los detalles de los diferentes paquetes varían y dependen de sus formatos y de la cantidad de información que les hayan agregado sus autores. 

 La mayor parte de la información de la salida del comando `describe-package-version` depende del formato del paquete. Por ejemplo, `describe-package-version` extrae la información de un paquete npm de su archivo `package.json`. La revisión la crea CodeArtifact. Para obtener más información, consulte [Especificación de una versión de paquete](copy-package.md#specify-package-version-revision). 

 Dos versiones de paquetes con el mismo nombre pueden estar en el mismo repositorio si cada una está en espacios de nombres diferentes. Utilice el parámetro `--namespace` opcional para especificar un espacio de nombres. Para obtener más información, consulte [Ver los detalles de la versión del paquete npm](#describe-package-version-npm) o [Ver los detalles de la versión del paquete Maven](#describe-package-version-maven).

 El siguiente ejemplo devuelve detalles sobre la versión `1.9.0` de un paquete de Python denominado `pyhamcrest` que se encuentra en el repositorio `my_repo`. 

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

 El resultado puede tener el siguiente aspecto.

```
{
  "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 obtiene los detalles de la versión del paquete, como la página de inicio del paquete o la información de licencia del paquete, de los metadatos proporcionados por el autor del paquete. Si parte de esta información supera los 400 KB, que es el límite de tamaño de los elementos de DynamoDB CodeArtifact , no podrá procesar dichos datos y es posible que no vea esta información en la consola ni en la respuesta de. `describe-package-version` [Por ejemplo, un paquete de Python como https://py pi. org/project/rapyd-sdk/](https://pypi.org/project/rapyd-sdk/) tiene un campo de licencia muy grande, por lo que no procesaría esta información. CodeArtifact

## Ver los detalles de la versión del paquete npm
<a name="describe-package-version-npm"></a>

Para ver los detalles sobre la versión de un paquete npm, defina el valor de la opción `--format` en **npm**. Si lo desea, incluya el espacio de nombres de la versión del paquete (*alcance* npm) en la opción `--namespace`. El valor de la opción `--namespace` no debe incluir el `@` inicial. Para buscar el espacio de nombres`@types`, defina el valor en. *types*

A continuación, se muestran detalles sobre la versión `4.41.5` de un paquete npm denominado `webpack` en el alcance `@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
```

 El resultado puede tener el siguiente aspecto. 

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

## Ver los detalles de la versión del paquete Maven
<a name="describe-package-version-maven"></a>

Para ver los detalles sobre la versión de un paquete de Maven, establezca el valor de la opción `--format` en `maven` e incluya el espacio de nombres de la versión del paquete en la opción `--namespace`.

 El siguiente ejemplo devuelve detalles sobre la versión `1.2` de un paquete de Maven denominado `commons-rng-client-api` que se encuentra en el espacio de nombres `org.apache.commons` y en el repositorio `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
```

 El resultado puede tener el siguiente aspecto.

```
{
  "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 no extrae la información detallada de la versión del paquete de los archivos POM principales. Los metadatos de una versión de paquete determinada solo incluirán información en el POM para esa versión exacta del paquete, no para el POM principal o cualquier otro POM al que se haga referencia transitivamente mediante la etiqueta `parent` POM. Esto significa que la salida de `describe-package-version` omitirá metadatos (como información de licencia) para las versiones del paquete Maven que dependen de una referencia `parent` para contener estos metadatos.

## Ver las dependencias de la versión del paquete
<a name="view-package-dependencies"></a>

 Use el comando `list-package-version-dependencies` para obtener una lista de las dependencias de la versión de un paquete. El siguiente comando muestra las dependencias de un paquete npm denominado `my-package`, versión `4.41.5`, en el repositorio `my_repo`, en el 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
```

 El resultado puede tener el siguiente aspecto. 

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

*Para ver el rango de valores admitidos para el campo DependencyType, consulta el tipo de [PackageDependency](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageDependency.html)datos en la API. CodeArtifact *

## Ver el archivo readme de la versión del paquete
<a name="view-package-readme"></a>

 Algunos formatos de paquete, como npm, incluyen un archivo `README`. Use `get-package-version-readme` para obtener el archivo `README` de una versión de paquete. El siguiente comando devuelve el archivo `README` de un paquete npm llamado `my-package`, versión `4.41.5`, en el repositorio `my_repo`, en el dominio `my_domain`. 

**nota**  
CodeArtifact no admite la visualización de archivos readme de paquetes genéricos o de 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
```

 El resultado puede tener el siguiente aspecto.

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

# Actualización del estado de la versión del paquete
<a name="update-package-version-status"></a>

Cada versión del paquete CodeArtifact tiene un estado que describe el estado actual y la disponibilidad de la versión del paquete. Puede cambiar el estado de la versión del paquete mediante la consola AWS CLI y la consola.

**nota**  
Para obtener más información sobre el estado de la versión del paquete, incluida una lista de los estados disponibles, consulte [El estado de la versión del paquete](packages-overview.md#package-version-status). 

## Actualizar el estado de la versión del paquete
<a name="updating-pv-status"></a>

Establecer el estado de la versión de un paquete permite controlar cómo se puede usar una versión del paquete sin eliminarla por completo del repositorio. Por ejemplo, cuando la versión de un paquete tiene el estado de `Unlisted`, se puede seguir descargando de forma normal, pero no aparecerá en las listas de versiones de paquetes devueltas a comandos como `npm view`. La [UpdatePackageVersionsStatus API](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html) permite configurar el estado de la versión del paquete de varias versiones del mismo paquete en una sola llamada a la API. Para obtener una descripción de los diferentes estados, consulte [Información general sobre paquetes](packages-overview.md).

Utilice el comando `update-package-versions-status` para cambiar el estado de una versión de paquete a `Published`, `Unlisted`, o `Archived`. Para ver los permisos de IAM necesarios para usar el comando, consulte [Permisos de IAM necesarios para actualizar el estado de una versión de paquete](#update-package-version-status-iam). El siguiente ejemplo establece el estado de la versión 4.1.0 del paquete npm `chalk` en `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
```

Código de salida de ejemplo:

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

En este ejemplo se utiliza un paquete npm, pero el comando funciona de forma idéntica en otros formatos. Se pueden mover varias versiones al mismo estado de destino con un solo comando; consulte el siguiente ejemplo.

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

Código de salida de ejemplo:

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

Tenga en cuenta que, una vez publicada, la versión de un paquete no se puede volver a mover al estado `Unfinished`, por lo que este estado no está permitido como valor para el parámetro `--target-status`. Para mover la versión del paquete al estado `Disposed`, utilice el comando `dispose-package-versions` en su lugar, tal como se describe a continuación.

## Permisos de IAM necesarios para actualizar el estado de una versión de paquete
<a name="update-package-version-status-iam"></a>

Para llamar a `update-package-versions-status` para un paquete, debe tener el permiso `codeartifact:UpdatePackageVersionsStatus` en el recurso del paquete. Esto significa que puede otorgar permiso para llamar a `update-package-versions-status` por paquete. Por ejemplo, una política de IAM que conceda permiso para invocar `update-package-versions-status` el paquete npm *chalk* incluiría una declaración como la siguiente.

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

## Se está actualizando el estado de un paquete npm específico
<a name="update-package-version-status-scoped-npm"></a>

Para actualizar el estado de la versión del paquete de una versión del paquete npm con un alcance, utilice el parámetro `--namespace`. Por ejemplo, para eliminar la versión 8.0.0 de `@nestjs/core`, utilice el siguiente comando.

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

## Estado de actualización de un paquete de Maven
<a name="update-package-version-status-maven"></a>

Los paquetes de Maven siempre tienen un ID de grupo, que se denomina espacio de nombres en. CodeArtifact Utilice el parámetro `--namespace` para especificar el ID de grupo de Maven al llamar a `update-package-versions-status`. Por ejemplo, para archivar la versión 2.13.1 del paquete Maven `org.apache.logging.log4j:log4j`, utilice el siguiente comando.

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

## Especificación de una versión de paquete
<a name="update-status-specify-package-version-revision"></a>

La revisión de la versión de un paquete es una cadena que especifica un conjunto específico de activos y metadatos para una versión de paquete. Puede especificar una revisión de la versión del paquete para actualizar el estado de las versiones del paquete que se encuentran en un estado específico. Para especificar una revisión de la versión del paquete, utilice el parámetro `--version-revisions` para pasar una o más versiones del paquete separadas por comas y los pares de revisiones de versiones del paquete. El estado de la versión de un paquete solo se actualizará si la revisión actual de la versión del paquete coincide con el valor especificado.

**nota**  
El parámetro `—-versions` también debe definirse cuando se utilice el parámetro `--version-revisions`.

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

Para actualizar varias versiones con un solo comando, pase a las opciones una lista separada por comas de pares de versiones y revisiones a las opciones `--version-revisions`. El siguiente comando de ejemplo define dos pares diferentes de versiones de paquetes y revisiones de versiones de paquetes.

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

Código de salida de ejemplo:

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

Al actualizar varias versiones de paquetes, las versiones que se han pasado a `--version-revisions` deben ser las mismas que las versiones pasadas a `--versions`. Si se especifica una revisión de forma incorrecta, el estado de esa versión no se actualizará.

## Uso del parámetro de estado esperado
<a name="using-expected-status"></a>

El comando `update-package-versions-status` proporciona el parámetro `--expected-status` que permite especificar el estado actual esperado de una versión del paquete. Si el estado actual no coincide con el valor al que se ha pasado a `--expected-status`, el estado de esa versión del paquete no se actualizará.

Por ejemplo, en*my\$1repo*, las versiones 4.0.0 y 4.1.0 del paquete `chalk` npm tienen actualmente un estado de. `Published` Una llamada a `update-package-versions-status` que especifique el estado esperado de no `Unlisted` podrá actualizar ambas versiones del paquete debido a la discordancia de estados.

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

Código de salida de ejemplo:

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

## Errores con las versiones individuales de los paquetes
<a name="update-package-version-status-errors"></a>

Existen varios motivos por los que el estado de la versión de un paquete no se actualiza cuando se llama a `update-package-versions-status`. Por ejemplo, es posible que la revisión de la versión del paquete se haya especificado incorrectamente o que el estado esperado no coincida con el estado actual. En estos casos, la versión se incluirá en el mapa `failedVersions` de la respuesta de la API. Si una versión falla, es posible que se omitan las demás versiones especificadas en la misma llamada a `update-package-versions-status` y que su estado no se actualice. Estas versiones también se incluirán en el mapa `failedVersions` con un `errorCode` de `SKIPPED`.

En la implementación actual de `update-package-versions-status`, si no se puede cambiar el estado de una o más versiones, se omitirán todas las demás versiones. Es decir, todas las versiones se actualizan correctamente o no se actualiza ninguna versión. Este comportamiento no está garantizado en el contrato de la API; en el futuro, algunas versiones podrían funcionar correctamente y otras no en una sola llamada a `update-package-versions-status`.

El siguiente comando de ejemplo incluye un error en la actualización del estado de la versión provocado por una discordancia entre las versiones de un paquete. Ese error de actualización provoca que se omita otra llamada de actualización del estado de la versión.

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

Código de salida de ejemplo:

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

## Eliminación de las versiones de los paquetes
<a name="dispose-package-versions"></a>

El estado `Disposed` del paquete tiene un comportamiento similar al de`Archived`, excepto que los activos del paquete se eliminarán permanentemente CodeArtifact para que el almacenamiento de activos ya no se facture a la cuenta del propietario del dominio. Para obtener más información sobre el estado de cada versión del paquete, consulte [El estado de la versión del paquete](packages-overview.md#package-version-status). Para cambiar el estado de una versión de paquete a `Disposed`, use el comando `dispose-package-versions`. Esta capacidad es independiente de la de `update-package-versions-status` debido a que la eliminación de una versión de paquete no es reversible. Como los activos del paquete se eliminarán, el estado de la versión no se puede volver a cambiar a `Archived`, `Unlisted` o `Published`. La única acción que se puede realizar en una versión de paquete que se ha eliminado es eliminarla mediante el comando `delete-package-versions`.

Para llamar a `dispose-package-versions` correctamente, la entidad principal de IAM que realiza la llamada debe tener el permiso `codeartifact:DisposePackageVersions` sobre el recurso del paquete.

El comportamiento del comando `dispose-package-versions` es similar a `update-package-versions-status`, incluido el comportamiento de las opciones `--version-revisions ` y `--expected-status` que se describen en las secciones de [revisión de versión](#update-status-specify-package-version-revision) y [estado esperado](#using-expected-status). Por ejemplo, el siguiente comando intenta eliminar la versión de un paquete, pero falla debido a un estado esperado que no coincide.

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

Código de salida de ejemplo:

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

Si se vuelve a ejecutar el mismo comando con un `--expected-status` de `Published`, la eliminación se realizará correctamente.

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

Código de salida de ejemplo:

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

# Edición de los controles de origen de los paquetes
<a name="package-origin-controls"></a>

En AWS CodeArtifact, las versiones de los paquetes se pueden añadir a un repositorio publicándolas directamente, extrayéndolas de un repositorio anterior o incorporándolas desde un repositorio público externo. Permitir que las versiones en paquetes de un paquete se agreguen mediante publicación directa o ingesta desde repositorios públicos hace que sea vulnerable a un ataque de sustitución de dependencias. Para obtener más información, consulte [Ataques de sustitución de dependencias](dependency-substitution-attacks.md). Para protegerle de un ataque de sustitución de dependencias, puede configurar los controles de origen de los paquetes de un repositorio para limitar la forma en que se pueden añadir las versiones de ese paquete al repositorio.

Cualquier equipo que desee permitir que las nuevas versiones de diferentes paquetes provengan tanto de fuentes internas, como la publicación directa, como de fuentes externas, como los repositorios públicos, debería considerar la posibilidad de configurar los controles de origen de los paquetes. De forma predeterminada, los controles de origen de los paquetes se configurarán en función de cómo se añada la primera versión del paquete al repositorio. Para obtener información sobre la configuración del control de origen del paquete y sus valores predeterminados, consulte [Configuración de los controles de origen del paquete](#package-origin-control-settings).

Para eliminar el registro del paquete después de utilizar la operación de la API `put-package-origin-configuration`, utilice `delete-package` (consulte [Eliminar un paquete o una versión de un paquete](delete-package.md)).

## Escenarios comunes de control de acceso a paquetes
<a name="package-origin-control-scenarios"></a>

En esta sección se incluyen algunos escenarios comunes cuando se agrega una versión de paquete a un CodeArtifact repositorio. Los ajustes de control de origen del paquete se establecerán para los paquetes nuevos en función de cómo se añada la primera versión del paquete.

En los siguientes escenarios, un *paquete interno* es un paquete que se publica directamente desde un administrador de paquetes en su repositorio, como un paquete que usted o su equipo crean y mantienen. Un *paquete externo* es un paquete que existe en un repositorio público y que puede incorporarse a su repositorio mediante una conexión externa.

**Se publica una versión de paquete externo para un paquete interno existente**

En este escenario, consideremos un paquete interno, *packageA*. Tu equipo publica la primera versión del paquete del paquete A *en* un CodeArtifact repositorio. Como esta es la primera versión del paquete, la configuración del control de origen del paquete se establece automáticamente en **Publish: Allow** and **Upstream: Block**. Una vez que el paquete existe en tu repositorio, se publica un paquete con el mismo nombre en un repositorio público que está conectado a tu CodeArtifact repositorio. Podría tratarse de un intento de ataque de sustitución de dependencias contra el paquete interno, o podría ser simplemente una coincidencia. En cualquier caso, los controles de origen de los paquetes están configurados para bloquear la ingesta de la nueva versión externa y protegerse así de un posible ataque.

En la siguiente imagen, *RePoA* es tu CodeArtifact repositorio con una conexión externa a un repositorio público. Su repositorio contiene las versiones 1.1 y 2.1 de *packageA*, pero la versión 3.0 está publicada en el repositorio público. Normalmente, *repoA* ingiere la versión 3.0 después de que un administrador de paquetes solicite el paquete. Como la ingesta de paquetes está configurada como **Bloquear**, la versión 3.0 no se ingiere en su CodeArtifact repositorio y no está disponible para los administradores de paquetes conectados a él.

![\[Gráfico sencillo que muestra el bloqueo de una nueva versión de un paquete externo en un repositorio público.\]](http://docs.aws.amazon.com/es_es/codeartifact/latest/ug/images/package-origin-controls-one.png)


**Se publica una versión de paquete interno para un paquete externo existente**

En este escenario, un paquete, *packageB*, existe externamente en un repositorio público que usted ha conectado a su repositorio. Cuando un administrador de paquetes conectado a su repositorio solicita el *packageB*, la versión del paquete se introduce en su repositorio desde el repositorio público. Como esta es la primera versión de paquete de *packageB* que se agrega a su repositorio, los ajustes de origen del paquete están configurados como **Publish: BLOCK** y **Upstream: ALLOW**. Más adelante, intenta publicar una versión con el mismo nombre de paquete en el repositorio. O bien no conoce el paquete público y está intentando publicar un paquete no relacionado con el mismo nombre, o bien está intentando publicar una versión parcheada, o bien está intentando publicar directamente la versión exacta del paquete que ya existe externamente. CodeArtifact rechazará la versión que está intentando publicar, pero le permitirá anular el rechazo de forma explícita y publicar la versión si es necesario.

En la siguiente imagen, *RePoA* es tu CodeArtifact repositorio con una conexión externa a un repositorio público. Su repositorio contiene la versión 3.0 que ingirió del repositorio público. Quiere publicar la versión 1.1 en su repositorio. Normalmente, podría publicar la versión 1.2 en *repoA*, pero como la publicación está configurada en **Block**, la versión 1.2 no se puede publicar.

![\[Gráfico sencillo que muestra el bloqueo de una nueva versión de un paquete externo en un repositorio público.\]](http://docs.aws.amazon.com/es_es/codeartifact/latest/ug/images/package-origin-controls-two.png)


**Publicar una versión parcheada de un paquete externo existente**

En este escenario, un paquete, *packageB*, existe externamente en un repositorio público que usted ha conectado a su repositorio. Cuando un administrador de paquetes conectado a su repositorio solicita el *packageB*, la versión del paquete se introduce en su repositorio desde el repositorio público. Como esta es la primera versión de paquete de *packageB* que se agrega a su repositorio, los ajustes de origen del paquete están configurados como **Publish: BLOCK** y **Upstream: ALLOW**. Su equipo decide que necesita publicar las versiones de los paquetes parcheados de este paquete en el repositorio. Para poder publicar las versiones de los paquetes directamente, su equipo cambia la configuración del control de origen de los paquetes a **Publish: ALLOW** y **Upstream: BLOCK**. Las versiones de este paquete ahora se pueden publicar directamente en su repositorio e ingerir desde los repositorios públicos. Una vez que su equipo publique las versiones de los paquetes parcheados, cambiará la configuración de origen del paquete a **Publish: BLOCK** and **Upstream: ALLOW**.

## Configuración de los controles de origen del paquete
<a name="package-origin-control-settings"></a>

Con los controles de origen de los paquetes, puede configurar cómo se pueden añadir las versiones de los paquetes a un repositorio. Las siguientes listas incluyen la configuración y los valores de control de origen de los paquetes disponibles.

**nota**  
Los ajustes y los valores disponibles son diferentes cuando los controles de origen se configuran en los grupos de paquetes. Para obtener más información, consulte [Controles de origen de grupos de paquetes](package-group-origin-controls.md).

**Publish**

Esta configuración configura si las versiones de los paquetes se pueden publicar directamente en el repositorio mediante administradores de paquetes o herramientas similares.
+ **ALLOW**: las versiones de los paquetes se pueden publicar directamente.
+ **BLOCK**: las versiones de los paquetes no se pueden publicar directamente.

**Repositorios ascendentes**

Esta configuración configura si las versiones de los paquetes pueden ingerirse desde repositorios públicos externos o conservarse desde repositorios originales cuando lo solicite un administrador de paquetes.
+ **PERMITIR**: Se puede conservar cualquier versión de paquete de otros CodeArtifact repositorios configurados como repositorios ascendentes o se puede ingerir desde una fuente pública con una conexión externa.
+ **BLOCK**: Las versiones de los paquetes no se pueden conservar de otros CodeArtifact repositorios configurados como repositorios ascendentes ni se pueden ingerir desde una fuente pública con una conexión externa.

## Configuración predeterminada de los controles de origen de los paquetes
<a name="default-package-origin-control-settings"></a>

La configuración predeterminada de los controles de origen de los paquetes se determina en función de la configuración de los controles de origen del grupo de paquetes asociado al paquete. Para obtener más información sobre los grupos de paquetes y los controles de origen de los grupos de paquetes, consulte [Trabajar con grupos de paquetes en CodeArtifact](package-groups.md) y [Controles de origen de grupos de paquetes](package-group-origin-controls.md).

Si un paquete está asociado a un grupo de paquetes con una configuración de restricción `ALLOW` para cada tipo de restricción, los controles de origen predeterminados de los paquetes se basarán en la forma en que se añada la primera versión de dicho paquete al repositorio.
+ Si un administrador de paquetes publica directamente la primera versión del paquete, la configuración será **Publish: ALLOW** y **Upstream: BLOCK**.
+ Si la primera versión del paquete proviene de una fuente pública, los ajustes serán **Publish: BLOCK** y **Upstream: BLOCK**.

**nota**  
**Los paquetes que existían en CodeArtifact los repositorios aproximadamente antes de mayo de 2022 tendrán los controles de origen predeterminados **Publish: ALLOW y Upstream: ALLOW.**** Los controles de origen de los paquetes deben configurarse manualmente para dichos paquetes. Desde entonces, los valores predeterminados actuales se han establecido en los paquetes nuevos y comenzaron a aplicarse cuando se lanzó la característica el 14 de julio de 2022. Para obtener más información sobre la configuración de los controles de origen de los paquetes, consulte [Edición de los controles de origen de los paquetes](#edit-package-origin-controls).

De lo contrario, si un paquete está asociado a un grupo de paquetes que tiene al menos una configuración de restricción `BLOCK` o `ALLOW_SPECIFIC_REPOSITORIES`, la configuración de los controles de origen predeterminada para ese paquete se definirá como **Publish: ALLOW** y **Upstream: ALLOW**.

## Cómo interactúan los controles de origen de los paquetes con los controles de origen de los grupos de paquetes
<a name="package-origin-controls-interaction-package-groups"></a>

Como los paquetes y los grupos de paquetes tienen configuraciones de los controles de origen diferentes, es importante entender cómo interactúan ambas entre sí.

La interacción entre las dos configuraciones es que una configuración `BLOCK` prevalece sobre una configuración `ALLOW`. En la siguiente tabla se muestran algunos ejemplos de configuraciones y sus configuraciones efectivas de los controles de origen.


| Configuración de los controles de origen de los paquetes | Configuración de los controles de origen de los grupos de paquetes | Configuración efectiva de los controles de origen | 
| --- | --- | --- | 
| PUBLISH: ALLOWUPSTREAM: ALLOW | PUBLISH: ALLOWUPSTREAM: ALLOW | PUBLISH: ALLOWUPSTREAM: ALLOW | 
| PUBLISH: BLOCKUPSTREAM: ALLOW | PUBLISH: ALLOWUPSTREAM: ALLOW | PUBLISH: BLOCKUPSTREAM: ALLOW | 
| PUBLISH: ALLOWUPSTREAM: ALLOW | PUBLISH: ALLOWUPSTREAM: BLOCK | PUBLISH: ALLOWUPSTREAM: BLOCK | 

Lo que esto significa es que un paquete con la configuración de origen **Publish: ALLOW** y **Upstream: ALLOW** está, en la práctica, quedando supeditado a la configuración de los controles de origen del grupo de paquetes asociado.

## Edición de los controles de origen de los paquetes
<a name="edit-package-origin-controls"></a>

Los controles de origen de los paquetes se configuran automáticamente en función de cómo se agrega la primera versión del paquete al repositorio; para obtener más información, consulte [Configuración predeterminada de los controles de origen de los paquetes](#default-package-origin-control-settings). Para añadir o editar los controles de origen de los paquetes de un CodeArtifact repositorio, lleve a cabo los pasos del siguiente procedimiento.

**Para añadir o editar los controles de origen del paquete (consola)**

1. Abra la AWS CodeArtifact consola en [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. En el panel de navegación, elija **Repositorios** y elija el repositorio que contiene el paquete que desea editar. 

1. En la tabla **Paquetes**, busque y seleccione el paquete que desee editar.

1. En la página de resumen del paquete, en **controles de Origin**, seleccione **Editar**.

1. En **Editar controles de origen**, seleccione los controles de origen del paquete que desea configurar para este paquete. Los dos ajustes de control de origen del paquete, Publish y Upstream, deben configurarse al mismo tiempo.
   + Para permitir la publicación directa de las versiones de los paquetes, en **Publicar**, seleccione **Permitir**. Para bloquear la publicación de versiones de paquetes, seleccione **Bloquear**.
   + Para permitir la ingesta de paquetes de repositorios externos y la extracción de paquetes de repositorios anteriores, en **Recursos ascendentes**, seleccione **Permitir**. Para bloquear la ingesta y la extracción de versiones de paquetes desde repositorios externos y ascendentes, seleccione **Bloquear.**

**Para añadir o editar los controles de origen del paquete (AWS CLI)**

1. Si no lo has hecho, configúrala AWS CLI siguiendo los pasos que se indican en. [Configuración con AWS CodeArtifact](get-set-up-for-codeartifact.md)

1. Utilice el comando `put-package-origin-configuration` para añadir o editar los controles de origen de los paquetes. Sustituya los campos siguientes:
   + *my\$1domain*Sustitúyalo por el CodeArtifact dominio que contiene el paquete que deseas actualizar.
   + *my\$1repo*Sustitúyalo por el CodeArtifact repositorio que contiene el paquete que deseas actualizar.
   + *npm*Sustitúyalo por el formato de paquete que desee actualizar.
   + *my\$1package*Sustitúyalo por el nombre del paquete que desee actualizar.
   + Sustituya *ALLOW* y *BLOCK* por la configuración de control de origen del paquete que desee.

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

## Repositorios editoriales y originales
<a name="package-publishing-upstreams"></a>

CodeArtifact no permite publicar versiones de paquetes que estén presentes en repositorios ascendentes o repositorios públicos accesibles. Por ejemplo, supongamos que desea publicar un paquete de Maven `com.mycompany.mypackage:1.0` en un repositorio `myrepo` y `myrepo` tiene un repositorio ascendente con una conexión externa al central de Maven. Considere los siguientes escenarios.

1. Los ajustes de control de origen de los paquetes de `com.mycompany.mypackage` son **Publish: ALLOW y **Upstream: ALLOW****. Si `com.mycompany.mypackage:1.0` está presente en el repositorio principal o en Maven Central, CodeArtifact rechaza cualquier intento de publicación en `myrepo` él con un error de conflicto 409. Aún puede publicar una versión diferente, por ejemplo `com.mycompany.mypackage:1.1`.

1. Los ajustes de control de origen de los paquetes de `com.mycompany.mypackage` son **Publish: ALLOW y **Upstream: BLOCK****. Puede publicar en su repositorio cualquier versión de `com.mycompany.mypackage` que aún no exista porque no se puede acceder a las versiones de los paquetes.

1. Los ajustes de control de origen de los paquetes de `com.mycompany.mypackage` son **Publish: BLOCK** y **Upstream: ALLOW**. No puede publicar ninguna versión del paquete directamente en su repositorio.