Solicitud de paquetes desde conexiones externas - 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.

Solicitud de paquetes desde conexiones externas

En las siguientes secciones se describe cómo solicitar un paquete desde una conexión externa y el comportamiento esperado de CodeArtifact al solicitar un paquete.

Extraer paquetes desde una conexión externa

Para recuperar paquetes de una conexión externa una vez que los haya agregado a su repositorio de CodeArtifact como se describe en Conectar un CodeArtifact repositorio a un repositorio público, configure su administrador de paquetes para usar su repositorio e instalar los paquetes.

nota

En las siguientes instrucciones se utiliza npm, para ver las instrucciones de configuración y uso de otros tipos de paquetes, consulte Uso de CodeArtifact con Maven, Uso de CodeArtifact con NuGet o Uso de CodeArtifact con Python.

Para extraer paquetes desde una conexión externa
  1. Configure y autentique su administrador de paquetes con su repositorio CodeArtifact. Para npm, utilice el siguiente comando aws codeartifact login.

    aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo
  2. Solicite el paquete desde el repositorio público. Para npm, use el siguiente comando npm install, reemplazando lodash con el paquete que desea instalar.

    npm install lodash
  3. Una vez que el paquete se haya copiado en su repositorio de CodeArtifact, puede usar los comandos list-packages y list-package-versions para verlo.

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

    Ejemplo de resultados:

    { "packages": [ { "format": "npm", "package": "lodash" } ] }

    El comando list-package-versions muestra todas las versiones del paquete copiadas en su repositorio de CodeArtifact.

    aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package lodash

    Ejemplo de resultados:

    { "defaultDisplayVersion: "1.2.5" "format": "npm", "package": "lodash", "namespace": null, "versions": [ { "version": "1.2.5", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ] }

Latencia de conexión externa

Al recuperar un paquete de un repositorio público mediante una conexión externa, hay un retraso desde que el paquete se recupera del repositorio público hasta que se almacena en su repositorio CodeArtifact. Por ejemplo, supongamos que ha instalado la versión 1.2.5 del paquete npm "lodash", tal y como se describe en Extraer paquetes desde una conexión externa. Aunque el comando lodash npm install lodash se completó correctamente, es posible que la versión del paquete aún no aparezca en su repositorio de CodeArtifact. Por lo general, la versión del paquete tarda unos 3 minutos en aparecer en su repositorio, aunque en ocasiones puede tardar más.

Debido a esta latencia, es posible que haya recuperado correctamente una versión del paquete, pero es posible que aún no pueda ver la versión en su repositorio en la consola CodeArtifact o al llamar a las operaciones API ListPackages y ListPackageVersions. Una vez que CodeArtifact haya conservado asincrónicamente la versión del paquete, estará visible en la consola y a través de las solicitudes de la API.

Comportamiento de CodeArtifact cuando un repositorio externo no está disponible

Ocasionalmente, un repositorio externo sufre una interrupción, lo que significa que CodeArtifact no puede recuperar paquetes de él, o la recuperación de paquetes es mucho más lenta de lo normal. Cuando esto ocurra, las versiones de paquetes ya extraídas de un repositorio externo (por ejemplo, npmjs.com) y almacenadas en un repositorio de CodeArtifact seguirán estando disponibles para su descarga desde CodeArtifact. Sin embargo, es posible que los paquetes que aún no estén almacenados en CodeArtifact no estén disponibles, incluso cuando se haya configurado una conexión externa a ese repositorio. Por ejemplo, su repositorio CodeArtifact puede contener la versión lodash 4.17.19 del paquete npm porque es lo que ha estado usando en su aplicación hasta ahora. Cuando desee actualizar a 4.17.20, normalmente CodeArtifact obtendrá esa nueva versión de npmjs.com y la almacenará en su repositorio de CodeArtifact. Sin embargo, si npmjs.com sufre una interrupción, esta nueva versión no estará disponible. La única solución es volver a intentarlo más tarde, una vez que npmjs.com se haya recuperado.

Las interrupciones del repositorio externo también pueden afectar a la publicación de nuevas versiones de paquetes en CodeArtifact. En un repositorio con una conexión externa configurada, CodeArtifact no permitirá publicar una versión de paquete que ya esté presente en el repositorio externo. Para obtener más información, consulte Información general sobre paquetes. Sin embargo, en raras ocasiones, una interrupción del repositorio externo puede significar que CodeArtifact no tenga información actualizada sobre qué paquetes y versiones de paquetes están presentes en un repositorio externo. En este caso, CodeArtifact podría permitir que se publique una versión de paquete que normalmente rechazaría.

Disponibilidad de nuevas versiones de paquetes

Para que una versión de paquete en un repositorio público como npmjs.com esté disponible a través de un repositorio de CodeArtifact, primero debe añadirse a la caché de metadatos de un paquete regional. CodeArtifact mantiene esta caché en cada región AWS y contiene metadatos que describen el contenido de los repositorios públicos compatibles. Debido a esta caché, hay un retraso entre el momento en que se publica una nueva versión del paquete en un repositorio público y el momento en que está disponible en CodeArtifact. Este retraso varía según el tipo de paquete.

Para los paquetes npm, Python y Nuget, puede haber un retraso de hasta 30 minutos desde que se publique una nueva versión del paquete en npmjs.com, pypi.org o nuget.org y cuando esté disponible para su instalación desde un repositorio de CodeArtifact. CodeArtifact sincroniza automáticamente los metadatos de estos dos repositorios para garantizar que la caché esté actualizada.

Para los paquetes de Maven, puede haber un retraso de hasta 3 horas desde que se publique una nueva versión del paquete en un repositorio público hasta que esté disponible para su instalación desde un repositorio de CodeArtifact. CodeArtifact comprobará si hay nuevas versiones de un paquete como máximo una vez cada 3 horas. La primera solicitud de un nombre de paquete determinado después de que haya expirado la vida útil de la caché de 3 horas hará que todas las nuevas versiones de ese paquete se importen a la caché regional.

En el caso de los paquetes de Maven de uso común, las nuevas versiones suelen importarse cada 3 horas, ya que la alta tasa de solicitudes significa que la caché suele actualizarse tan pronto como haya expirado su vida útil. Para los paquetes que se utilizan con poca frecuencia, la caché no tendrá la última versión hasta que se solicite una versión del paquete desde un repositorio de CodeArtifact. En la primera solicitud, solo estarán disponibles en CodeArtifact las versiones previamente importadas, pero esta solicitud hará que se actualice la caché. En solicitudes posteriores, las nuevas versiones del paquete se añadirán a la memoria caché y estarán disponibles para su descarga.

Importación de versiones de paquetes con más de un activo

Tanto los paquetes de Maven como los de Python pueden tener varios activos por versión de paquete. Esto hace que la importación de paquetes de estos formatos sea más compleja que los paquetes npm y NuGet, que solo tienen un activo por versión de paquete. Para obtener descripciones de los activos que se importan para estos tipos de paquetes y de cómo están disponibles los activos recién agregados, consulte Solicitud de paquetes de Python desde conexiones ascendentes y externas y Solicitud de paquetes de Maven desde conexiones ascendentes y externas.