Controles de origen de grupos de 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.

Controles de origen de grupos de paquetes

Los controles de origen de los paquetes se utilizan para configurar la forma en que las versiones de los paquetes pueden ingresar en un dominio. Puede configurar los controles de origen en un grupo de paquetes para configurar la forma en que las versiones de cada paquete asociado al grupo de paquetes puede ingresar en los repositorios específicos del dominio.

La configuración de los controles de origen del grupo de paquetes consta de lo siguiente:

  • Configuración de restricción: esta configuración define si los paquetes pueden ingresar a un repositorio de CodeArtifact desde fuentes de publicación internas o desde repositorios externos públicos.

  • Listas de repositorios permitidos: cada configuración de restricción se puede definir para permitir repositorios específicos. Si se define una configuración de restricción para permitir repositorios específicos, dicha restricción tendrá la lista de repositorios permitidos correspondiente.

nota

La configuración de los controles de origen de los grupos de paquetes es ligeramente diferente de la configuración de los controles de origen de los paquetes independientes. Para obtener más información sobre la configuración de los controles de origen para paquetes, consulte Configuración de los controles de origen del paquete.

Configuración de restricción

La configuración de restricción de la configuración de los controles de origen de un grupo de paquetes determina cómo los paquetes asociados a ese grupo pueden ingresar en los repositorios del dominio.

PUBLISH

La configuración PUBLISH determina si las versiones de los paquetes se pueden publicar directamente en cualquier repositorio del dominio mediante administradores de paquetes o herramientas similares.

  • ALLOW: las versiones de los paquetes se pueden publicar directamente en todos los repositorios.

  • BLOCK: las versiones de los paquetes no se pueden publicar directamente en ningún repositorio.

  • ALLOW_SPECIFIC_REPOSITORIES: las versiones de los paquetes solo se pueden publicar directamente en los repositorios especificados en la lista de repositorios permitidos para su publicación.

  • INHERIT: la configuración PUBLISH se hereda del primer grupo de paquetes principal con una configuración distinta a INHERIT.

EXTERNAL_UPSTREAM

La configuración EXTERNAL_UPSTREAM determina si las versiones de los paquetes pueden ingerirse desde repositorios públicos externos cuando lo solicite un administrador de paquetes. Para ver una lista de los repositorios externos admitidos, consulte Repositorios de conexiones externas compatibles.

  • ALLOW: se puede ingerir cualquier versión de los paquetes en todos los repositorios desde una fuente pública con una conexión externa.

  • BLOCK: no se pueden ingerir versiones de los paquetes en ningún repositorio desde una fuente pública con una conexión externa.

  • ALLOW_SPECIFIC_REPOSITORIES: las versiones de los paquetes solo se pueden ingerir desde un origen público a los repositorios especificados en la lista de repositorios permitidos para secuencias ascendentes externas.

  • INHERIT: la configuración EXTERNAL_UPSTREAM se hereda del primer grupo de paquetes principal con una configuración distinta a INHERIT.

INTERNAL_UPSTREAM

La configuración INTERNAL_UPSTREAM determina si las versiones de los paquetes pueden conservarse desde los repositorios originales internos en el mismo dominio de CodeArtifact cuando lo solicite un administrador de paquetes.

  • ALLOW: cualquier versión de los paquetes se puede conservar de otros repositorios de CodeArtifact configurados como repositorios ascendentes.

  • BLOCK: las versiones de los paquetes no se pueden conservar de otros repositorios de CodeArtifact configurados como repositorios ascendentes.

  • ALLOW_SPECIFIC_REPOSITORIES: las versiones de los paquetes solo se pueden conservar desde otros repositorios de CodeArtifact configurados como repositorios ascendentes en los repositorios especificados en la lista de repositorios permitidos para las secuencias ascendentes internas.

  • INHERIT: la configuración INTERNAL_UPSTREAM se hereda del primer grupo de paquetes principal con una configuración distinta a INHERIT.

Listas de repositorios permitidos

Cuando una configuración de restricción se define comoALLOW_SPECIFIC_REPOSITORIES, el grupo de paquetes contiene una lista de repositorios permitidos adjunta donde se enumeran los repositorios permitidos para esa configuración de restricción. Por lo tanto, un grupo de paquetes contiene entre 0 y 3 listas de repositorios permitidos, una para cada configuración establecida como ALLOW_SPECIFIC_REPOSITORIES.

Cuando agregue un repositorio a la lista de repositorios permitidos de un grupo de paquetes, debe especificar a qué lista de repositorios permitidos desea agregarlo.

Las listas de repositorios permitidos posibles son las siguientes:

  • EXTERNAL_UPSTREAM: permita o bloquee la ingesta de versiones de paquetes desde repositorios externos en el repositorio agregado.

  • INTERNAL_UPSTREAM: permite o bloquee la extracción de versiones de paquetes de otro repositorio de CodeArtifact en el repositorio agregado.

  • PUBLISH: permita o bloquee la publicación directa de versiones de paquetes desde los administradores de paquetes en el repositorio agregado.

Edición de la configuración de los controles de origen de los grupos de paquetes

Para agregar o editar controles de origen para un grupo de paquetes, siga los pasos que se indican en el siguiente procedimiento. Para obtener información sobre la configuración de los controles de origen de un grupo de paquetes, consulte Configuración de restricción y Listas de repositorios permitidos.

