

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將 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`儲存庫會新增為儲存庫的上游。

下列清單包含 CodeArtifact 中的每個`-store`儲存庫及其連線的個別外部儲存庫。

1. `cargo-store` 已連線至 https：//crates.io。

1. `clojars-store` 已連線至 Clojars 儲存庫。

1. `commonsware-store` 已連線至 CommonsWare Android 儲存庫。

1. `google-android-store` 已連線至 Google Android。

1. `gradle-plugins-store` 已連線至 Gradle 外掛程式。

1. `maven-central-store` 已連線至 Maven Central Repository。

1. `npm-store` 已連線至 https：//npmjs.com。

1. `nuget-store` 已連線至 https：//nuget.org。

1. `pypi-store` 已連線至 Python Packaging Authority。

1. `rubygems-store` 已連線至 RubyGems.org.

**連線至外部儲存庫 （主控台）**

1. 開啟位於 https：//[https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home) 的 AWS CodeArtifact 主控台。

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 公有登錄檔，https：//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` 參數**名稱**欄中的值。


| 儲存庫類型 | Description | Name | 
| --- | --- | --- | 
| Maven | Clojars 儲存庫 | public:maven-clojars | 
| Maven | CommonsWare Android 儲存庫 | 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": []
    }
}
```