Usar somas de verificação do Maven - 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á.

Usar somas de verificação do Maven

Quando um artefato do Maven é publicado em um repositório do AWS CodeArtifact, a soma de verificação associada a cada ativo ou arquivo no pacote é usada para validar o upload. Os arquivos jar, pom e war são exemplos de ativos. Para cada ativo, o artefato do Maven contém vários arquivos de soma de verificação que usam o nome do ativo com uma extensão adicional, como md5 ou sha1. Por exemplo, os arquivos de soma de verificação de um arquivo chamado my-maven-package.jar podem ser my-maven-package.jar.md5 e my-maven-package.jar.sha1.

nota

O Maven usa o termoartifact. Neste guia, um pacote Maven é o mesmo que um artefato do Maven. Para obter mais informações, consulte pacote do AWSCodeArtifact.

Armazenamento da soma de verificação

O CodeArtifact não armazena somas de verificação do Maven como ativos. Isso significa que as somas de verificação não aparecem como ativos individuais na saída da API ListPackageVersionAssets. Em vez disso, as somas de verificação calculadas pelo CodeArtifact ficam disponíveis para cada ativo em todos os tipos de soma de verificação compatíveis. Por exemplo, parte da resposta da chamada de ListPackageVersionAssets na versão do pacote Maven é commons-lang:commons-lang 2.1:

{ "name": "commons-lang-2.1.jar", "size": 207723, "hashes": { "MD5": "51591549f1662a64543f08a1d4a0cf87", "SHA-1": "4763ecc9d78781c915c07eb03e90572c7ff04205", "SHA-256": "2ded7343dc8e57decd5e6302337139be020fdd885a2935925e8d575975e480b9", "SHA-512": "a312a5e33b17835f2e82e74ab52ab81f0dec01a7e72a2ba58bb76b6a197ffcd2bb410e341ef7b3720f3b595ce49fdd9994ea887ba08ff6fe21b2c714f8c405af" } }, { "name": "commons-lang-2.1.pom", "size": 9928, "hashes": { "MD5": "8e41bacdd69de9373c20326d231c8a5d", "SHA-1": "a34d992202615804c534953aba402de55d8ee47c", "SHA-256": "f1a709cd489f23498a0b6b3dfbfc0d21d4f15904791446dec7f8a58a7da5bd6a", "SHA-512": "1631ce8fe4101b6cde857f5b1db9b29b937f98ba445a60e76cc2b8f2a732ff24d19b91821a052c1b56b73325104e9280382b2520edda4e7696698165c7e09161" } }, { "name": "maven-metadata.xml", "size": 121, "hashes": { "MD5": "11bb3d48d984f2f49cea1e150b6fa371", "SHA-1": "7ef872be17357751ce65cb907834b6c5769998db", "SHA-256": "d04d140362ea8989a824a518439246e7194e719557e8d701831b7f5a8228411c", "SHA-512": "001813a0333ce4b2a47cf44900470bc2265ae65123a8c6b5ac5f2859184608596baa4d8ee0696d0a497755dade0f6bf5e54667215a06ceae1effdfb7a8d30f88" } }

Mesmo que as somas de verificação não sejam armazenadas como ativos, os clientes do Maven ainda podem publicar e baixar as somas de verificação nos locais esperados. Por exemplo, se commons-lang:commons-lang 2.1 estivesse em um repositório chamado maven-repo, o caminho do URL para a soma de verificação SHA-256 do arquivo JAR seria:

/maven/maven-repo/commons-lang/commons-lang/2.1/commons-lang-2.1.jar.sha256

Se você estiver fazendo upload de pacotes Maven existentes (por exemplo, pacotes previamente armazenados no Amazon S3) para o CodeArtifact usando um cliente HTTP genérico, como curl, por exemplo, não será necessário carregar as somas de verificação. O CodeArtifact vai gerá-los automaticamente. Se quiser verificar se os ativos foram carregados corretamente, você pode usar a operação da API ListPackageVersionAssets para comparar as somas de verificação na resposta aos valores originais de cada ativo.

