Información general sobre paquetes - CodeArtifact

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

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 opcional, como @types in@types/node, un conjunto de versiones del paquete y metadatos a nivel de paquete, como las etiquetas npm.

Formatos de paquetes admitidos

AWS CodeArtifact admite los formatos de paquete Cargo, generic, Maven, npm, NuGetPyPI, Ruby y Swift.

Publicación de paquetes

Puede publicar nuevas versiones de cualquier formato de paquete compatible en un CodeArtifact repositorio mediante herramientas comonpm,, twineMaven, Gradle y. nuget dotnet

Permisos de publicación

Su usuario o rol AWS Identity and Access Management (IAM) debe tener permisos para publicar en el repositorio de destino. Se requieren los siguientes permisos para publicar paquetes:

  • Carga: codeartifact:PublishPackageVersion

  • generic: 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 IAM política debe especificar el package recurso para los codeartifact:PutPackageMetadata permisos codeartifact:PublishPackageVersion y. También debe especificar el recurso repository para el permiso codeartifact:ReadFromRepository.

Para obtener más información sobre los permisos en CodeArtifact, consulteAWS CodeArtifact referencia de permisos.

Sobrescribir los activos del paquete

No puede volver a publicar un activo de paquete que ya existe con un contenido diferente. Por ejemplo, supongamos que ya ha publicado un paquete de Maven con un JAR activomypackage-1.0.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 HTTP 409 de conflicto.

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

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 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, utilice copy-package-versions API para copiar la versión parcheada de en el CodeArtifact repositorio desde el que la vaya mydep 1.1 a consumir.

Límites de tamaño de los activos para su publicación

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. Por ejemplo, no puede publicar una rueda de Maven JAR o Python 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 la 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 (HTTPPUT), los metadatos del paquete y el contenido del archivo tar del paquete npm se agrupan juntos. 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

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

El estado de la versión del paquete

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 ySDK. Para obtener más información, consulte Actualización del estado de la versión del paquete.

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 guardar deliberadamente en el Unfinished estado proporcionando una unfinished bandera al llamar al PublishPackageVersionAPI. Un paquete genérico se puede cambiar al Published estado omitiendo la unfinished bandera o llamando al UpdatePackageVersionsStatusAPI.

  • 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 puede 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 puede cambiar el estado de la versión del paquete a No publicada o Publicada con el. UpdatePackageVersionsStatus API

  • 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, con el estado 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. 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

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:

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