업스트림 및 외부 연결에서 Maven 패키지 요청 - CodeArtifact

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

업스트림 및 외부 연결에서 Maven 패키지 요청

표준 자산 이름 가져오기

Maven Central과 같은 공개 리포지토리에서 Maven 패키지 버전을 가져올 때 AWS는 해당 패키지 버전의 모든 자산을 CodeArtifact 가져오려고 시도합니다. 업스트림 리포지토리가 포함된 패키지 버전 요청에 설명된 대로 다음과 같은 경우에 가져오기가 실행됩니다.

  • 클라이언트가 리포지토리에서 Maven 자산을 요청합니다. CodeArtifact

  • 패키지 버전은 리포지토리 또는 해당 업스트림에 아직 없습니다.

  • 퍼블릭 Maven 리포지토리에 연결할 수 있는 외부 연결이 있습니다.

클라이언트가 하나의 에셋만 요청했더라도 해당 패키지 버전에서 찾을 수 있는 모든 에셋을 CodeArtifact 임포트하려고 시도합니다. Maven 패키지 버전에 사용할 수 있는 자산을 CodeArtifact 찾는 방법은 특정 공개 저장소에 따라 다릅니다. 일부 퍼블릭 Maven 리포지토리는 자산 목록 요청을 지원하지만 나머지 리포지토리는 지원하지 않습니다. 자산을 나열하는 방법을 제공하지 않는 저장소의 경우 존재할 CodeArtifact 가능성이 있는 자산 이름 세트를 생성합니다. 예를 들어 Maven 패키지 버전의 junit 4.13.2 에셋이 요청되면 는 CodeArtifact 다음 에셋을 가져오려고 시도합니다.

  • junit-4.13.2.pom

  • junit-4.13.2.jar

  • junit-4.13.2-javadoc.jar

  • junit-4.13.2-sources.jar

비표준 자산 이름 가져오기

Maven 클라이언트가 위에서 설명한 패턴 중 하나와 일치하지 않는 자산을 요청하면 해당 자산이 공용 저장소에 있는지 CodeArtifact 확인합니다. 해당 자산이 있는 경우, 그 자산을 가져와서 기존 패키지 버전 레코드(있는 경우)에 추가합니다. 예를 들어, Maven 패키지 버전 com.android.tools.build:aapt2 7.3.1-8691043에는 다음과 같은 자산이 포함되어 있습니다.

  • aapt2-7.3.1-8691043.pom

  • aapt2-7.3.1-8691043-windows.jar

  • aapt2-7.3.1-8691043-osx.jar

  • aapt2-7.3.1-8691043-linux.jar

클라이언트가 POM 파일을 요청할 때 패키지 버전의 자산을 나열할 수 없는 경우 CodeArtifact POM만 임포트됩니다. 이는 다른 어떤 자산도 표준 자산 이름 패턴과 일치하지 않기 때문입니다. 하지만 클라이언트가 JAR 에셋 중 하나를 요청하면 해당 에셋을 가져와서 저장된 기존 패키지 버전에 추가됩니다. CodeArtifact 업스트림 리포지토리의 패키지 보존에 설명된 대로 최대 다운스트림 리포지토리(클라이언트가 요청한 리포지토리)와 외부 연결이 연결된 리포지토리의 패키지 버전이 모두 새 자산을 포함하도록 업데이트됩니다.

일반적으로 패키지 버전이 저장소에 보관되면 업스트림 CodeArtifact 저장소의 변경에 영향을 받지 않습니다. 자세한 정보는 업스트림 리포지토리의 패키지 보존을 참조하세요. 하지만 앞에서 설명한 비표준 이름을 가진 Maven 자산의 동작은 이 규칙의 예외에 속합니다. 클라이언트가 추가 자산을 요청하지 않으면 다운스트림 패키지 버전이 변경되지 않지만 이 경우 보존된 패키지 버전은 맨 처음 보존된 후에 수정되므로 변경 불가능하지 않습니다. 그렇지 않으면 비표준 이름을 가진 Maven 자산에 액세스할 수 없기 때문에 이 동작이 필요합니다. CodeArtifact 패키지 버전을 리포지토리에 보관한 후 공용 리포지토리의 Maven 패키지 버전에 추가하는 경우에도 이 동작이 활성화됩니다. CodeArtifact

자산 출처 확인

이전에 보관했던 Maven 패키지 버전에 새 자산을 추가할 때 보관된 패키지 버전의 출처가 새 자산의 출처와 동일한지 CodeArtifact 확인합니다. 이렇게 하면 서로 다른 퍼블릭 리포지토리에서 여러 자산이 생성되는 ‘혼합’ 패키지 버전을 만들 수 없습니다. 이 검사를 하지 않으면 Maven 패키지 버전이 두 개 이상의 공용 저장소에 게시되고 해당 저장소가 저장소의 업스트림 그래프에 포함된 경우 자산 혼합이 발생할 수 있습니다. CodeArtifact

업스트림 리포지토리에서 새 자산 가져오기 및 패키지 버전 상태

업스트림 리포지토리에 있는 패키지 버전의 패키지 버전 상태로 인해 다운스트림 리포지토리에 해당 버전을 보존하지 CodeArtifact 못할 수 있습니다.

예를 들어, 하나의 도메인에 세 개의 리포지토리 즉, repo-A, repo-B, repo-C가 있는데 여기서 repo-Brepo-A의 업스트림이며 repo-Crepo-B의 업스트림이라고 가정해 보겠습니다.

업스트림 리포지토리에서 새 자산과 패키지 버전이 작동하는 방식을 보여주는 다이어그램.

Maven 패키지 com.android.tools.build:aapt2의 패키지 버전 7.3.1repo-B에 있으며 상태는 Published입니다. 이 버전은 repo-A에 있지 않습니다. 클라이언트가 repo-A를 출처로 한 이 패키지 버전의 자산을 요청하는 경우, 응답은 200(OK)이며 Maven 패키지 버전 7.3.1repo-A에 그대로 유지됩니다. 그러나 repo-B에서 패키지 버전 7.3.1의 상태가 Archived 또는 Disposed인 경우, 404(찾을 수 없음)라는 응답이 표시됩니다. 이 두 상태에서 패키지 버전의 자산은 다운로드할 수 없기 때문입니다.

repo-A, repo-Brepo-C에서 com.android.tools.build:aapt2에 대한 패키지 오리진 제어upstream=BLOCK로 설정하면 패키지 버전 상태와 관계없이 repo-A에서 해당 패키지의 모든 버전에 대한 새 자산을 가져오지 못하게 됩니다.