上游存储库优先顺序 - CodeArtifact

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

上游存储库优先顺序

当您从包含一个或多个上游存储库的存储库请求程序包版本时,它们的优先级与调用 create-repositoryupdate-repository 命令时列出的顺序相对应。找到请求的程序包版本后,即使该搜索并未搜索所有上游存储库,搜索也会停止。有关更多信息,请参阅 添加或删除上游存储库 (AWS CLI)

使用 describe-repository 命令来查看优先顺序。

aws codeartifact describe-repository --repository my_repo --domain my_domain --domain-owner 111122223333

结果可能如下所示。结果显示,上游存储库的优先级是 upstream-1 第一、upstream-2 第二,upstream-3 第三。

{ "repository": { "name": "my_repo", "administratorAccount": "123456789012", "domainName": "my_domain", "domainOwner": "111122223333", "arn": "arn:aws:codeartifact:us-east-1:111122223333:repository/my_domain/my_repo", "description": "My new repository", "upstreams": [ { "repositoryName": "upstream-1" }, { "repositoryName": "upstream-2" }, { "repositoryName": "upstream-3" } ], "externalConnections": [] } }

简单的优先顺序示例

在下图中,my_repo 存储库有三个上游存储库。上游存储库的优先顺序为 upstream-1upstream-2upstream-3

简单的上游存储库图,其中显示了包含 3 个上游存储库的 my_repo。

my_repo 中的程序包版本发出的请求会按以下顺序搜索存储库,直到找到该版本,或直至向客户端返回 HTTP 404 Not Found 响应:

  1. my_repo

  2. upstream-1

  3. upstream-2

  4. upstream-3

如果找到了程序包版本,则即使搜索并未在所有上游存储库中查找,搜索也会停止。例如,如果在中找到了软件包版本upstream-1,则搜索将停止, CodeArtifact 不会在upstream-2或中查找upstream-3

当您使用 AWS CLI 命令列list-package-versions出中的软件包版本时my_repo,它只会在中查找my_repo。该命令不会列出上游存储库中的程序包版本。

复杂优先顺序示例

如果上游存储库有自己的上游存储库,则在移动到下一个上游存储库之前,将使用相同的逻辑来查找程序包版本。例如,假设您的 my_repo 存储库有两个上游存储库,AB。如果存储库 A 有上游存储库,则对 my_repo 中的程序包版本的请求会首先在 my_repo 中查找,其次在 A 中查找,然后在 A 的上游存储库中查找,依此类推。

在下图中,my_repo 存储库包含上游存储库。上游存储库 A 有两个上游存储库,D 有一个上游存储库。图中同一级别的上游存储库按其优先顺序从左到右显示(存储库 A 的优先顺序高于存储库 B,存储库 C 的优先级顺序高于存储库 D)。

更复杂的上游存储库图,包含 2 个上游存储库 A 和 B 以及其他上游存储库。

在此示例中,对 my_repo 中的程序包版本发出的请求会按以下顺序在存储库中查找,直到找到该版本,或者直至程序包管理器向客户端返回 HTTP 404 Not Found 响应:

  1. my_repo

  2. A

  3. C

  4. D

  5. E

  6. B