

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

# 업스트림 리포지토리에서의 API 동작
<a name="upstream-repo-api-behavior"></a>

 업스트림 리포지토리에 연결된 리포지토리에서 특정 CodeArtifact API를 호출하면 패키지 또는 패키지 버전이 대상 리포지토리에 저장되어 있는지 업스트림 리포지토리에 저장되는지에 따라 동작이 달라질 수 있습니다. 이러한 API의 동작은 여기에 설명되어 있습니다.

CodeArtifact API에 대한 자세한 내용은 [CodeArtifact API 참조](https://docs.aws.amazon.com/codeartifact/latest/APIReference/Welcome.html)를 참조하세요.

패키지 또는 패키지 버전을 참조하는 대부분의 API는 지정된 패키지 버전이 대상 리포지토리에 없는 경우 `ResourceNotFound` 오류를 반환합니다. 이는 패키지 또는 패키지 버전이 업스트림 저장소에 있는 경우에도 마찬가지입니다. 사실상 이러한 API를 호출할 때 업스트림 리포지토리는 무시됩니다. 이러한 API는 다음과 같습니다.
+ DeletePackageVersions
+ DescribePackageVersion
+ GetPackageVersionAsset
+ GetPackageVersionReadme
+ ListPackages
+ ListPackageVersionAssets
+ ListPackageVersionDependencies
+ ListPackageVersions
+ UpdatePackageVersionsStatus

이 동작을 보여주기 위한 `target-repo`, `upstream-repo` 두 개의 저장소가 있습니다. `target-repo`는 비어 있으며 업스트림 리포지토리로 `upstream-repo`가 구성되었습니다. `upstream-repo`에는 `lodash` npm 패키지가 있습니다.

`upstream-repo`에서 `lodash` 패키지가 포함된 `DescribePackageVersion` API를 호출하면 다음과 같은 결과가 출력됩니다.

```
{
    "packageVersion": {
        "format": "npm",
        "packageName": "lodash",
        "displayName": "lodash",
        "version": "4.17.20",
        "summary": "Lodash modular utilities.",
        "homePage": "https://lodash.com/",
        "sourceCodeRepository": "https://github.com/lodash/lodash.git",
        "publishedTime": "2020-10-14T11:06:10.370000-04:00",
        "licenses": [
            {
                "name": "MIT"
            }
        ],
        "revision": "Ciqe5/9yicvkJT13b5/LdLpCyE6fqA7poa9qp+FilPs=",
        "status": "Published"
    }
```

`target-repo`에서 비어 있지만 업스트림으로 `upstream-repo`가 구성된 동일한 API를 호출하면 다음과 같은 결과가 출력됩니다.

```
An error occurred (ResourceNotFoundException) when calling the DescribePackageVersion operation: 
Package not found in repository. RepoId: {{repo-id}}, Package = PackageCoordinate{packageType=npm, packageName=lodash},
```

 `CopyPackageVersions` API는 다르게 동작합니다. 기본적으로 `CopyPackageVersions` API는 대상 리포지토리에 저장된 패키지 버전만 복사합니다. 패키지 버전이 업스트림 리포지토리에는 저장되지만 대상 리포지토리에는 저장되지 않는 경우 복사되지 않습니다. 업스트림 리포지토리에만 저장되는 패키지의 패키지 버전을 포함하려면 API 요청에서 `includeFromUpstream` 값을 `true`로 설정해야 합니다.

`CopyPackageVersions` API에 대한 자세한 내용은 [리포지토리 간 패키지 복사](copy-package.md)를 참조하세요.