

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Controles de origem do grupo de pacotes
<a name="package-group-origin-controls"></a>

Os controles de origem do pacote são usados para configurar como as versões do pacote podem entrar em um domínio. Você pode configurar controles de origem em um grupo de pacotes para configurar como as versões de cada pacote associado ao grupo de pacotes podem entrar em repositórios específicos no domínio.

As configurações de controle de origem do grupo de pacotes consistem no seguinte:
+ [Configurações de restrição](#package-group-origin-control-settings-restrictions): essas configurações definem se os pacotes podem entrar em um repositório no CodeArtifact por meio de publicação, upstreams internos ou repositórios públicos externos.
+ [Listas de repositórios permitidos](#package-group-origin-control-settings-repositories): cada configuração de restrição pode ser definida para permitir repositórios específicos. Se uma configuração de restrição for definida para permitir repositórios específicos, essa restrição terá uma lista correspondente de repositórios permitidos.

**nota**  
As configurações de controle de origem para grupos de pacotes são ligeiramente diferentes das configurações de controle de origem para pacotes individuais. Para obter mais informações sobre as configurações de controle de origem para pacotes, consulte [Configurações de controle de origem do pacote](package-origin-controls.md#package-origin-control-settings).

## Configurações de restrição
<a name="package-group-origin-control-settings-restrictions"></a>

As configurações de restrição das configurações de controle de origem de um grupo de pacotes determinam como os pacotes associados a esse grupo podem entrar nos repositórios no domínio.

### PUBLISH
<a name="package-group-origin-control-settings-restrictions-publish"></a>

A configuração `PUBLISH` define se as versões do pacote podem ser publicadas diretamente em qualquer repositório no domínio usando gerenciadores de pacotes ou ferramentas similares.
+ **ALLOW**: as versões do pacote podem ser publicadas diretamente em todos os repositórios.
+ **BLOCK**: as versões do pacote não podem ser publicadas diretamente em nenhum repositório.
+ **ALLOW\$1SPECIFIC\$1REPOSITORIES**: as versões do pacote só podem ser publicadas diretamente nos repositórios especificados na lista de repositórios permitidos para publicação.
+ **INHERIT**: a configuração `PUBLISH` é herdada do primeiro grupo de pacotes principal com uma configuração que não é `INHERIT`.

### EXTERNAL\$1UPSTREAM
<a name="package-group-origin-control-settings-restrictions-ext-upstream"></a>

A configuração `EXTERNAL_UPSTREAM` define se as versões do pacote podem ser ingeridas de repositórios externos públicos quando solicitadas por um gerenciador de pacotes. Para ver uma lista dos repositórios externos, consulte [Repositórios de conexão externa compatíveis](external-connection.md#supported-public-repositories).
+ **ALLOW**: qualquer versão do pacote pode ser ingerida em todos os repositórios de uma fonte pública com uma conexão externa.
+ **BLOCK**: as versões do pacote não podem ser ingeridas em nenhum repositório de uma fonte pública com uma conexão externa.
+ **ALLOW\$1SPECIFIC\$1REPOSITORIES**: as versões do pacote só podem ser ingeridas de uma fonte pública em repositórios especificados na lista de repositórios permitidos para upstreams externos.
+ **INHERIT**: a configuração `EXTERNAL_UPSTREAM` é herdada do primeiro grupo de pacotes principal com uma configuração que não é `INHERIT`.

### INTERNAL\$1UPSTREAM
<a name="package-group-origin-control-settings-restrictions-int-upstream"></a>

A configuração `INTERNAL_UPSTREAM` define se as versões do pacote podem ser retidas de repositórios upstream internos no mesmo domínio do CodeArtifact quando solicitadas por um gerenciador de pacotes.
+ **ALLOW**: qualquer versão do pacote pode ser retida de outros repositórios do CodeArtifact configurados como repositórios upstream.
+ **BLOCK**: as versões do pacote não podem ser retidas de outros repositórios do CodeArtifact configurados como repositórios upstream.
+ **ALLOW\$1SPECIFIC\$1REPOSITORIES**: as versões do pacote só podem ser retidas de outros repositórios do CodeArtifact configurados como repositórios upstream em repositórios especificados na lista de repositórios permitidos para upstreams internos.
+ **INHERIT**: a configuração `INTERNAL_UPSTREAM` é herdada do primeiro grupo de pacotes principal com uma configuração que não é `INHERIT`.

## Listas de repositórios permitidos
<a name="package-group-origin-control-settings-repositories"></a>

Quando uma configuração de restrição é definida como `ALLOW_SPECIFIC_REPOSITORIES`, o grupo de pacotes passa a incluir uma lista de repositórios permitidos, que contém os repositórios permitidos para essa configuração de restrição. Portanto, um grupo de pacotes contém de 0 a 3 listas de repositórios permitidos, uma para cada configuração definida como `ALLOW_SPECIFIC_REPOSITORIES`.

Ao adicionar um repositório à lista de repositórios permitidos de um grupo de pacotes, é necessário especificar em qual lista adicioná-lo.

As possíveis listas de repositórios permitidos são as seguintes:
+ `EXTERNAL_UPSTREAM`: permite ou bloqueia a ingestão de versões de pacotes de repositórios externos no repositório adicionado.
+ `INTERNAL_UPSTREAM`: permite ou bloqueia a extração de versões de pacotes de outro repositório do CodeArtifact no repositório adicionado.
+ `PUBLISH`: permite ou bloqueia a publicação direta de versões de pacotes dos gerenciadores de pacotes no repositório adicionado.

## Editar configurações de controle de origem do grupo de pacotes
<a name="package-group-edit-origin-controls"></a>

Para adicionar ou editar controles de origem de um grupo de pacotes, execute as etapas no procedimento a seguir. Para obter informações sobre as configurações de controle de origem do grupo de pacotes, consulte [Configurações de restrição](#package-group-origin-control-settings-restrictions) e [Listas de repositórios permitidos](#package-group-origin-control-settings-repositories).

**Como adicionar ou editar controles de origem do grupo de pacotes (CLI)**

1. Caso não tenha feito isso, configure a AWS CLI seguindo as etapas em[Configurando com AWS CodeArtifact](get-set-up-for-codeartifact.md).

1. Use o comando `update-package-group-origin-configuration` para adicionar ou editar controles de origem do pacote.
   + Para `--domain`, insira o domínio do CodeArtifact que contém o grupo de pacotes que deseja atualizar.
   + Para `--domain-owner`, insira o número da conta do proprietário do domínio.
   + Para `--package-group`, insira o grupo de pacotes que deseja atualizar.
   + Para `--restrictions`, insira pares de chave-valor que representam as restrições de controle de origem.
   + Para `--add-allowed-repositories`, insira um objeto JSON contendo o tipo de restrição e o nome do repositório para adicionar à lista correspondente de repositórios permitidos para a restrição.
   + Para `--remove-allowed-repositories`, insira um objeto JSON contendo o tipo de restrição e o nome do repositório a serem removidos da lista correspondente de repositórios permitidos para a restrição.

   ```
   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
   ```

   O exemplo a seguir adiciona várias restrições e vários repositórios em um 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
   ```

## Exemplos de configuração do controle de origem do grupo de pacotes
<a name="package-group-origin-control-examples"></a>

Os exemplos a seguir mostram configurações de controle de origem de pacotes para cenários comuns de gerenciamento de pacotes.

### Permitir que pacotes com nomes privados sejam publicados, mas não ingeridos
<a name="package-group-origin-control-examples-one"></a>

Este cenário provavelmente é comum no gerenciamento de pacotes:
+ Permita que pacotes com nomes privados sejam publicados em repositórios em seu domínio por meio de gerenciadores de pacotes e impeça que sejam ingeridos em repositórios em seu domínio por meio de repositórios públicos externos.
+ Permita que todos os outros pacotes sejam ingeridos em repositórios em seu domínio por meio de repositórios públicos externos e impeça que sejam publicados em repositórios em seu domínio por meio de gerenciadores de pacotes.

Para fazer isso, você deve configurar um grupo de pacotes com um padrão que inclua os nomes privados e as configurações de origem de **PUBLISH: ALLOW**, **EXTERNAL\$1UPSTREAM: BLOCK** e **INTERNAL\$1UPSTREAM: ALLOW**. Isso garantirá que pacotes com nomes privados possam ser publicados diretamente, mas não possam ser ingeridos de repositórios externos.

Os seguintes comandos da AWS CLI criam e configuram um grupo de pacotes com configurações de restrição de origem que correspondem ao comportamento desejado:

Para criar o grupo de pacotes:

```
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 atualizar a configuração de origem do grupo de pacotes:

```
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
```

### Permitir a ingestão de repositórios externos por meio de um repositório
<a name="package-group-origin-control-examples-ingestion-one-repo"></a>

Neste cenário, seu domínio tem vários repositórios. Desses repositórios, `repoA` tem uma conexão upstream com `repoB`, que tem uma conexão externa com o repositório público, `npmjs.com`, conforme mostrado:

`repoA --> repoB --> npmjs.com`

Você deseja permitir a ingestão de pacotes de um grupo de pacotes específico, `/npm/space/anycompany~` de `npmjs.com` para `repoA`, mas somente por meio de `repoB`. Você também deseja bloquear a ingestão de pacotes associados ao grupo de pacotes em qualquer outro repositório em seu domínio e bloquear a publicação direta de pacotes com gerenciadores de pacotes. Para fazer isso, você cria e configura o grupo de pacotes da seguinte forma:

Configurações de restrição de origem de **PUBLISH: BLOCK**, **EXTERNAL\$1UPSTREAM: ALLOW\$1SPECIFIC\$1REPOSITORIES** e **INTERNAL\$1UPSTREAM: ALLOW\$1SPECIFIC\$1REPOSITORIES**.

`repoA` e `repoB` adicionados à lista apropriada de repositórios permitidos:
+ `repoA` deve ser adicionado à lista `INTERNAL_UPSTREAM`, pois obterá pacotes de seu upstream interno, `repoB`.
+ `repoB` deve ser adicionado à lista `EXTERNAL_UPSTREAM`, pois obterá pacotes do repositório externo, `npmjs.com`.

Os seguintes comandos da AWS CLI criam e configuram um grupo de pacotes com configurações de restrição de origem que correspondem ao comportamento desejado:

Para criar o grupo de pacotes:

```
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 atualizar a configuração de origem do grupo de pacotes:

```
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
```

## Como as configurações de controle de origem do grupo de pacotes interagem com as configurações de controle de origem do pacote
<a name="package-group-origin-control-settings-interaction"></a>

Como tanto os pacotes quanto os grupos de pacotes associados têm configurações de controle de origem, é importante entender como essas duas configurações diferentes interagem entre si. Para obter mais informações sobre a interação entre as configurações, consulte [Como os controles de origem do pacote interagem com os controles de origem do grupo de pacotes](package-origin-controls.md#package-origin-controls-interaction-package-groups).