

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

# 외부 연결을 통한 패키지 요청하기
<a name="external-connection-requesting-packages"></a>

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

**Topics**
+ [외부 연결에서 패키지 불러오기](#fetching-packages-from-a-public-repository)
+ [외부 연결 지연 시간](#external-connection-latency)
+ [외부 저장소를 사용할 수 없을 때의 CodeArtifact 동작](#external-connection-unavailable)
+ [새 패키지 버전 사용 가능 여부](#new-pv-availability)
+ [둘 이상의 에셋을 포함한 패키지 버전 가져오기](#import-pv-multi-asset)

## 외부 연결에서 패키지 불러오기
<a name="fetching-packages-from-a-public-repository"></a>

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

**참고**  
다음 지침에서는 `npm`을 사용하며, 다른 패키지 형식 구성과 사용에 관한 지침을 확인하려면 [CodeArtifact를 Maven과 함께 사용](using-maven.md)나 [CodeArtifact를 NuGet과 함께 사용](using-nuget.md), [CodeArtifact를 Python과 함께 사용](using-python.md)을 참조하십시오.

**외부 연결을 통해 패키지를 불러오려면 다음과 같이 하십시오.**

1. CodeArtifact 저장소에서 패키지 관리자를 구성 후 인증 절차를 거치십시오. `npm`의 경우 다음 `aws codeartifact login` 명령을 사용합니다.

   ```
   aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo
   ```

1. 공용 저장소에서 패키지를 요청합니다. `npm`의 경우 다음 `npm install` 명령을 사용해 *lodash*를 설치하려는 패키지로 바꿉니다.

   ```
   npm install lodash
   ```

1. 패키지를 CodeArtifact 저장소에 불러온 후에 `list-packages` 및 `list-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"
           }
       ]
   }
   ```

## 외부 연결 지연 시간
<a name="external-connection-latency"></a>

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

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

## 외부 저장소를 사용할 수 없을 때의 CodeArtifact 동작
<a name="external-connection-unavailable"></a>

때때로 외부 저장소가 중단되어 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에 새 패키지 버전을 게시하는 데에도 영향을 줄 수 있습니다. 외부 연결이 구성된 저장소에서는 이미 외부 저장소에 존재하는 패키지 버전을 게시할 수 없습니다. 자세한 내용은 [패키지 개요](packages-overview.md) 단원을 참조하십시오. 그러나 드물게 외부 저장소가 중단되면 CodeArtifact에 외부 저장소 내 패키지 및 패키지 버전에 관한 최신 정보 등이 존재하지 않을 수 있습니다. 이 경우 CodeArtifact가 보통 거부하는 패키지 버전을 게시하도록 허용할 수 있습니다.

## 새 패키지 버전 사용 가능 여부
<a name="new-pv-availability"></a>

 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에서 사용할 수 있지만, 이 요청을 하면 캐시가 업데이트됩니다. 후속 요청 시 새 패키지 버전이 캐시에 추가되어 다운로드할 수 있습니다.

## 둘 이상의 에셋을 포함한 패키지 버전 가져오기
<a name="import-pv-multi-asset"></a>

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