

A Amazon não CodeCatalyst está mais aberta a novos clientes. Os clientes atuais podem continuar usando o serviço normalmente. Para obter mais informações, consulte [Como migrar do CodeCatalyst](migration.md).

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

# Configuração e uso de repositórios upstream
<a name="packages-upstream-repositories"></a>

Você pode conectar os repositórios de gateway e outros repositórios de CodeCatalyst pacotes como upstreams aos seus repositórios de pacotes. Isso permite que um cliente gerenciador de pacotes acesse os pacotes contidos em mais de um repositório de pacotes usando um único endpoint de repositório de pacotes. Confira a seguir os principais benefícios do uso de repositórios upstream:
+ Você só precisa configurar o gerenciador de pacotes com um único endpoint de repositório para extrair de várias fontes.
+ Os pacotes consumidos de um repositório upstream são armazenados em seu repositório downstream, o que garante que seus pacotes estejam disponíveis mesmo que o repositório upstream sofra interrupções inesperadas ou que os pacotes no repositório upstream sejam excluídos.

Você pode adicionar repositórios upstream ao criar um repositório de pacotes. Você também pode adicionar ou remover repositórios upstream dos repositórios de pacotes existentes no console. CodeCatalyst 

Quando você adiciona um repositório de gateway como repositório upstream, o repositório de pacotes é conectado ao repositório de pacotes público correspondente do repositório de gateway. Para ver uma lista dos repositórios de pacotes públicos compatíveis, consulte [Repositórios de pacotes externos compatíveis e repositórios de gateway](packages-connect-external.md#packages-upstream-repositories-supported-external).

Você pode vincular vários repositórios como repositórios upstream. Por exemplo, suponha que sua equipe crie um repositório chamado `project-repo` e já esteja usando outro repositório chamado `team-repo` que foi **npm-public-registry-gateway**adicionado como um repositório upstream, que está conectado ao repositório npm público,. `npmjs.com` Você pode adicionar `team-repo` como um repositório upstream a `project-repo`. Nesse caso, você só precisa configurar o gerenciador de pacotes para usar `project-repo` para extrair pacotes de `project-repo`, `team-repo`, `npm-public-registry-gateway` e `npmjs.com`.

**Topics**
+ [Adição de um repositório upstream](packages-upstream-repositories-add.md)
+ [Edição da ordem de pesquisa dos repositórios upstream](packages-upstream-repositories-search-order.md)
+ [Solicitar uma versão do pacote com repositórios upstream](packages-upstream-repositories-request.md)
+ [Remoção de um repositório upstream](packages-upstream-repositories-remove.md)

# Adição de um repositório upstream
<a name="packages-upstream-repositories-add"></a>

Adicionar um repositório de pacotes público ou outro repositório de CodeCatalyst pacotes como repositório upstream ao seu repositório downstream disponibiliza todos os pacotes no repositório upstream para gerenciadores de pacotes conectados ao repositório downstream.

**Para adicionar um repositório upstream**

1. No painel de navegação, selecione **Packages (pacotes)**.

1. Na página **Repositórios de pacotes**, escolha o repositório de pacotes ao qual deseja adicionar um repositório upstream.

1. No nome do repositório de pacotes, selecione **Upstreams** e **Selecionar repositórios upstream**.

1. Em **Selecionar tipo upstream**, escolha uma das seguintes opções:
   + **Repositórios de gateway**

     É possível escolher em uma lista de repositórios de gateway disponíveis.
**nota**  
Para se conectar a autoridades públicas externas de pacotes, como Maven Central, npmjs.com ou Nuget Gallery, CodeCatalyst use repositórios de gateway como repositórios intermediários que pesquisam e armazenam pacotes retirados de repositórios externos. Isso economiza tempo e transferência de dados, pois todos os repositórios de pacotes em um projeto usarão pacotes do repositório intermediário do gateway. Para obter mais informações, consulte [Conexão a repositórios externos públicos](packages-connect-external.md).
   + **CodeCatalyst repositórios**

     Você pode escolher entre uma lista de repositórios de CodeCatalyst pacotes disponíveis em seu projeto.

1. Depois de selecionar todos os repositórios que você deseja adicionar como repositórios upstream, selecione **Selecionar** e **Salvar**.

   Para ter mais informações sobre como alterar a ordem de pesquisa de repositórios upstream, consulte [Edição da ordem de pesquisa dos repositórios upstream](packages-upstream-repositories-search-order.md).

Depois de adicionar um repositório upstream, você pode usar um gerenciador de pacotes conectado ao seu repositório local para buscar pacotes do repositório upstream. Você não precisa atualizar a configuração do gerenciador de pacotes. Para ter mais informações sobre como solicitar versões de pacotes de um repositório upstream, consulte [Solicitar uma versão do pacote com repositórios upstream](packages-upstream-repositories-request.md).

# Edição da ordem de pesquisa dos repositórios upstream
<a name="packages-upstream-repositories-search-order"></a>

CodeCatalyst pesquisa repositórios upstream em sua ordem de pesquisa configurada. Quando um pacote é encontrado, CodeCatalyst interrompe a pesquisa. Você pode alterar a ordem na qual os repositórios upstream são pesquisados por pacotes.

**Para editar a ordem de pesquisa dos repositórios upstream**

1. No painel de navegação, selecione **Packages (pacotes)**.

1. Na página **Repositórios de pacotes**, escolha o repositório de pacotes cuja ordem de pesquisa do repositório upstream você deseja editar.

1. Abaixo do nome do repositório de pacotes, selecione **Upstreams**.

1. Na seção **Repositórios upstream**, você pode ver os repositórios upstream e a ordem de pesquisa. Para alterar a ordem de pesquisa, arraste e solte os repositórios na lista.

1. Quando terminar de editar a ordem de pesquisa dos repositórios upstream, escolha **Salvar**.

# Solicitar uma versão do pacote com repositórios upstream
<a name="packages-upstream-repositories-request"></a>

O exemplo a seguir mostra os cenários possíveis quando um gerenciador de pacotes solicita um pacote de um repositório de CodeCatalyst pacotes que tenha repositórios upstream.

Neste exemplo, um gerenciador de pacotes, como `npm`, solicita uma versão de pacote de um repositório de pacotes chamado `downstream` que tem vários repositórios upstream. Quando o pacote é solicitado, o seguinte pode ocorrer:
+  Se `downstream` contiver a versão do pacote solicitada, ela será devolvida ao cliente. 
+  Se `downstream` não contiver a versão do pacote solicitada, CodeCatalyst procurará por ela nos `downstream` repositórios upstream, na ordem de pesquisa configurada. Se a versão do pacote for encontrada, uma referência a ela será copiada para `downstream` e a versão do pacote será devolvida ao cliente. 
+  Se `downstream` nem seus repositórios upstream contiverem a versão do pacote, uma resposta HTTP 404 de `Not Found` será exibida ao cliente.

 A quantidade máxima de repositórios upstream diretos permitidos para um repositório é dez. O número máximo de CodeCatalyst pesquisas nos repositórios quando uma versão do pacote é solicitada é 25. 

## Retenção de pacotes de repositórios upstream
<a name="package-retention-upstream-repos"></a>

Se uma versão de pacote solicitada for encontrada em um repositório upstream, uma referência a ela será retida e estará sempre disponível no repositório que a solicitou. Isso garante que você tenha acesso aos seus pacotes se houver uma interrupção inesperada do repositório upstream. A versão retida do pacote não é afetada por nenhum das seguintes ações: 
+  Excluir o repositório upstream. 
+  Desconectar o repositório upstream do repositório downstream. 
+  Excluir a versão do pacote do repositório upstream. 
+  Editar a versão do pacote no repositório upstream (por exemplo, adicionar um novo ativo a ele). 

## Busca de pacotes por meio de uma relação upstream
<a name="fetching-packages-through-an-upstream-relationship"></a>

CodeCatalyst pode buscar pacotes por meio de vários repositórios vinculados chamados repositórios upstream. Se um repositório de CodeCatalyst pacotes tiver uma conexão upstream com outro repositório de CodeCatalyst pacotes que tenha uma conexão upstream com um repositório gateway, as solicitações de pacotes que não estão no repositório upstream serão copiadas do repositório externo. Por exemplo, considere a seguinte configuração: um repositório chamado `repo-A` tem uma conexão upstream com o repositório do gateway,. `npm-public-registry-gateway` `npm-public-registry-gateway`tem uma conexão upstream com o repositório público de pacotes,. [https://npmjs.com](https://npmjs.com)

![\[Diagrama de repositório upstream simples mostrando três repositórios encadeados.\]](http://docs.aws.amazon.com/pt_br/codecatalyst/latest/userguide/images/packages/upstream-with-external.png)


Se `npm` estiver configurado para usar o `repo-A` repositório, a execução `npm install` inicia a cópia dos pacotes de [https://npmjs.com](https://npmjs.com)dentro. `npm-public-registry-gateway` As versões instaladas também são incorporadas em `repo-A`. O exemplo a seguir instala o `lodash`.

```
$ npm config get registry
https://packages.region.codecatalyst.aws/npm/space-name/proj-name/repo-name/
$ npm install lodash
+ lodash@4.17.20
added 1 package from 2 contributors in 6.933s
```

Depois de executar `npm install`, `repo-A` contém apenas a versão mais recente (`lodash 4.17.20`) porque essa é a versão que foi obtida por `npm` de `repo-A`.

 Como `npm-public-registry-gateway` tem uma conexão upstream externa com [https://npmjs.com](https://npmjs.com), todas as versões do pacote importadas [https://npmjs.com](https://npmjs.com)são armazenadas em`npm-public-registry-gateway`. Essas versões do pacote poderiam ter sido obtidas por qualquer repositório downstream com uma conexão upstream que leva a `npm-public-registry-gateway`. 

O conteúdo de `npm-public-registry-gateway` fornece uma maneira de você ver todos os pacotes e versões de pacotes importados [https://npmjs.com](https://npmjs.com)ao longo do tempo.

## Retenção de pacotes em repositórios intermediários
<a name="package-retention-intermediate-repositories"></a>

 CodeCatalyst permite encadear repositórios upstream. Por exemplo, `repo-A` pode ter `repo-B` como repositório upstream e `repo-B` pode ter `repo-C` como repositório upstream. Essa configuração faz com que as versões do pacote sejam inseridas no `repo-B` e `repo-C` disponíveis do `repo-A`. 

![\[Diagrama de repositório upstream simples mostrando três repositórios encadeados.\]](http://docs.aws.amazon.com/pt_br/codecatalyst/latest/userguide/images/packages/upstream-chaining.png)


 Quando um gerenciador de pacotes se conecta ao repositório `repo-A` e busca uma versão do pacote no repositório `repo-C`, a versão do pacote não será retida no repositório `repo-B`. A versão do pacote só será retida no repositório mais downstream, que, neste exemplo, é `repo-A`. Ela não será retida em nenhum repositório intermediário. Isso também vale para cadeias mais longas. Por exemplo, se houvesse quatro repositórios: `repo-A`, `repo-B`, `repo-C` e `repo-D` e um gerenciador de pacotes conectado ao `repo-A` buscasse uma versão do pacote no `repo-D`, a versão do pacote seria retida em `repo-A`, mas não em `repo-B` ou `repo-C`. 

O comportamento de retenção do pacote é semelhante ao extrair uma versão do pacote de um repositório de pacotes público, exceto que a versão do pacote é sempre retida no repositório de gateway que tem a conexão upstream direta com o repositório público. Por exemplo, `repo-A` tem `repo-B` como repositório upstream. `repo-B` tem `npm-public-registry-gateway` como um repositório upstream, que tem uma conexão upstream com o repositório público, **npmjs.com**; veja o diagrama abaixo.

![\[Diagrama do repositório upstream mostrando três repositórios encadeados com uma conexão upstream externa com npmjs.com.\]](http://docs.aws.amazon.com/pt_br/codecatalyst/latest/userguide/images/packages/upstream-chaining-external.png)


 **Se um gerenciador de pacotes conectado ao `repo-A` solicitar uma versão de pacote específica, por exemplo, *lodash 4.17.20*, e a versão do pacote não estiver presente em nenhum dos três repositórios, ela será obtida em npmjs.com.** Quando o *lodash 4.17.20* for obtido, ele será retido no `repo-A`, pois é o repositório mais downstream, e no `npm-public-registry-gateway`, pois tem a conexão upstream com o repositório externo público **npmjs.com**. O *lodash 4.17.20* não será retido no `repo-B`, pois é um repositório intermediário. 

# Remoção de um repositório upstream
<a name="packages-upstream-repositories-remove"></a>

Se você não quiser mais acessar os pacotes em um repositório upstream, poderá remover o repositório upstream de um repositório de pacotes.

**Atenção**  
Ao remover um repositório upstream, você pode quebrar cadeias de relacionamento upstream, o que pode quebrar seus projetos ou compilações.

**Para remover um repositório upstream**

1. No painel de navegação, selecione **Packages (pacotes)**.

1. Na página **Repositórios de pacotes**, escolha o repositório de pacotes do qual você deseja remover um repositório upstream.

1. Abaixo do nome do repositório de pacotes, selecione **Upstreams**.

1. Em **Editar repositórios upstream**, localize o repositório upstream que você deseja remover e escolha ![\[Remove\]](http://docs.aws.amazon.com/pt_br/codecatalyst/latest/userguide/images/packages/remove.png).

1. Ao concluir a remoção dos repositórios upstream, selecione **Salvar**.