Cómo añadir o editar los controles de origen de un grupo de paquetes (CLI)
  1. Si no lo ha hecho, configure AWS CLI siguiendo los pasos que se indican en Configuración con AWS CodeArtifact.

  2. Utilice el comando update-package-group-origin-configuration para añadir o editar los controles de origen de los paquetes.

    • Para --domain, introduzca el dominio de CodeArtifact que contiene el grupo de paquetes que desea actualizar.

    • Para --domain-owner, introduzca el número de la cuenta del propietario del dominio.

    • Para --package-group, introduzca el grupo de paquetes que desea actualizar.

    • Para --restrictions, introduzca pares clave-valor que representen las restricciones de los controles de origen.

    • Para --add-allowed-repositories, introduzca un objeto JSON que contenga el tipo de restricción y el nombre del repositorio para añadirlo a la lista de repositorios permitidos correspondiente a la restricción.

    • Para --remove-allowed-repositories, introduzca un objeto JSON que contenga el tipo de restricción y el nombre del repositorio para eliminarlo de la lista de repositorios permitidos correspondiente a la restricción.

    aws codeartifact update-package-group-origin-configuration \ --domain my_domain \ --domain-owner 111122223333 \ --package-group '/nuget/*' \ --restrictions INTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES \ --add-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo \ --remove-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo2

    En el siguiente ejemplo, se añaden varias restricciones y varios repositorios en un solo comando.

    aws codeartifact update-package-group-origin-configuration \ --domain my_domain \ --domain-owner 111122223333 \ --package-group '/nuget/*' \ --restrictions PUBLISH=BLOCK,EXTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES,INTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES \ --add-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo2 \ --remove-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=my_repo2

Ejemplos de configuración de los controles de origen de grupos de paquetes

Los siguientes ejemplos muestran las configuraciones de los controles de origen de los paquetes para situaciones habituales de gestión de paquetes.

Permiso para que los paquetes con nombres privados se publiquen, pero no se ingieran

Es probable que esta situación sea habitual en la gestión de paquetes:

  • Permita que los paquetes con nombres privados se publiquen en los repositorios de su dominio desde administradores de paquetes e impida que se ingieran a los repositorios de su dominio desde repositorios públicos externos.

  • Permita que el resto de paquetes se ingieran a los repositorios de su dominio desde repositorios públicos externos e impida que se publiquen en los repositorios de su dominio desde administradores de paquetes de repositorios públicos externos.

Para ello, tiene que configurar un grupo de paquetes con un patrón que incluya los nombres privados y la configuración de origen de PUBLISH: ALLOW, EXTERNAL_UPSTREAM: BLOCK e INTERNAL_UPSTREAM: ALLOW. Así, garantizará que los paquetes con nombres privados se puedan publicar directamente, pero no se puedan ingerir desde repositorios externos.

Los comandos AWS CLI siguientes crean y configuran un grupo de paquetes con configuraciones de restricción de origen que coinciden con el comportamiento deseado:

Para crear el grupo de paquetes:

aws codeartifact create-package-group \ --domain my_domain \ --package-group /npm/space/anycompany~ \ --domain-owner 111122223333 \ --contact-info contact@email.com | URL \ --description "my package group"

Para actualizar de la configuración del origen de un grupo de paquetes:

aws codeartifact update-package-group-origin-configuration \ --domain my_domain \ --domain-owner 111122223333 \ --package-group '/npm/space/anycompany~' \ --restrictions PUBLISH=ALLOW,EXTERNAL_UPSTREAM=BLOCK,INTERNAL_UPSTREAM=ALLOW

Permiso para la ingesta desde repositorios externos a través de un repositorio

En esta situación, su dominio tiene varios repositorios. De esos repositorios, repoA tiene una conexión ascendente a repoB, que tiene una conexión externa al repositorio público (npmjs.com) como se muestra a continuación:

repoA --> repoB --> npmjs.com

Desea permitir la ingesta de paquetes desde un grupo de paquetes específico, /npm/space/anycompany~ desde npmjs.com hacia repoA, pero solo a través de repoB. También quiere bloquear la ingesta de paquetes asociados al grupo de paquetes en cualquier otro repositorio de su dominio, así como la publicación directa de paquetes con administradores de paquetes. Para ello, debe crear y configurar el grupo de paquetes de la siguiente manera:

Configuración de restricción del origen de PUBLISH: BLOCK, EXTERNAL_UPSTREAM: ALLOW_SPECIFIC_REPOSITORIES e INTERNAL_UPSTREAM: ALLOW_SPECIFIC_REPOSITORIES.

repoA y repoB se agregaron a la lista de repositorios permitidos correspondiente:

  • repoA debería añadirse a la lista INTERNAL_UPSTREAM, ya que obtendrá los paquetes de su secuencia ascendente interna, repoB.

  • repoB debería añadirse a la lista EXTERNAL_UPSTREAM, ya que obtendrá los paquetes desde el repositorio externo, npmjs.com.

Los comandos AWS CLI siguientes crean y configuran un grupo de paquetes con configuraciones de restricción de origen que coinciden con el comportamiento deseado:

Para crear el grupo de paquetes:

aws codeartifact create-package-group \ --domain my_domain \ --package-group /npm/space/anycompany~ \ --domain-owner 111122223333 \ --contact-info contact@email.com | URL \ --description "my package group"

Para actualizar de la configuración del origen de un grupo de paquetes:

aws codeartifact update-package-group-origin-configuration \ --domain my_domain \ --domain-owner 111122223333 \ --package-group /npm/space/anycompany~ \ --restrictions PUBLISH=BLOCK,EXTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES,INTERNAL_UPSTREAM=ALLOW_SPECIFIC_REPOSITORIES \ --add-allowed-repositories originRestrictionType=INTERNAL_UPSTREAM,repositoryName=repoA originRestrictionType=EXTERNAL_UPSTREAM,repositoryName=repoB

Cómo interactúa la configuración de los controles de origen de los grupos de paquetes con la configuración de los controles de origen de los paquetes

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í. Para obtener información sobre la interacción entre las configuraciones, consulte Cómo interactúan los controles de origen de los paquetes con los controles de origen de los grupos de paquetes.