외부 연결을 통한 패키지 요청하기 - CodeArtifact

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

외부 연결을 통한 패키지 요청하기

다음 글에서는 외부 연결을 통해 패키지를 요청하는 방법과 패키지 요청 시 사용할 수 있는 CodeArtifact 동작을 설명합니다.

외부 연결에서 패키지 불러오기

외부 연결을 통해 패키지를 불러오려면 CodeArtifact 저장소를 공용 저장소에 연결하기에 설명한 대로 CodeArtifact 저장소에 패키지를 추가한 뒤 패키지 관리자를 구성해 패키지를 설치합니다.

참고

다음 지침에서는 npm을 사용하며, 다른 패키지 형식 구성과 사용에 관한 지침을 확인하려면 CodeArtifact를 Maven과 함께 사용CodeArtifact를 NuGet과 함께 사용, CodeArtifact를 Python과 함께 사용을 참조하십시오.

외부 연결을 통해 패키지를 불러오려면 다음과 같이 하십시오.
  1. CodeArtifact 저장소에서 패키지 관리자를 구성 후 인증 절차를 거치십시오. npm의 경우 다음 aws codeartifact login 명령을 사용합니다.

    aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo
  2. 공용 저장소에서 패키지를 요청합니다. npm의 경우 다음 npm install 명령을 사용해 lodash를 설치하려는 패키지로 바꿉니다.

    npm install lodash
  3. 패키지를 CodeArtifact 저장소에 불러온 후에 list-packageslist-package-versions 명령을 사용하여 패키지를 볼 수 있습니다.

    aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo

    출력 예:

    { "packages": [ { "format": "npm", "package": "lodash" } ] }

    list-package-versions 명령은 CodeArtifact 저장소에 복사한 패키지의 모든 버전을 나열합니다.

    aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package lodash

    출력 예:

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

외부 연결 지연 시간

외부 연결을 통해 공용 저장소에서 패키지를 불러올 때, 패키지를 공용 저장소에서 불러오는 시점과 CodeArtifact 저장소에 저장되는 시점 사이에 지연이 발생합니다. 예를 들어, 외부 연결에서 패키지 불러오기에서 설명한 대로 npm 패키지 “lodash” 버전 1.2.5를 설치했다고 가정해 보겠습니다. npm install lodash lodash 명령 작업은 성공적으로 완료했으나, 패키지 버전이 아직 CodeArtifact 저장소에 나타나지 않을 수 있습니다. 패키지 버전이 저장소에 표시되는 데 보통 3분 가량 소요되지만, 경우에 따라 더 오래 걸릴 수도 있습니다.

이러한 지연 시간으로 인해 패키지 버전을 성공적으로 불러왔지만, 아직 저장소 버전을 CodeArtifact 콘솔에서 보거나 ListPackages 및 ListPackageVersions API 작업을 불러올 때 버전을 확인하지 못할 수 있습니다. CodeArtifact가 패키지 버전을 비동기화하면 콘솔과 API 요청을 통해 해당 버전을 볼 수 있습니다.

외부 저장소를 사용할 수 없을 때의 CodeArtifact 동작

때때로 외부 저장소가 중단되어 CodeArtifact가 해당 저장소에서 패키지를 가져올 수 없거나 패키지를 가져오는 시간이 평소에 비해 훨씬 느려질 수 있습니다. 이러한 경우 외부 저장소(예: npmjs.com)에서 미리 가져온 패키지나 CodeArtifact 저장소에 저장한 패키지 버전은 CodeArtifact에서 계속 다운로드할 수 있습니다. 하지만 해당 저장소와 외부 연결을 구성한 경우에도 CodeArtifact에 아직 저장하지 않은 패키지는 사용하지 못할 수 있습니다. 예를 들면, 지금까지 애플리케이션에서 사용했던 버전이 npm 패키지 lodash 4.17.19 버전이기 때문에 CodeArtifact 저장소에 npm 패키지 버전이 포함되어 있을 수 있습니다. 4.17.20로 업그레이드하려는 경우, CodeArtifact는 npmjs.com에서 새 버전을 가져와 CodeArtifact 저장소에 저장합니다. 그러나 npmjs.com이 작동을 중단하는 경우 이 새 버전을 사용할 수 없습니다. 이 경우 유일한 해결 방법은 차후 npmjs.com이 복구된 뒤 다시 시도하는 것입니다.

