

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Maven 체크섬 사용
<a name="maven-checksums"></a>

 Maven 아티팩트가 an AWS CodeArtifact 리포지토리에 게시되면 패키지의 각 *자산* 또는 파일과 연결된 체크섬이 업로드를 검증하는 데 사용됩니다. 자산의 예로는 **jar, **pom, **war 파일 등이 있습니다. 각 자산의 경우, `md5` 또는 `sha1` 같은 추가 확장자가 있는 자산 이름을 사용하는 여러 개의 체크섬 파일이 Maven 아티팩트에 포함되어 있습니다. 예를 들어, `my-maven-package.jar`라는 이름이 지정된 파일의 체크섬 파일은 `my-maven-package.jar.md5` 및 `my-maven-package.jar.sha1`일 수 있습니다.

**참고**  
 Maven은 `artifact`라는 용어를 사용합니다. 이 가이드에서 Maven 패키지는 Maven 아티팩트와 동일합니다. 자세한 내용은 [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
```

`curl`과 같은 일반 HTTP 클라이언트를 사용하여 기존 Maven 패키지(예: 이전에 Amazon S3에 저장된 패키지)를 CodeArtifact에 업로드하는 경우, 체크섬을 업로드할 필요가 없습니다. CodeArtifact는 체크섬을 자동으로 생성합니다. 자산이 올바르게 업로드되었는지 확인하려는 경우, ListPackageVersionAssets API 작업을 사용하여 각 자산의 원래 체크섬 값에 대한 응답의 체크섬을 비교할 수 있습니다.

## 게시 중 체크섬 불일치
<a name="maven-checksum-mismatch"></a>

자산과 체크섬 외에도 Maven 아티팩트에는 `maven-metadata.xml` 파일도 포함되어 있습니다. Maven 패키지의 일반적인 게시 순서는 모든 자산과 체크섬을 먼저 업로드한 후 `maven-metadata.xml`을 업로드하는 것입니다. 예를 들어, 클라이언트가 SHA-256 체크섬 파일을 게시하도록 구성되었다고 할 때 앞서 `commons-lang 2.1`에 설명된 Maven 패키지 버전의 게시 순서는 다음과 같습니다.

```
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(잘못된 요청)** 응답이 함께 표시됩니다. 해당 자산이 없는 경우, 요청은 실패하며 **404(찾을 수 없음)** 응답이 함께 표시됩니다. 이 오류를 방지하려면 먼저 자산을 업로드한 후 체크섬을 업로드해야 합니다.

`maven-metadata.xml`이 업로드되면 CodeArtifact는 일반적으로 Maven 패키지 버전의 상태를 `Unfinished`에서 `Published`로 변경합니다. 자산에 대해 체크섬 불일치가 감지되면 CodeArtifact는 `maven-metadata.xml` 게시 요청에 대한 응답으로 **400(잘못된 요청)**을 반환합니다. 이 오류로 인해 클라이언트가 해당 패키지 버전에 대한 파일 업로드를 중단할 수 있습니다. 이러한 문제가 발생하여 `maven-metadata.xml` 파일이 업로드되지 않을 경우, 이미 업로드된 패키지 버전의 자산을 다운로드할 수 없습니다. 이는 패키지 버전의 상태가 `Published`로 설정되지 않고 `Unfinished`로 계속 유지되기 때문입니다.

CodeArtifact를 사용하면 `maven-metadata.xml`이 업로드되고 패키지 버전 상태가 `Published`로 설정된 후에도 Maven 패키지 버전에 자산을 더 추가할 수 있습니다. 이 상태에서는 불일치한 체크섬 파일을 업로드하라는 요청도 실패하며 **400(잘못된 요청)** 응답이 함께 표시됩니다. 하지만 패키지 버전 상태가 이미 `Published`로 설정되었으므로 체크섬 파일 업로드가 실패한 자산을 포함하여 패키지에서 모든 자산을 다운로드할 수 있습니다. 체크섬 파일 업로드가 실패한 자산의 체크섬을 다운로드할 때 클라이언트가 수신하는 체크섬 값은 업로드된 자산 데이터를 기반으로 CodeArtifact에서 계산한 체크섬 값입니다.

CodeArtifact 체크섬 비교는 대소문자를 구분하며 CodeArtifact로 계산된 체크섬은 소문자 형식으로 표시됩니다. 따라서 `909FA780F76DA393E992A3D2D495F468` 체크섬이 업로드되면 CodeArtifact가 이를 `909fa780f76da393e992a3d2d495f468`과 같은 것으로 처리하지 않기 때문에 체크섬 불일치로 실패합니다.

## 체크섬 불일치 복구하기
<a name="maven-checksum-mismatch-recovery"></a>

체크섬 불일치로 인해 체크섬 업로드가 실패하는 경우, 다음 중 하나를 시도하여 복구합니다.
+ Maven 아티팩트를 다시 게시하는 명령을 실행합니다. 네트워크 문제로 인해 체크섬 파일이 손상된 경우, 이러한 명령 실행이 효과적일 수 있습니다. 이러한 방법으로 네트워크 문제가 해결되면 체크섬이 일치하여 다운로드가 완료됩니다.
+ 패키지 버전을 삭제한 후 다시 게시합니다. 자세한 내용은 **AWS CodeArtifact API 참조의 [DeletePackageVersions](https://docs.aws.amazon.com/dms/latest/APIReference/API_DeletePackageVersions.html)를 참조하세요.