

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

# 将 CodeArtifact 仓库连接到公共仓库
<a name="external-connection"></a>

您可以在 CodeArtifact 存储库和外部公共存储库（例如[https://npmjs.com](https://npmjs.com)或 [Maven Central](https://repo.maven.apache.org/maven2/) 存储库）之间添加外部连接。然后，当您从 CodeArtifact 存储库中请求一个尚不存在于存储库中的软件包时，可以从外部连接获取该软件包。这样就可以使用由应用程序所用的开源依赖项。

在中 CodeArtifact，使用外部连接的预期方法是为每个域设置一个存储库，并与给定的公共存储库建立外部连接。例如，如果要连接到 npmjs.com，请将域中的一个存储库配置为与 npmjs.com 建立外部连接，并将所有其他存储库配置为该存储库的上游存储库。这样，所有存储库都可以使用已经从 npmjs.com 提取的程序包，而不必再次提取和存储程序包。

**Topics**
+ [连接到外部存储库（控制台）](#adding-an-external-connection-console)
+ [连接到外部存储库 (CLI)](#adding-an-external-connection)
+ [支持的外部连接存储库](#supported-public-repositories)
+ [移除外部连接 (CLI)](#removing-an-external-connection)

## 连接到外部存储库（控制台）
<a name="adding-an-external-connection-console"></a>

使用控制台向外部存储库添加连接时，会发生以下情况：

1. 如果外部`-store`存储库尚不存在，则将在您的 CodeArtifact 域中创建该存储库。这些 `-store` 存储库充当您的存储库和外部存储库之间的中间存储库，让您可以连接到多个外部存储库。

1. 相应的 `-store` 存储库将作为上游存储库添加到您的存储库中。

以下列表包含中的每个`-store`存储库 CodeArtifact 及其连接的相应外部存储库。

1. `cargo-store` 连接到 crates.io。

1. `clojars-store` 连接到 Clojars 存储库。

1. `commonsware-store`已连接到 CommonsWare 安卓存储库。

1. `google-android-store` 连接到 Google Android。

1. `gradle-plugins-store` 连接到 Gradle 插件。

1. `maven-central-store` 连接到 Maven Central 存储库。

1. `npm-store` 连接到 npmjs.com。

1. `nuget-store` 连接到 nuget.org。

1. `pypi-store` 连接到 Python 打包权威机构。

1. `rubygems-store`已连接到 RubyGems .org。

**连接到外部存储库（控制台）**

1. 在 [https://console.aws.amazon.com/codesuite/codeartifact](https://console.aws.amazon.com/codesuite/codeartifact/home) /hom AWS CodeArtifact e 打开控制台。

1.  在导航窗格中，选择**域**，然后选择包含您的存储库的域名。

1.  选择您的存储库的名称。

1.  选择**编辑**。

1. 在**上游存储库**中，选择**关联上游存储库**，然后添加作为上游存储库连接的相应 `-store` 存储库。

1.  选择**更新存储库**。

将`-store`存储库添加为上游存储库后，连接到存储库的包管理器可以从相应的外部 CodeArtifact 存储库中获取软件包。

## 连接到外部存储库 (CLI)
<a name="adding-an-external-connection"></a>

您可以直接 AWS CLI 向 CodeArtifact 存储库添加外部连接，从而使用将存储库连接到外部存储库。这将允许连接到 CodeArtifact 存储库或其任何下游存储库的用户从配置的外部存储库中获取软件包。每个 CodeArtifact 存储库只能有一个外部连接。

建议每个域都有一个存储库与给定的公有存储库建立外部连接。要将其他存储库连接到公有存储库，请将具有外部连接的存储库作为其上游添加进来。如果您或域中的其他人已经在控制台中配置了外部连接，则您的域可能已经有一个 `-store` 存储库，该存储库与您要连接的公有存储库建立了外部连接。有关 `-store` 存储库以及与控制台连接的更多信息，请参阅[连接到外部存储库（控制台）](#adding-an-external-connection-console)。

**向 CodeArtifact 存储库添加外部连接 (CLI)**
+ 使用 `associate-external-connection` 来添加外部连接。以下示例将存储库连接到 npm 公有注册表 npmjs.com。有关支持的外部存储库的列表，请参阅[支持的外部连接存储库](#supported-public-repositories)。

  ```
  aws codeartifact associate-external-connection --external-connection public:npmjs \
      --domain my_domain --domain-owner 111122223333 --repository my_repo
  ```

  输出示例：

  ```
  {
      "repository": {
          "name": my_repo
          "administratorAccount": "123456789012",
          "domainName": "my_domain",
          "domainOwner": "111122223333",
          "arn": "arn:aws:codeartifact:us-west-2:111122223333:repository/my_domain/my_repo",
          "description": "A description of my_repo",
          "upstreams": [],
          "externalConnections": [
              {
                  "externalConnectionName": "public:npmjs",
                  "packageFormat": "npm",
                  "status": "AVAILABLE"
              }
          ]
      }
  }
  ```

添加外部连接后，有关通过外部连接从外部存储库请求程序包的信息，请参阅[从外部连接请求程序包](external-connection-requesting-packages.md)。

## 支持的外部连接存储库
<a name="supported-public-repositories"></a>

 CodeArtifact 支持与以下公共存储库的外部连接。要使用 CodeArtifact CLI 指定外部连接，请在运行`associate-external-connection`命令时使用`--external-connection`参数**名称**列中的值。


| 存储库类型 | 说明 | Name | 
| --- | --- | --- | 
| Maven | Clojars 存储库 | public:maven-clojars | 
| Maven | CommonsWare 安卓存储库 | public:maven-commonsware | 
| Maven | Google Android 存储库 | public:maven-googleandroid | 
| Maven | Gradle 插件存储库 | public:maven-gradleplugins | 
| Maven | Maven Central | public:maven-central | 
| npm | npm 公有注册表 | public:npmjs | 
| NuGet | NuGet 画廊 | public:nuget-org | 
| Python | Python 包索引 | public:pypi | 
| Ruby | RubyGems.org | public:ruby-gems-org | 
| Rust | Crates.io | public:crates-io | 

## 移除外部连接 (CLI)
<a name="removing-an-external-connection"></a>

要删除使用中的`associate-external-connection`命令添加的外部连接 AWS CLI，请使用`disassociate-external-connection`。

```
aws codeartifact disassociate-external-connection --external-connection public:npmjs \
    --domain my_domain --domain-owner 111122223333 --repository my_repo
```

输出示例：

```
{
    "repository": {
        "name": my_repo
        "administratorAccount": "123456789012",
        "domainName": "my_domain",
        "domainOwner": "111122223333",
        "arn": "arn:aws:codeartifact:us-west-2:111122223333:repository/my_domain/my_repo",
        "description": "A description of my_repo",
        "upstreams": [],
        "externalConnections": []
    }
}
```