Maven チェックサムの使用 - CodeArtifact

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Maven チェックサムの使用

Maven Artifact (アーティファクト) をAWS CodeArtifact リポジトリに公開すると、それぞれの アセット に関連付けられたチェックサムまたはパッケージ内のファイルを使用して、アップロードを検証します。アセットの例は、[jar][pom] および [war] ファイルです。各アセットについて、Maven Artifact (アーティファクト) には、md5 または sha1 など、アセット名に追加の拡張子が付いた複数のチェックサムファイルが含まれています。例えば、my-maven-package.jar という名前のファイルのチェックサムファイルは my-maven-package.jar.md5 および my-maven-package.jar.sha1 である可能性があります。

注記

Maven はこの条件 artifact を使用します。このガイドでは、Maven パッケージは Maven Artifact (アーティファクト) と同じです。詳細については、[AWSCodeArtifact パッケージ] を参照してください。

チェックサムストレージ

CodeArtifact は Maven チェックサムをアセットとして保存しません。つまり、ListPackageVersionAssets API の出力では、チェックサムは個別のアセットとして表示されません。代わりに、CodeArtifact によって計算されたチェックサムは、サポートされているすべてのチェックサムタイプの各アセットで使用できます。例えば、Maven のパッケージバージョン commons-lang:commons-lang 2.1 で ListPackageVersionAssets を呼び出す場合の応答の一部は次のようになります。

{ "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" } }

チェックサムはアセットとして保存されませんが、Maven クライアントは期待される場所でチェックサムを公開およびダウンロードできます。例えば、commons-lang:commons-lang 2.1maven-repo というリポジトリにある場合、JAR ファイルの SHA-256 チェックサムの URL パスは次のようになります。

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

既存の Maven パッケージ (以前に Amazon S3 に保存されたパッケージなど) を、curl などの汎用 HTTP クライアントを使用して CodeArtifact にアップロードする場合、チェックサムをアップロードする必要はありません。CodeArtifact はそれらを自動的に生成します。アセットが正しくアップロードされたことを確認するには、ListPackageVersionAssets API オペレーションを使用して、レスポンス内のチェックサムを各アセットの元のチェックサム値と比較します。

公開中のチェックサムの不一致

アセットとチェックサムの他に、Maven アーティファクトには maven-metadata.xml ファイルも含まれています。Maven パッケージの通常の公開手順では、すべてのアセットとチェックサムを最初にアップロードし、その後に maven-metadata.xml をアップロードします。例えば、前述の Maven パッケージバージョン commons-lang 2.1 の公開順序は、クライアントが SHA-256 チェックサムファイルを公開するように設定されていると仮定すると、次のようになります。

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

JAR ファイルなどのアセットのチェックサムファイルをアップロードする際に、アップロードされたチェックサム値と CodeArtifact によって計算されたチェックサム値の間に不一致があると、チェックサムのアップロードリクエストは 400 (Bad Request) レスポンスで失敗します。対応するアセットが存在しない場合、リクエストは 404 (Not Found) レスポンスで失敗します。このエラーを回避するには、まずアセットをアップロードし、次にチェックサムをアップロードする必要があります。

maven-metadata.xml をアップロードする際、CodeArtifact は通常 Maven パッケージバージョンのステータスを Unfinished から Published に変更します。いずれかのアセットでチェックサムの不一致が検出された場合、CodeArtifact は maven-metadata.xml 公開リクエストへの応答で 400 (Bad Request) を返します。このエラーにより、クライアントはこのパッケージバージョンのファイルのアップロードを停止することがあります。アップロードが停止し、maven-metadata.xml ファイルがアップロードされない場合、アップロード済みのパッケージバージョンのアセットはダウンロードできません。これは、パッケージバージョンのステータスが Published に設定されておらず、Unfinished のままであるためです。

CodeArtifact では、maven-metadata.xml がアップロードされパッケージバージョンのステータスが Published に設定された後でも、Maven のパッケージバージョンにさらにアセットを追加できます。このステータスでは、一致しないチェックサムファイルをアップロードするリクエストも 400 (Bad Request) レスポンスで失敗します。ただし、パッケージバージョンのステータスはすでに Published に設定されているため、チェックサムファイルのアップロードに失敗したものも含め、パッケージから任意のアセットをダウンロードできます。チェックサムファイルのアップロードに失敗したアセットのチェックサムをダウンロードする場合、クライアントが受け取るチェックサム値は、アップロードされたアセットデータに基づいてCodeArtifact によって計算されたチェックサム値になります。

CodeArtifact のチェックサム比較では大文字と小文字が区別され、CodeArtifact によって計算されたチェックサムは小文字でフォーマットされます。そのため、チェックサム 909FA780F76DA393E992A3D2D495F468 をアップロードすると、CodeArtifact では 909fa780f76da393e992a3d2d495f468 と同じチェックサムとして扱われないため、チェックサムの不一致でアップロードが失敗します。

チェックサムの不一致の解決

チェックサムの不一致が原因でチェックサムのアップロードが失敗した場合は、次のいずれかを試して問題を解決します。

  • Maven アーティファクトを公開するコマンドを再度実行します。これは、ダウンロード中にネットワークの問題によってチェックサムファイルが破損した場合に役立つ可能性があります。再試行でネットワークの問題が解決された場合は、チェックサムが一致し、ダウンロードが成功します。

  • パッケージバージョンを削除して、再度公開します。詳細については、「AWS CodeArtifact API Reference」の「DeletePackageVersions」を参照してください。