Visão geral dos pacotes - 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á.

Visão geral dos pacotes

Um pacote é formado pelo pacote de software e os metadados necessários para resolver dependências e instalar o software. Em CodeArtifact, um pacote consiste em um nome de pacote, um namespace opcional, como @types in@types/node, um conjunto de versões de pacote e metadados em nível de pacote, como tags npm.

Formatos de pacote com suporte

AWS CodeArtifact suporta npm, PyPI, Maven, Swift, Ruby NuGet, formatos de pacotes genéricos.

Publicação de pacotes

Você pode publicar novas versões de qualquer formato de pacote compatível em um CodeArtifact repositório usando ferramentas como npmtwine,Maven,Gradle,nuget, e. dotnet

Permissões de publicação

Seu usuário ou função AWS Identity and Access Management (IAM) deve ter permissões para publicar no repositório de destino. As seguintes permissões são necessárias para publicar pacotes:

  • Maven: codeartifact:PublishPackageVersion e codeartifact:PutPackageMetadata

  • npm: codeartifact:PublishPackageVersion

  • NuGet: codeartifact:PublishPackageVersion e codeartifact:ReadFromRepository

  • Python: codeartifact:PublishPackageVersion

  • generic: codeartifact:PublishPackageVersion

  • Rápido: codeartifact:PublishPackageVersion

  • Rubi: codeartifact:PublishPackageVersion

Na lista de permissões anterior, a política do IAM deve especificar o recurso package para as permissões codeartifact:PublishPackageVersion e codeartifact:PutPackageMetadata. Ela também deve especificar o recurso repository para a permissão codeartifact:ReadFromRepository.

Para obter mais informações sobre permissões em CodeArtifact, consulteAWS CodeArtifact referência de permissões.

Substituindo ativos do pacote

Você não pode republicar um ativo de pacote que já existe com conteúdo diferente. Por exemplo, suponha que você já tenha publicado um pacote Maven com um ativo mypackage-1.0.jar JAR. Você só poderá publicar esse ativo outra vez se a soma de verificação dos ativos antigos e novos for idêntica. Para republicar o mesmo ativo com novo conteúdo, primeiro exclua a versão do pacote usando o comando delete-package-versions. Tentar republicar o mesmo nome de ativo com conteúdo diferente resultará em um erro de conflito HTTP 409.

Para formatos de pacote compatíveis com vários ativos (genérico, PyPI e Maven), você pode adicionar novos ativos com nomes diferentes a uma versão de pacote existente, supondo que você tenha as permissões necessárias. Para pacotes genéricos, você pode adicionar novos ativos, desde que a versão do pacote esteja no estado Unfinished. Como o npm é compatível apenas com um único ativo por versão de pacote, para modificar uma versão de pacote publicada de qualquer forma, você deve primeiro excluí-la usando delete-package-versions.

Se você tentar republicar um ativo que já existe (por exemplo, mypackage-1.0.jar) e o conteúdo do ativo publicado e o do novo ativo forem idênticos, a operação será bem-sucedida porque é idempotente.

Pacotes privados e repositórios públicos

CodeArtifact não publica pacotes armazenados em CodeArtifact repositórios em repositórios públicos, como npmjs.com ou Maven Central. CodeArtifact importa pacotes de repositórios públicos para um CodeArtifact repositório, mas nunca move pacotes na outra direção. Os pacotes que você publica CodeArtifact nos repositórios permanecem privados e só estão disponíveis para as AWS contas, funções e usuários aos quais você concedeu acesso.

Publicação de versões de pacotes corrigidos

Às vezes, talvez você queira publicar uma versão modificada do pacote, potencialmente aquela disponível em um repositório público. Por exemplo, você pode ter encontrado um bug em uma dependência crítica do aplicativo chamada mydep 1.1 e precisa corrigi-lo antes que o fornecedor do pacote possa revisar e aceitar a alteração. Conforme descrito anteriormente, CodeArtifact impede que você publique mydep 1.1 no seu CodeArtifact repositório se o repositório público puder ser acessado a partir do seu repositório por meio de CodeArtifact repositórios upstream e uma conexão externa.

Para contornar isso, publique a versão do pacote em um CodeArtifact repositório diferente onde o repositório público não esteja acessível. Em seguida, use a copy-package-versions API para copiar a versão corrigida do mydep 1.1 para o CodeArtifact repositório de onde você a consumirá.

Limites de tamanho de ativos para publicação

O tamanho máximo de um ativo de pacote que pode ser publicado é limitado pela cota Máxima do tamanho do arquivo do ativo mostrada em Cotas em AWS CodeArtifact. Por exemplo, você não pode publicar uma roda Maven JAR ou Python maior que a cota máxima atual do tamanho do arquivo do ativo. Se você precisar armazenar ativos maiores CodeArtifact, solicite um aumento de cota.

Além da cota máxima do tamanho do arquivo do ativo, o tamanho máximo de uma solicitação de publicação para pacotes npm é de 2 GB. Esse limite é independente da cota máxima do tamanho do arquivo do ativo e não pode ser aumentado com um aumento de cota. Em uma solicitação de publicação npm (HTTP PUT), os metadados do pacote e o conteúdo do arquivo tar do pacote npm são agrupados. Por esse motivo, o tamanho máximo real de um pacote npm que pode ser publicado varia e depende do tamanho dos metadados incluídos.

nota