Incompatibilidades da soma de verificação durante a publicação

Além dos ativos e das somas de verificação, os artefatos do Maven também contêm um arquivo maven-metadata.xml. A sequência normal de publicação de um pacote Maven é que todos os ativos e somas de verificação sejam carregados primeiro, seguidos por maven-metadata.xml. Por exemplo, a sequência de publicação da versão commons-lang 2.1 do pacote Maven descrita anteriormente, supondo que o cliente tenha sido configurado para publicar arquivos da soma de verificação SHA-256, seria:

PUT commons-lang-2.1.jar PUT commons-lang-2.1.jar.sha256 PUT commons-lang-2.1.pom PUT commons-lang-2.1.pom.sha256 PUT maven-metadata.xml PUT maven-metadata.xml.sha256

Ao fazer o upload do arquivo de soma de verificação de um ativo, por exemplo, um arquivo JAR, a solicitação de upload da soma de verificação falhará com a resposta 400 (Solicitação inválida) se houver uma incompatibilidade entre o valor da soma de verificação carregada e o valor da calculada pelo CodeArtifact. Se o ativo correspondente não existir, a solicitação falhará com a resposta 404 (Não encontrado). Para evitar esse erro, você deve primeiro carregar o ativo e, em seguida, fazer o upload da soma de verificação.

Quando você faz o upload de maven-metadata.xml, o CodeArtifact normalmente altera o status da versão do pacote Maven de Unfinished para Published. Se uma incompatibilidade da soma de verificação for detectada para qualquer ativo, o CodeArtifact retornará o erro 400 (Solicitação inválida) em resposta à solicitação de publicação de maven-metadata.xml. Esse erro pode impedir que o cliente faça upload de arquivos para essa versão do pacote. Se isso ocorrer e o arquivo maven-metadata.xml não for carregado, nenhum ativo da versão do pacote já carregado poderá ser baixado. Isso ocorre porque o status da versão do pacote não está definido como Published e permanece como Unfinished.

O CodeArtifact permite a adição de mais ativos a uma versão do pacote Maven mesmo após maven-metadata.xml ter sido carregado e o status da versão do pacote ter sido definido como Published. Nesse status, uma solicitação para carregar um arquivo de soma de verificação incompatível também falhará com uma resposta 400 (Solicitação inválida). No entanto, como o status da versão do pacote já foi definido como Published, você pode baixar qualquer ativo do pacote, incluindo aqueles para os quais o upload do arquivo de soma de verificação falhou. Ao baixar uma soma de verificação para um ativo em que o upload do arquivo de soma de verificação falhou, o valor da soma de verificação que o cliente receberá será aquele da soma de verificação calculada pelo CodeArtifact com base nos dados do ativo carregado.

As comparações de soma de verificação do CodeArtifact diferenciam maiúsculas de minúsculas, e as somas de verificação calculadas pelo CodeArtifact são formatadas em minúsculas. Portanto, se a soma de verificação 909FA780F76DA393E992A3D2D495F468 for carregada, ela falhará devido a uma incompatibilidade da soma de verificação, porque o CodeArtifact não a trata da mesma maneira que 909fa780f76da393e992a3d2d495f468.

Recuperação no caso de incompatibilidades da soma de verificação

Se o upload de uma soma de verificação falhar como resultado de uma incompatibilidade, tente uma das seguintes opções de recuperação:

  • Execute o comando que publica o artefato do Maven novamente. Isso pode funcionar se um problema de rede tiver corrompido o arquivo de soma de verificação. Se isso resolver o problema de rede, a soma de verificação será correspondente e o download será concluído.

  • Exclua a versão do pacote e, em seguida, faça uma nova publicação. Para obter mais informações, consulte DeletePackageVersions na Referência da API do AWS CodeArtifact.