Solicitar pacotes de conexões externas - CodeArtifact

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

Solicitar pacotes de conexões externas

As seções a seguir descrevem como solicitar um pacote a partir de uma conexão externa e o comportamento esperado do CodeArtifact quando isso é feito.

Buscar pacotes de uma conexão externa

Para buscar pacotes de uma conexão externa depois de ter os adicionado ao seu repositório do CodeArtifact, conforme descrito em Conectar um CodeArtifact repositório a um repositório público, configure seu gerenciador de pacotes para usar seu repositório e instalar os pacotes.

nota

As instruções a seguir usam o npm, para visualizar as instruções de configuração e uso de outros tipos de pacotes, consulte Usando o CodeArtifact com Maven, Usando o CodeArtifact com NuGet ouUsando CodeArtifact com Python.

Para buscar pacotes de uma conexão externa
  1. Configure e autentique seu gerenciador de pacotes com o repositório do CodeArtifact. Para npm, use o seguinte comando aws codeartifact login.

    aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo
  2. Solicitar o pacote do repositório público. Para npm, use o seguinte comando npm install, substituindo lodash pelo pacote que você deseja instalar.

    npm install lodash
  3. Depois que o pacote for copiado no seu repositório do CodeArtifact, você poderá usar os comandos list-packages e list-package-versions para visualizá-lo.

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

    Exemplos de resultados:

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

    O comando list-package-versions lista todas as versões do pacote copiadas no seu repositório do CodeArtifact.

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

    Exemplos de resultados:

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

Latência da conexão externa

Ao buscar um pacote de um repositório público usando uma conexão externa, há um atraso entre a obtenção do pacote do repositório público e o armazenamento dele no seu repositório do CodeArtifact. Por exemplo, digamos que você tenha instalado a versão 1.2.5 do pacote npm “lodash”, conforme descrito em Buscar pacotes de uma conexão externa. Embora o comando lodash npm install lodash tenha sido concluído com êxito, a versão do pacote talvez ainda não esteja aparecendo no seu repositório do CodeArtifact. Normalmente, leva cerca de 3 minutos para que a versão do pacote apareça no repositório, embora, ocasionalmente, possa levar mais tempo.

Por causa dessa latência, você pode ter recuperado com êxito a versão de um pacote, mas talvez ainda não consiga visualizá-la em seu repositório no console do CodeArtifact ou quando chama as operações das APIs ListPackages e ListPackageVersions. O CodeArtifact persiste de forma assíncrona na versão do pacote e ela ficará visível no console e por meio de solicitações de API.

Comportamento do CodeArtifact quando um repositório externo não está disponível

Ocasionalmente, repositórios externos sofrem interrupções, que impedem que o CodeArtifact busque pacotes deles ou tornam a busca de pacotes muito mais lenta do que o normal. Quando isso ocorrer, as versões do pacote já retiradas de um repositório externo (por exemplo, npmjs.com) e armazenadas em um repositório do CodeArtifact continuarão disponíveis para download no CodeArtifact. No entanto, pacotes que ainda não estão armazenados no CodeArtifact talvez fiquem indisponíveis, mesmo quando uma conexão externa com esse repositório tiver sido configurada. Por exemplo, seu repositório do CodeArtifact pode conter a versão lodash 4.17.19 do pacote npm porque é ela que você está usando em seu aplicativo até agora. Quando você quiser fazer o upgrade para 4.17.20, o CodeArtifact normalmente buscará essa nova versão em npmjs.com e a armazenará em seu repositório do CodeArtifact. No entanto, se npmjs.com estiver passando por uma interrupção, essa nova versão não ficará disponível. A única solução alternativa é tentar novamente mais tarde, após a recuperação de npmjs.com.

Interrupções em um repositório externo também podem afetar a publicação de novas versões de pacotes no CodeArtifact. Em um repositório com uma conexão externa configurada, o CodeArtifact não permitirá a publicação da versão de um pacote que já esteja presente no repositório externo. Para obter mais informações, consulte Visão geral dos pacotes. No entanto, em casos raros, uma interrupção em um repositório externo pode deixar o CodeArtifact sem informações atualizadas sobre quais pacotes e versões de pacotes estão presentes nesse repositório externo. Nesse caso, o CodeArtifact talvez permita a publicação de uma versão de pacote que normalmente seria negada.

Disponibilidade de novas versões de pacote

Para que uma versão de pacote em um repositório público, como npmjs.com, seja disponibilizada por meio de um repositório do CodeArtifact, ela deverá primeiro ser adicionada a um cache de metadados de pacote regional. Esse cache é mantido pelo CodeArtifact em cada região AWS e contém metadados que descrevem o conteúdo dos repositórios públicos compatíveis. Devido à existência desse cache, há um atraso entre a publicação da nova versão de um pacote em um repositório público e a disponibilização dela no CodeArtifact. Esse atraso varia conforme o tipo de pacote.

Para pacotes npm, Python e Nuget, pode haver um atraso de até 30 minutos a partir da publicação da nova versão de um pacote em npmjs.com, pypi.org ou nuget.org e a disponibilização dela para instalação a partir de um repositório do CodeArtifact. O CodeArtifact sincroniza automaticamente os metadados desses dois repositórios para garantir que o cache esteja atualizado.

Para pacotes Maven, pode haver um atraso de até 3 horas a partir da publicação da nova versão de um pacote em um repositório público e a disponibilização dela para instalação em um repositório do CodeArtifact. O CodeArtifact verificará se há novas versões de um pacote no máximo uma vez a cada 3 horas. A primeira solicitação para um determinado nome de pacote após a expiração da vida útil do cache de 3 horas fará com que todas as novas versões desse pacote sejam importadas para o cache regional.

Para pacotes Maven de uso comum, as novas versões normalmente são importadas a cada 3 horas, porque a alta taxa de solicitações significa que o cache geralmente será atualizado assim que a vida útil do cache expirar. Para pacotes usados com pouca frequência, o cache não terá a versão mais recente até que uma versão do pacote seja solicitada de um repositório do CodeArtifact. Na primeira solicitação, somente as versões importadas anteriormente estarão disponíveis no CodeArtifact, mas essa solicitação causará a atualização do cache. Nas solicitações subsequentes, as novas versões do pacote serão adicionadas ao cache e estarão disponíveis para download.

Importar versões de pacotes com mais de um ativo

Tanto os pacotes Maven quanto Python podem ter vários ativos por versão de pacote. Isso torna a importação de pacotes nesses formatos mais complexa do que a dos pacotes npm e NuGet, que têm apenas um ativo por versão de pacote. Para obter descrições de quais ativos são importados para esses tipos de pacotes e como os ativos recém-adicionados são disponibilizados, consulte Solicitar pacotes Python de upstreams e conexões externas e Solicitação de pacotes Maven de upstreams e conexões externas.