

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

# 开始使用 CodeArtifact
<a name="getting-started"></a>

 在本入门教程中，您将使用 CodeArtifact 来创建以下项：
+  一个名为 `my-domain` 的域。
+  包含在 `my-domain` 中的名为 `my-repo` 的存储库。
+  包含在 `my-domain` 中的名为 `npm-store` 的存储库。`npm-store` 与 npm 公有存储库建立了外部连接。此连接用于将 npm 程序包摄取到 `my-repo` 存储库中。

 在开始本教程之前，我们建议您查看 CodeArtifact [AWS CodeArtifact 概念](codeartifact-concepts.md)。

**注意**  
 本教程要求您创建的资源可能会导致您的 AWS 账户产生相关费用。有关更多信息，请参阅 [CodeArtifact 定价](https://aws.amazon.com/codeartifact/pricing/)。

**Topics**
+ [先决条件](#getting-started-prerequisites)
+ [通过控制台开始使用](getting-started-console.md)
+ [开始使用 AWS CLI](getting-started-cli.md)

## 先决条件
<a name="getting-started-prerequisites"></a>

您可以使用 AWS 管理控制台 或 AWS Command Line Interface (AWS CLI) 完成此教程。要按照教程操作，您必须先满足以下先决条件：
+  完成[使用进行设置 AWS CodeArtifact](get-set-up-for-codeartifact.md)中的步骤。
+  安装 npm CLI。有关更多信息，请参阅 npm 文档中的[下载和安装 Node.js 和 npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)。

# 通过控制台开始使用
<a name="getting-started-console"></a>

 使用 AWS 管理控制台，按照以下步骤来开始使用 CodeArtifact。本指南使用 `npm` 程序包管理器，如果您使用的是不同的程序包管理器，则需要修改以下某些步骤。

1. 通过以下网址登录 AWS 管理控制台 并打开 AWS CodeArtifact 控制台：[https://console.aws.amazon.com/codesuite/codeartifact/start](https://console.aws.amazon.com/codesuite/codeartifact/start)。有关更多信息，请参阅 [使用进行设置 AWS CodeArtifact](get-set-up-for-codeartifact.md)。

1.  选择**创建存储库**。

1.  在**存储库名称**中，输入 **my-repo**。

1.  （可选）在**存储库描述**中，输入存储库的可选描述。

1. 在**公有上游存储库**中，选择 **npm-store** 来创建一个连接到 **npmjs** 的存储库，该存储库是 `my-repo` 存储库的上游存储库。

   CodeArtifact 会为这个存储库分配名称 `npm-store`。上游存储库 `npm-store` 中提供的所有可用程序包也可用于其下游存储库 `my-repo`。

1.  选择**下一步**。

1.  在 **AWS 账户**中，选择**此 AWS 账户**。

1.  在**域名**中，输入 **my-domain**。

1.  展开**其他配置**。

1.  您必须使用 AWS KMS key（KMS 密钥）来加密域中的所有资产。您可以使用 AWS 托管式密钥 或自己管理的 KMS 密钥：
   +  如果您想使用默认 AWS 托管式密钥，请选择 **AWS 托管式密钥**。
   +  如果您想使用自己管理的 KMS 密钥，请选择**客户管理的密钥**。要使用自己管理的 KMS 密钥，请在**客户管理的密钥 ARN** 中搜索并选择 KMS 密钥。

    有关更多信息，请参阅**《AWS Key Management Service 开发人员指南》中的 [AWS 托管式密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) 和[客户管理的密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

1.  选择**下一步**。

1.  在**查看并创建**中，查看 CodeArtifact 正在为您创建的内容。
   +  **程序包流**显示了 `my-domain`、`my-repo` 和 `npm-store` 之间如何相互关联。
   +  **步骤 1：创建存储库**显示了有关 `my-repo` 和 `npm-store` 的详细信息。
   +  **步骤 2: 选择域**显示有关 `my-domain` 的详细信息。

    当您准备好后，选择**创建存储库**。

1.  在 **my-repo** 页面上，选择**查看连接说明**，然后选择 **npm**。

1.  使用 AWS CLI 来运行**使用此 AWS CLI CodeArtifact 命令配置 npm 客户端**下所示的 `login` 命令。

   ```
   aws codeartifact login --tool npm --repository my-repo --domain my-domain --domain-owner 111122223333
   ```

   您应该会收到确认登录成功的输出。

   ```
   Successfully configured npm to use AWS CodeArtifact repository https://my-domain-111122223333.d.codeartifact.us-east-2.amazonaws.com/npm/my-repo/
   Login expires in 12 hours at 2020-10-08 02:45:33-04:00
   ```

   如果您收到错误消息 `Could not connect to the endpoint URL`，请确保 AWS CLI 已配置完毕且您的**默认区域名称**设置为在创建存储库时使用的相同区域，请参阅[配置 AWS 命令行界面](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

   有关更多信息，请参阅 [配置并使用 npm CodeArtifact](npm-auth.md)。

1.  使用 npm CLI 来安装 npm 程序包。例如，要安装常见的 npm 程序包 `lodash`，请使用以下命令。

   ```
   npm install lodash
   ```

1.  返回 CodeArtifact 控制台。如果您的 **my-repo** 存储库已打开，请刷新页面。否则，在导航窗格中，选择**存储库**，然后选择 **my-repo**。

    在**程序包**下面，您应该会看到您安装的 npm 库或程序包。您可以选择程序包的名称来查看其版本和状态。您可以选择其最新版本来查看程序包的详细信息，例如依赖项、资产等。
**注意**  
 从安装程序包到将其提取到存储库之间可能会有一段延迟。

1.  为避免产生进一步的 AWS 费用，请删除您在本教程中使用的资源：
**注意**  
您无法删除包含存储库的域，因此必须先删除 `my-repo` 和 `npm-store`，然后才能删除 `my-domain`。

   1.  在导航窗格中，选择**存储库**。

   1.  选择 **npm-store**，选择**删除**，然后按照步骤来删除存储库。

   1.  选择 **my-repo**，选择**删除**，然后按照步骤来删除存储库。

   1.  在导航窗格中，选择**域**。

   1.  选择 **my-domain**，选择**删除**，然后按照步骤删除域。

# 开始使用 AWS CLI
<a name="getting-started-cli"></a>

 使用 AWS Command Line Interface (AWS CLI)，按照以下步骤来开始使用 CodeArtifact。有关更多信息，请参阅 [安装或升级，然后配置 AWS CLI](get-set-up-install-cli.md)。本指南使用 `npm` 程序包管理器，如果您使用的是不同的程序包管理器，则需要修改以下某些步骤。

1.  使用 AWS CLI 运行 **create-domain** 命令。

   ```
   aws codeartifact create-domain --domain my-domain
   ```

    输出中会显示 JSON 格式的数据，并包含有关新域的详细信息。

   ```
   {
       "domain": {
           "name": "my-domain",
           "owner": "111122223333",
           "arn": "arn:aws:codeartifact:us-west-2:111122223333:domain/my-domain",
           "status": "Active",
           "createdTime": "2020-10-07T15:36:35.194000-04:00",
           "encryptionKey": "arn:aws:kms:us-west-2:111122223333:key/your-kms-key",
           "repositoryCount": 0,
           "assetSizeBytes": 0
       }
   }
   ```

   如果您收到错误消息 `Could not connect to the endpoint URL`，请确保 AWS CLI 已配置完毕且您的**默认区域名称**设置为在创建存储库时使用的相同区域，请参阅[配置 AWS 命令行界面](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

1.  使用 **create-repository** 命令在您的域中创建存储库。

   ```
   aws codeartifact create-repository --domain my-domain --domain-owner 111122223333 --repository my-repo
   ```

    输出中会显示 JSON 格式的数据，并包含有关新存储库的详细信息。

   ```
   {
       "repository": {
           "name": "my-repo",
           "administratorAccount": "111122223333",
           "domainName": "my-domain",
           "domainOwner": "111122223333",
           "arn": "arn:aws:codeartifact:us-west-2:111122223333:repository/my-domain/my-repo",
           "upstreams": [],
           "externalConnections": []
       }
   }
   ```

1. 使用 **create-repository** 命令为您的 `my-repo` 存储库创建上游存储库。

   ```
   aws codeartifact create-repository --domain my-domain --domain-owner 111122223333 --repository npm-store
   ```

    输出中会显示 JSON 格式的数据，并包含有关新存储库的详细信息。

   ```
   {
       "repository": {
           "name": "npm-store",
           "administratorAccount": "111122223333",
           "domainName": "my-domain",
           "domainOwner": "111122223333",
           "arn": "arn:aws:codeartifact:us-west-2:111122223333:repository/my-domain/npm-store",
           "upstreams": [],
           "externalConnections": []
       }
   }
   ```

1.  使用 **associate-external-connection** 命令将 npm 公有存储库的外部连接添加到您的 `npm-store` 存储库中。

   ```
   aws codeartifact associate-external-connection --domain my-domain --domain-owner 111122223333 --repository npm-store --external-connection "public:npmjs"
   ```

    输出中会显示 JSON 格式的数据，并包含有关存储库及其新外部连接的详细信息。

   ```
   {
       "repository": {
           "name": "npm-store",
           "administratorAccount": "111122223333",
           "domainName": "my-domain",
           "domainOwner": "111122223333",
           "arn": "arn:aws:codeartifact:us-west-2:111122223333:repository/my-domain/npm-store",
           "upstreams": [],
           "externalConnections": [
               {
                   "externalConnectionName": "public:npmjs",
                   "packageFormat": "npm",
                   "status": "AVAILABLE"
               }
           ]
       }
   }
   ```

    有关更多信息，请参阅 [将 CodeArtifact 仓库连接到公共仓库](external-connection.md)。

1.  使用 **update-repository** 命令将 `npm-store` 存储库作为上游存储库关联到 `my-repo` 存储库。

   ```
   aws codeartifact update-repository --repository my-repo --domain my-domain --domain-owner 111122223333 --upstreams repositoryName=npm-store
   ```

    输出中会显示 JSON 格式的数据，并包含有关已更新的存储库（包括其新的上游存储库）的详细信息。

   ```
   {
       "repository": {
           "name": "my-repo",
           "administratorAccount": "111122223333",
           "domainName": "my-domain",
           "domainOwner": "111122223333",
           "arn": "arn:aws:codeartifact:us-west-2:111122223333:repository/my-domain/my-repo",
           "upstreams": [
               {
                   "repositoryName": "npm-store"
               }
           ],
           "externalConnections": []
       }
   }
   ```

    有关更多信息，请参阅 [添加或删除上游存储库 (AWS CLI)](repo-upstream-add.md#repo-upstream-add-cli)。

1. 使用 **login** 命令对 `my-repo` 存储库配置 npm 程序包管理器。

   ```
   aws codeartifact login --tool npm --repository my-repo --domain my-domain --domain-owner 111122223333
   ```

   您应该会收到确认登录成功的输出。

   ```
   Successfully configured npm to use AWS CodeArtifact repository https://my-domain-111122223333.d.codeartifact.us-east-2.amazonaws.com/npm/my-repo/
   Login expires in 12 hours at 2020-10-08 02:45:33-04:00
   ```

    有关更多信息，请参阅 [配置并使用 npm CodeArtifact](npm-auth.md)。

1.  使用 npm CLI 来安装 npm 程序包。例如，要安装常见的 npm 程序包 `lodash`，请使用以下命令。

   ```
   npm install lodash
   ```

1.  使用 **list-packages** 命令来查看您刚刚在 `my-repo` 存储库中安装的程序包。
**注意**  
从 `npm install` 安装命令完成到存储库中显示程序包之间可能会有一段延迟。有关从公有存储库提取程序包时的典型延迟的详细信息，请参阅[外部连接延迟](external-connection-requesting-packages.md#external-connection-latency)。

   ```
   aws codeartifact list-packages --domain my-domain --repository my-repo
   ```

    输出中会显示 JSON 格式的数据，包括您安装的程序包的格式和名称。

   ```
   {
       "packages": [
           {
               "format": "npm",
               "package": "lodash"
           }
       ]
   }
   ```

   您现在有三个 CodeArtifact 资源：
   +  域 `my-domain`。
   +  `my-domain` 中包含的存储库 `my-repo`。这个存储库有一个 npm 程序包。
   +  `my-domain` 中包含的存储库 `npm-store`。这个存储库与公有 npm 存储库建立了外部连接，并作为上游存储库与 `my-repo` 存储库相关联。

1. 为避免产生进一步的 AWS 费用，请删除您在本教程中使用的资源：
**注意**  
 您无法删除包含存储库的域，因此必须先删除 `my-repo` 和 `npm-store`，然后才能删除 `my-domain`。

   1.  使用 **delete-repository** 命令来删除 `npm-store` 存储库。

      ```
      aws codeartifact delete-repository --domain my-domain --domain-owner 111122223333 --repository my-repo
      ```

       输出中会显示 JSON 格式的数据，并包含有关已删除存储库的详细信息。

      ```
      {
          "repository": {
              "name": "my-repo",
              "administratorAccount": "111122223333",
              "domainName": "my-domain",
              "domainOwner": "111122223333",
              "arn": "arn:aws:codeartifact:us-west-2:111122223333:repository/my-domain/my-repo",
              "upstreams": [
                  {
                      "repositoryName": "npm-store"
                  }
              ],
              "externalConnections": []
          }
      }
      ```

   1.  使用 **delete-repository** 命令来删除 `npm-store` 存储库。

      ```
      aws codeartifact delete-repository --domain my-domain --domain-owner 111122223333 --repository npm-store
      ```

       输出中会显示 JSON 格式的数据，并包含有关已删除存储库的详细信息。

      ```
      {
          "repository": {
              "name": "npm-store",
              "administratorAccount": "111122223333",
              "domainName": "my-domain",
              "domainOwner": "111122223333",
              "arn": "arn:aws:codeartifact:us-west-2:111122223333:repository/my-domain/npm-store",
              "upstreams": [],
              "externalConnections": [
                  {
                      "externalConnectionName": "public:npmjs",
                      "packageFormat": "npm",
                      "status": "AVAILABLE"
                  }
              ]
          }
      }
      ```

   1. 使用 **delete-domain** 命令来删除 `my-domain` 存储库。

      ```
      aws codeartifact delete-domain --domain my-domain --domain-owner 111122223333
      ```

       输出中会显示 JSON 格式的数据，并包含有关已删除域的详细信息。

      ```
      {
          "domain": {
              "name": "my-domain",
              "owner": "111122223333",
              "arn": "arn:aws:codeartifact:us-west-2:111122223333:domain/my-domain",
              "status": "Deleted",
              "createdTime": "2020-10-07T15:36:35.194000-04:00",
              "encryptionKey": "arn:aws:kms:us-west-2:111122223333:key/your-kms-key",
              "repositoryCount": 0,
              "assetSizeBytes": 0
          }
      }
      ```