

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

# Maven チェックサムの使用
<a name="maven-checksums"></a>

 Maven アーティファクトが 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 (アーティファクト) と同じです。詳細については、[[AWS CodeArtifact パッケージ]](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html#welcome-concepts-package) を参照してください。

## チェックサムストレージ
<a name="maven-checksum-storage"></a>

CodeArtifact は Maven チェックサムをアセットとして保存しません。つまり、[ListPackageVersionAssets API](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListPackageVersionAssets.html) の出力では、チェックサムは個別のアセットとして表示されません。代わりに、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.1` が `maven-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 オペレーションを使用して、レスポンス内のチェックサムを各アセットの元のチェックサム値と比較します。

## 公開中のチェックサムの不一致
<a name="maven-checksum-mismatch"></a>

アセットとチェックサムの他に、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` と同じチェックサムとして扱われないため、チェックサムの不一致でアップロードが失敗します。

## チェックサムの不一致の解決
<a name="maven-checksum-mismatch-recovery"></a>

チェックサムの不一致が原因でチェックサムのアップロードが失敗した場合は、次のいずれかを試して問題を解決します。
+ Maven アーティファクトを公開するコマンドを再度実行します。これは、ダウンロード中にネットワークの問題によってチェックサムファイルが破損した場合に役立つ可能性があります。再試行でネットワークの問題が解決された場合は、チェックサムが一致し、ダウンロードが成功します。
+ パッケージバージョンを削除して、再度公開します。詳細については、「*AWS CodeArtifact API Reference*」の「[DeletePackageVersions](https://docs.aws.amazon.com/dms/latest/APIReference/API_DeletePackageVersions.html)」を参照してください。