

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
<a name="package-group-origin-controls"></a>

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](#package-group-origin-control-settings-restrictions): 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](#package-group-origin-control-settings-repositories): 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](package-origin-controls.md#package-origin-control-settings).

## Configuración de restricción
<a name="package-group-origin-control-settings-restrictions"></a>

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
<a name="package-group-origin-control-settings-restrictions-publish"></a>

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\$1SPECIFIC\$1REPOSITORIES**: 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\$1UPSTREAM
<a name="package-group-origin-control-settings-restrictions-ext-upstream"></a>

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](external-connection.md#supported-public-repositories).
+ **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\$1SPECIFIC\$1REPOSITORIES**: 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\$1UPSTREAM
<a name="package-group-origin-control-settings-restrictions-int-upstream"></a>

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\$1SPECIFIC\$1REPOSITORIES**: 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
<a name="package-group-origin-control-settings-repositories"></a>

Cuando una configuración de restricción se define como`ALLOW_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
<a name="package-group-edit-origin-controls"></a>

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](#package-group-origin-control-settings-restrictions) y [Listas de repositorios permitidos](#package-group-origin-control-settings-repositories).

**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](get-set-up-for-codeartifact.md).

1. 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
<a name="package-group-origin-control-examples"></a>

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
<a name="package-group-origin-control-examples-one"></a>

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\$1UPSTREAM: BLOCK** e **INTERNAL\$1UPSTREAM: 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
<a name="package-group-origin-control-examples-ingestion-one-repo"></a>

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\$1UPSTREAM: ALLOW\$1SPECIFIC\$1REPOSITORIES** e **INTERNAL\$1UPSTREAM: ALLOW\$1SPECIFIC\$1REPOSITORIES**.

`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
<a name="package-group-origin-control-settings-interaction"></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í. 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](package-origin-controls.md#package-origin-controls-interaction-package-groups).