

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

# 上游存储库优先顺序
<a name="repo-upstream-search-order"></a>

 当您从包含一个或多个上游存储库的存储库请求程序包版本时，它们的优先级与调用 `create-repository` 或 `update-repository` 命令时列出的顺序相对应。找到请求的程序包版本后，即使该搜索并未搜索所有上游存储库，搜索也会停止。有关更多信息，请参阅 [添加或删除上游存储库 (AWS CLI)](repo-upstream-add.md#repo-upstream-add-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": []
    }
}
```

## 简单的优先顺序示例
<a name="upstream-priority-order-simple"></a>

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

![\[简单的上游存储库图，其中显示了包含 3 个上游存储库的 my_repo。\]](http://docs.aws.amazon.com/zh_cn/codeartifact/latest/ug/images/upstream-diagram-simple.png)


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

1.  `my_repo` 

1.  `upstream-1` 

1.  `upstream-2` 

1.  `upstream-3` 

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

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

## 复杂优先顺序示例
<a name="upstream-search-order-complex"></a>

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

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

![\[更复杂的上游存储库图，包含 2 个上游存储库 A 和 B 以及其他上游存储库。\]](http://docs.aws.amazon.com/zh_cn/codeartifact/latest/ug/images/upstream-diagram-complex.png)


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

1.  `my_repo` 

1.  `A` 

1.  `C` 

1.  `D` 

1.  `E` 

1.  `B` 