외부 저장소 작동 중단은 CodeArtifact에 새 패키지 버전을 게시하는 데에도 영향을 줄 수 있습니다. 외부 연결이 구성된 저장소에서는 이미 외부 저장소에 존재하는 패키지 버전을 게시할 수 없습니다. 자세한 내용은 패키지 개요 섹션을 참조하세요. 그러나 드물게 외부 저장소가 중단되면 CodeArtifact에 외부 저장소 내 패키지 및 패키지 버전에 관한 최신 정보 등이 존재하지 않을 수 있습니다. 이 경우 CodeArtifact가 보통 거부하는 패키지 버전을 게시하도록 허용할 수 있습니다.

새 패키지 버전 사용 가능 여부

npmjs.com과 같은 공용 저장소에 있는 패키지 버전을 CodeArtifact 저장소를 통해 사용하려면 먼저 위치 패키지 메타데이터 캐시에 추가해야 합니다. 이 캐시는 각 AWS가 위치한 CodeArtifact에서 관리하며, 지원하는 공용 저장소의 콘텐츠를 보여주는 메타데이터를 포함합니다. 해당 캐시로 인해 새 패키지 버전이 공용 저장소에 게시되는 시점과 CodeArtifact에서 사용할 수 있는 시점 사이에 지연이 발생하는 것입니다. 이 지연은 패키지 형식에 따라 다릅니다.

npm과 Python 및 Nuget 패키지의 경우, 새 패키지 버전이 npmjs.com, pypi.org 또는 nuget.org에 게시된 이후 CodeArtifact 저장소에 설치할 수 있는 시점까지 최대 30분 가량 지연될 수 있습니다. CodeArtifact는 두 저장소의 메타데이터를 자동으로 동기화하여 캐시를 최신 상태로 유지합니다.

Maven 패키지의 경우, 새 패키지 버전이 공용 저장소에 게시된 후 CodeArtifact 저장소에 설치할 수 있을 때까지 최대 3시간 가량 지연될 수 있습니다. CodeArtifact는 최대 3시간에 한 번씩 패키지의 새 버전을 확인합니다. 3시간의 캐시 수명이 만료되고 지정된 패키지 이름을 처음 요청하면 해당 패키지의 새 버전을 모두 지역 캐시로 가져옵니다.

일반적으로 사용하는 Maven 패키지의 경우, 요청이 많이 전송되어 캐시 수명이 만료되는 즉시 캐시가 업데이트되는 경우가 많아 3시간마다 새 버전을 가져옵니다. 자주 사용하지 않는 패키지의 경우 CodeArtifact 저장소에서 패키지 버전을 요청할 때까지 캐시에 최신 버전을 저장하지 않습니다. 첫 요청에서는 이전에 불러온 버전만 CodeArtifact에서 사용할 수 있지만, 이 요청을 하면 캐시가 업데이트됩니다. 후속 요청 시 새 패키지 버전이 캐시에 추가되어 다운로드할 수 있습니다.

둘 이상의 에셋을 포함한 패키지 버전 가져오기

Maven과 Python 패키지, 또는 두 패키지 모두 버전 당 여러 개의 에셋을 포함할 수 있습니다. 따라서 이러한 패키지 형식을 가져오려면 패키지 버전당 에셋이 하나뿐인 npm이나 NuGet 패키지보다 더 복잡한 절차를 걸쳐야 합니다. 이러한 패키지 형식에서 불러올 수 있는 에셋과 새로 추가된 에셋을 사용하는 방법은 업스트림 및 외부 연결에서 Python 패키지 요청하기업스트림 및 외부 연결에서 Maven 패키지 요청를 참조하십시오.