

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.

# 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.