업스트림 리포지토리가 포함된 패키지 버전 요청 - CodeArtifact

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

업스트림 리포지토리가 포함된 패키지 버전 요청

클라이언트 (예: npm) 가 업스트림 리포지토리가 여러 개 my_repo 있는 이름의 CodeArtifact 리포지토리에서 패키지 버전을 요청하면 다음과 같은 상황이 발생할 수 있습니다.

  • 요청된 패키지 버전이 my_repo에 포함되어 있는 경우 클라이언트에 반환됩니다.

  • 요청된 패키지 버전이 포함되어 my_repo 있지 않은 경우 업스트림 CodeArtifact 리포지토리에서 찾아보세요. my_repo 패키지 버전을 찾으면 해당 패키지에 대한 참조가 my_repo에 복사되고 패키지 버전이 클라이언트에 반환됩니다.

  • my_repo 및 해당 업스트림 리포지토리 모두에 패키지 버전이 포함되어 있지 않은 경우 HTTP 404 Not Found 응답이 클라이언트에 반환됩니다.

create-repository 또는 update-repository 명령을 사용하여 업스트림 리포지토리를 추가할 경우 패키지 버전 요청 시 우선 순위는 --upstreams 파라미터에 전달되는 순서에 따라 결정됩니다. 패키지 버전을 요청할 때 사용할 순서대로 업스트림 리포지토리를 지정하십시오--upstreams. CodeArtifact 자세한 정보는 업스트림 리포지토리 우선순위 순서을 참조하세요.

하나의 리포지토리에 허용되는 최대 직접 업스트림 리포지토리 수는 10개입니다. 직접 업스트림 리포지토리에도 자체 업스트림 리포지토리가 있을 수 있으므로 10개가 넘는 리포지토리에서 패키지 버전을 검색할 CodeArtifact 수 있습니다. 패키지 버전을 요청할 때 CodeArtifact 조회할 수 있는 최대 저장소 수는 25개입니다.

업스트림 리포지토리의 패키지 보존

요청된 패키지 버전이 업스트림 저장소에서 발견되면 해당 버전에 대한 참조가 유지되며 다운스트림 저장소에서 항상 사용할 수 있습니다. 유지되는 패키지 버전은 다음 사항에 영향을 받지 않습니다.

  • 업스트림 리포지토리 삭제

  • 업스트림 리포지토리와 다운스트림 리포지토리 간 연결 해제

  • 업스트림 리포지토리에서 패키지 버전 삭제

  • 업스트림 리포지토리의 패키지 버전 편집(예: 새 자산 추가)

업스트림 관계를 통해 패키지 가져오기

CodeArtifact 리포지토리가 외부 연결이 있는 리포지토리와 업스트림 관계에 있는 경우 업스트림 리포지토리에 없는 패키지에 대한 요청은 외부 리포지토리에서 복사됩니다. 예를 들어, 다음과 같은 구성을 살펴보겠습니다. repo-A 이름이 지정된 리포지토리에는 repo-B 이름이 지정된 업스트림 저장소가 있고 repo-Bhttps://npmjs.com에 대한 외부 연결이 있습니다.

세 개의 리포지토리가 서로 연결되어 있는 것을 보여주는 간단한 업스트림 저장소 다이어그램

npmrepo-A 리포지토리를 사용하도록 구성된 경우 npm install을 실행하면 https://npmjs.com에서 repo-B로 패키지 복사가 트리거됩니다. 설치된 버전도 함께 repo-A로 가져옵니다. 다음 예제에서는 lodash를 설치합니다.

$ npm config get registry https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my-downstream-repo/ $ npm install lodash + lodash@4.17.20 added 1 package from 2 contributors in 6.933s

npm install을 실행한 후에는 repo-A에는 최신 버전(lodash 4.17.20)만 포함됩니다. 해당 버전이 repo-A에서 npm를 통해 가져온 버전이기 때문입니다.

aws codeartifact list-package-versions --repository repo-A --domain my_domain \ --domain-owner 111122223333 --format npm --package lodash

