

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 上游儲存庫的 API 行為
<a name="upstream-repo-api-behavior"></a>

 當您在連線至上游儲存庫的儲存庫上呼叫特定 CodeArtifact APIs 時，行為可能會有所不同，取決於套件或套件版本是否存放在目標儲存庫或上游儲存庫中。此處會記錄這些 APIs的行為。

如需 CodeArtifact APIs的詳細資訊，請參閱 [CodeArtifact API 參考](https://docs.aws.amazon.com/codeartifact/latest/APIReference/Welcome.html)。

如果目標儲存庫中不存在指定的套件版本，則參考套件或套件版本的大多數 APIs 都會傳回`ResourceNotFound`錯誤。即使 套件或套件版本存在於上游儲存庫中，也是如此。實際上，呼叫這些 APIs時會忽略上游儲存庫。這些 APIs為：
+ DeletePackageVersions
+ DescribePackageVersion
+ GetPackageVersionAsset
+ GetPackageVersionReadme
+ ListPackages
+ ListPackageVersionAssets
+ ListPackageVersionDependencies
+ ListPackageVersions
+ UpdatePackageVersionsStatus

為了示範此行為，我們有兩個儲存庫： `target-repo`和 `upstream-repo`。 `target-repo` 是空的，並`upstream-repo`已設定為上游儲存庫。 `upstream-repo`包含 npm 套件 `lodash`。

在 上呼叫`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"
    }
```

在 上呼叫相同的 API 時`target-repo`，如果該 API 是空的，但已`upstream-repo`設定為上游，我們會取得下列輸出：

```
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 請求`true`中將 的值設定為 `includeFromUpstream` 。

如需 `CopyPackageVersions` API 的詳細資訊，請參閱 [在儲存庫之間複製套件](copy-package.md)。