上游存储库的 API 行为 - CodeArtifact

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

上游存储库的 API 行为

当您在连接到上游存储库的存储库上调用某 CodeArtifact 些 API 时,行为可能会有所不同,具体取决于软件包或包版本存储在目标存储库还是上游存储库中。此处记录了这些 API 的行为。

有关 CodeArtifact API 的更多信息,请参阅 CodeArtifact API 参考

如果目标存储库中不存在指定的程序包版本,则大多数引用该程序包或程序包版本的 API 都会返回 ResourceNotFound 错误。即使在上游存储库中存在该程序包或程序包版本,也会返回错误。实际上,在调用这些 API 时会忽略上游存储库。这些 API 是:

  • DeletePackageVersions

  • DescribePackageVersion

  • GetPackageVersionAsset

  • GetPackageVersionReadme

  • ListPackages

  • ListPackageVersionAssets

  • ListPackageVersionDependencies

  • ListPackageVersions

  • UpdatePackageVersionsStatus

为了演示这种行为,我们使用两个存储库:target-repoupstream-repotarget-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" }

在对 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 的更多信息,请参阅在存储库之间复制程序包