출력 예제:

{ "package": "lodash", "format": "npm", "versions": [ { "version": "4.17.15", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ] }

repo-Bhttps://npmjs.com에 대한 외부 연결이 있기 때문에 https://npmjs.com에서 가져온 모든 패키지 버전이 repo-B에 저장됩니다. 이러한 패키지 버전은 repo-B와 업스트림 관계가 있는 모든 다운스트림 리포지토리에서 가져올 수 있었을 것입니다.

repo-B의 내용은 시간이 지남에 따라 https://npmjs.com에서 가져온 모든 패키지 및 패키지 버전을 볼 수 있는 방법을 제공합니다. 예를 들어, 시간이 지남에 따라 가져온 lodash 패키지의 모든 버전을 보려면 다음과 같이 list-package-versions를 사용할 수 있습니다.

aws codeartifact list-package-versions --repository repo-B --domain my_domain \ --domain-owner 111122223333 --format npm --package lodash --max-results 5

출력 예제:

{ "package": "lodash", "format": "npm", "versions": [ { "version": "0.10.0", "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, { "version": "0.2.2", "revision": "REVISION-2-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, { "version": "0.2.0", "revision": "REVISION-3-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, { "version": "0.2.1", "revision": "REVISION-4-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, { "version": "0.1.0", "revision": "REVISION-5-SAMPLE-6C81EFF7DA55CC", "status": "Published" } ], "nextToken": "eyJsaXN0UGFja2FnZVZlcnNpb25zVG9rZW4iOiIwLjIuMiJ9" }

중간 리포지토리에 패키지 보존

CodeArtifact 업스트림 리포지토리를 체인으로 연결할 수 있습니다. 예를 들어 repo-Arepo-B의 업스트림이 되고 repo-Brepo-C의 업스트림이 됩니다. 이 구성을 통해 repo-A에서 repo-Brepo-C 패키지 버전을 사용할 수 있습니다.

세 개의 리포지토리가 서로 연결되어 있는 모습을 보여주는 간단한 업스트림 리포지토리 다이어그램

패키지 관리자가 repo-A 리포지토리에 연결하고 repo-C 리포지토리에서 패키지 버전을 가져오면 해당 패키지 버전은 repo-B 리포지토리에 유지되지 않습니다. 이 예시에서는 패키지 버전은 최종 repo-A 다운스트림 리포지토리에만 유지됩니다. 중간 리포지토리에는 유지되지 않습니다. 더 긴 체인의 경우에도 마찬가지입니다. 예를 들어, 네 개의 리포지토리 repo-A, repo-B, repo-C, repo-D 및 패키지 관리자가 repo-A에 연결되어 있고 repo-D에서 패키지 버전을 가져온 경우, 해당 패키지 버전은 repo-A에는 유지되지만 repo-B 또는 repo-C에는 유지되지 않습니다.

패키지 보존 동작은 외부 저장소에서 패키지 버전을 가져올 때와 비슷합니다. 단, 패키지 버전이 외부 연결이 연결된 리포지토리에 항상 유지된다는 점이 다릅니다. 예를 들어 repo-Arepo-B의 업스트림입니다. repo-Brepo-C의 업스트림이고 repo-Cnpmjs.com 이 외부 연결로 구성되어 있습니다. 다음 다이어그램을 참조하세요.

npmjs.com에 대한 외부 연결과 함께 연결된 세 개의 리포지토리를 보여주는 업스트림 리포지토리 다이어그램

repo-A에 연결된 패키지 관리자가 패키지 버전(예: lodash 4.17.20)을 요청했으나 해당 패키지 버전이 세 리포지토리 중 어디에도 없는 경우 npmjs.com에서 해당 패키지 버전을 가져옵니다. lodash 4.17.20을 가져오면 이는 최종 다운스트림 리포지토리인 repo-Anpmjs.com에 대한 외부 연결이 되어 있는 repo-C에 유지됩니다. lodash 4.17.20은 중간 저장소인 repo-B에는 유지되지 않습니다.