本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
上游存储库的 API 行为
当您在连接到上游存储库的存储库上调用某 CodeArtifact 些 API 时,行为可能会有所不同,具体取决于软件包或包版本存储在目标存储库还是上游存储库中。此处记录了这些 API 的行为。
有关 CodeArtifact API 的更多信息,请参阅 CodeArtifact API 参考。
如果目标存储库中不存在指定的程序包版本,则大多数引用该程序包或程序包版本的 API 都会返回 ResourceNotFound
错误。即使在上游存储库中存在该程序包或程序包版本,也会返回错误。实际上,在调用这些 API 时会忽略上游存储库。这些 API 是:
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" }
在对 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 的更多信息,请参阅在存储库之间复制程序包。