Os pacotes npm publicados são limitados a um tamanho máximo inferior a 2 GB.

Latência de publicação

As versões de pacotes publicadas em um CodeArtifact repositório geralmente estão disponíveis para download em menos de um segundo. Por exemplo, se você publicar uma versão do pacote npm em CodeArtifact withnpm publish, essa versão deverá estar disponível para um npm install comando em menos de um segundo. No entanto, a publicação pode ser inconsistente e, às vezes, demorar mais. Se você precisar usar uma versão do pacote imediatamente após a publicação, use novas tentativas para garantir que o download seja confiável. Por exemplo, depois de publicar a versão do pacote, repita o download até três vezes se a versão do pacote recém-publicada não estiver disponível inicialmente na primeira tentativa de download.

nota

A importação de uma versão do pacote de um repositório público normalmente leva mais tempo do que a publicação. Para ter mais informações, consulte Latência da conexão externa.

Satus da versão do pacote

Cada versão do pacote CodeArtifact tem um status que descreve o estado atual e a disponibilidade da versão do pacote. Você pode alterar o status da versão do pacote no AWS CLI e no SDK. Para ter mais informações, consulte Atualizar o status da versão do pacote.

Os seguintes valores de status da versão do pacote são possíveis:

  • Publicado — A versão do pacote foi publicada com sucesso e pode ser solicitada usando um gerenciador de pacotes. A versão do pacote será incluída nas listas de versões de pacotes retornadas aos gerenciadores de pacotes, por exemplo, na saída de npm view <package-name> versions. Todos os ativos da versão do pacote estão disponíveis no repositório.

  • Não concluído — O cliente carregou um ou mais ativos para uma versão do pacote, mas não a finalizou ao movê-la para o estado Published. No momento, apenas as versões genéricas e do pacote Maven podem ter o status de Unfinished. Para pacotes Maven, isso pode ocorrer quando o cliente carrega um ou mais ativos para uma versão do pacote, mas não publica um arquivo maven-metadata.xml para o pacote que inclui essa versão. Quando uma versão do pacote Maven estiver Não concluída, ela não será incluída nas listas de versões retornadas aos clientes, como mvn ou gradle. Portanto, ela não poderá ser usada como parte de uma compilação. Pacotes genéricos podem ser mantidos deliberadamente no Unfinished estado fornecendo o unfinished sinalizador ao chamar a PublishPackageVersionAPI. Um pacote genérico pode ser alterado para o Published estado omitindo a unfinished sinalização ou chamando a UpdatePackageVersionsStatusAPI.

  • Não listado — Os ativos da versão do pacote estão disponíveis para download no repositório, mas a versão do pacote não está incluída na lista de versões retornadas aos gerenciadores de pacotes. Por exemplo, para um pacote npm, a saída de npm view <package-name> versions não incluirá a versão do pacote. Isso significa que a lógica de resolução de dependências do npm não selecionará a versão do pacote porque a versão não aparece na lista de versões disponíveis. No entanto, se a versão do pacote Não listado já estiver referenciada em um arquivo npm package-lock.json, ela ainda poderá ser baixada e instalada, por exemplo, durante a execução de npm ci.

  • Arquivado — Os ativos da versão do pacote não podem mais ser baixados. A versão do pacote não será incluída na lista de versões retornada aos gerenciadores de pacotes. Como os ativos não estão disponíveis, o consumo da versão do pacote pelos clientes é bloqueado. Se a compilação do seu aplicativo depender de uma versão atualizada para Arquivado, a compilação será interrompida, supondo que a versão do pacote não tenha sido armazenada em cache localmente. Você não pode usar um gerenciador de pacotes ou uma ferramenta de compilação para republicar uma versão de pacote arquivado porque ela ainda está presente no repositório, mas você pode alterar o status da versão do pacote de volta para Não listada ou Publicada com a API. UpdatePackageVersionsStatus

  • Descartada — A versão do pacote não aparece nas listagens e os ativos não podem ser baixados do repositório. A principal diferença entre descartado e arquivado é que, com o status de descartado, os ativos da versão do pacote serão excluídos permanentemente por. CodeArtifact Por esse motivo, você não pode mover uma versão de pacote de Descartada para Arquivada, Não Listada ou Publicada. A versão do pacote não pode mais ser usada porque os ativos foram excluídos. Depois que uma versão do pacote for marcada como Descartada, você não será mais cobrado pelo armazenamento dos ativos do pacote.

As versões do pacote de todos os status serão retornadas por padrão ao chamar list-package-versions sem nenhum --status parâmetro.

Além dos estados listados anteriormente, uma versão do pacote também pode ser excluída com a DeletePackageVersionsAPI. Depois de ser excluída, uma versão do pacote não está mais no repositório e você pode republicá-la livremente usando um gerenciador de pacotes ou uma ferramenta de compilação. Depois que uma versão do pacote for excluída, você não será mais cobrado pelo armazenamento dos ativos dessa versão.

Normalização do nome e da versão do pacote e do nome do ativo

CodeArtifact normaliza nomes de pacotes, versões de pacotes e nomes de ativos antes de armazená-los, o que significa que os nomes ou versões CodeArtifact podem ser diferentes do nome ou versão fornecidos quando o pacote foi publicado. Para obter mais informações sobre como os nomes e as versões são normalizados CodeArtifact para cada tipo de pacote, consulte a documentação a seguir:

CodeArtifact não executa a normalização em outros formatos de pacote.