기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Maven 체크섬 사용
Maven 아티팩트가 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 패키지를 참조하세요.
체크섬 스토리지
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.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 작업을 사용하여 각 자산의 원래 체크섬 값에 대한 응답의 체크섬을 비교할 수 있습니다.
게시 중 체크섬 불일치
자산과 체크섬 외에도 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
과 같은 것으로 처리하지 않기 때문에 체크섬 불일치로 실패합니다.
체크섬 불일치 복구하기
체크섬 불일치로 인해 체크섬 업로드가 실패하는 경우, 다음 중 하나를 시도하여 복구합니다.
Maven 아티팩트를 다시 게시하는 명령을 실행합니다. 네트워크 문제로 인해 체크섬 파일이 손상된 경우, 이러한 명령 실행이 효과적일 수 있습니다. 이러한 방법으로 네트워크 문제가 해결되면 체크섬이 일치하여 다운로드가 완료됩니다.
패키지 버전을 삭제한 후 다시 게시합니다. 자세한 내용은 AWS CodeArtifact API 참조의 DeletePackageVersions를 참조하세요.