

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

# 创建 存储库
<a name="create-repo"></a>

由于中的所有软件包 CodeArtifact 都存储在存储[库](codeartifact-concepts.md#welcome-concepts-repository)中，因此要使用 CodeArtifact，必须创建一个。您可以使用 CodeArtifact 控制台、 AWS Command Line Interface (AWS CLI) 或创建存储库 CloudFormation。每个存储库都与您在创建存储库时使用的 AWS 账户相关联。您可以有多个存储库，按[域](codeartifact-concepts.md#welcome-concepts-domain)来创建存储库并进行分组。创建存储库时，存储库中不包含任何程序包。存储库是多语言的，这意味着单个存储库可以包含任何受支持类型的程序包。

有关 CodeArtifact 服务限制的信息，例如单个域中允许的最大存储库数量，请参阅[中的配额 AWS CodeArtifact](service-limits.md)。如果达到了允许的最大存储库数量，则可以[删除存储库](delete-repo.md)来腾出空间，用于容纳更多存储库。

一个存储库可以有一个或多个与之关联的 CodeArtifact 仓库作为上游存储库。这样，程序包管理器客户端就可以使用单个 URL 端点访问多个存储库中包含的程序包。有关更多信息，请参阅 [在中使用上游存储库 CodeArtifact](repos-upstream.md)。

有关使用管理 CodeArtifact 仓库的更多信息 CloudFormation，请参阅[使用 AWS CloudFormation 创建 CodeArtifact 资源](cloudformation-codeartifact.md)。

**注意**  
创建存储库后，便无法更改其名称、关联的 AWS 账户或域。

**Topics**
+ [创建存储库（控制台）](#create-repo-console)
+ [创建存储库 (AWS CLI)](#create-repo-cli)
+ [创建具有上游存储库的存储库](#creating-a-repository-with-an-upstream)

## 创建存储库（控制台）
<a name="create-repo-console"></a>

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

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

1.  在**存储库名称**中，输入存储库的名称。

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

1.  （可选）在**发布上游存储库**中，添加可用于将您的存储库与程序包发布机构（例如 Maven Central 或 npmjs.com）连接起来的中间存储库。

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

1.  在 **AWS 账户**中，如果您登录的是拥有该域的账户，请选择**此 AWS 账户**。如果另一个 AWS 账户拥有该域，请选择**不同 AWS 账户**。

1.  在**域**中，选择要在其中创建存储库的域。

    如果账户中没有域，则必须创建一个域。在**域名**中，输入新域的名称。

    展开**其他配置**。

    您必须使用 AWS KMS key （KMS 密钥）来加密您域中的所有资产。您可以使用自己管理的 AWS 托管式密钥 或 KMS 密钥：
**重要**  
CodeArtifact 仅支持[对称 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks)。您不能使用[非对称 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html#asymmetric-cmks)来加密您的 CodeArtifact 域名。要获取确定 KMS 密钥是对称还是非对称的帮助，请参阅[识别对称密钥和非对称密钥](https://docs.aws.amazon.com/kms/latest/developerguide/find-symm-asymm.html)。
   +  如果您想使用默认 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 正在为您创建的内容。
   +  **程序包流**显示您的域和存储库如何连接。
   +  **步骤 1: 创建存储库**显示有关存储库以及将要创建的可选上游存储库的详细信息。
   +  **步骤 2: 选择域**显示有关 `my_domain` 的详细信息。

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

## 创建存储库 (AWS CLI)
<a name="create-repo-cli"></a>

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

```
aws codeartifact create-repository --domain {{my_domain}} --domain-owner {{111122223333}} --repository {{my_repo}} --description "{{My new repository}}"
```

输出示例：

```
{
    "repository": {
        "name": "{{my_repo}}",
        "administratorAccount": "{{123456789012}}",
        "domainName": "{{my_domain}}",
        "domainOwner": "{{111122223333}}",
        "arn": "arn:aws:codeartifact:{{region-id}}:{{111122223333}}:repository/{{my_domain}}/{{my_repo}}",
        "description": "{{My new repository}}",
        "upstreams": "[]",
        "externalConnections"" "[]"
    }
}
```

新的存储库不包含任何程序包。每个存储库都与您在创建存储库时经过身份验证的 AWS 账户相关联。

### 创建带标签的存储库
<a name="create-repo-cli-tags"></a>

要创建带标签的存储库，请在 `create-domain` 命令中添加 `--tags` 参数。

```
aws codeartifact create-repository --domain {{my_domain}} --domain-owner {{111122223333}} --repository {{my_repo}} --tags {{key=k1,value=v1 key=k2,value=v2}}
```

## 创建具有上游存储库的存储库
<a name="creating-a-repository-with-an-upstream"></a>

在创建存储库时，可以指定一个或多个上游存储库。

```
aws codeartifact create-repository --domain {{my_domain}} --domain-owner {{111122223333}} --repository {{my_repo}} \
  --upstreams repositoryName={{my-upstream-repo}} --repository-description {{"My new repository"}}
```

输出示例：

```
{
    "repository": {
        "name": "{{my_repo}}",
        "administratorAccount": "{{123456789012}}",
        "domainName": "{{my_domain}}",
        "domainOwner": "{{111122223333}}",
        "arn": "arn:aws:codeartifact:{{region-id}}:{{111122223333}}:repository/{{my_domain}}/{{my_repo}}",
        "description": "{{My new repository}}",
        "upstreams": [
            {
                "repositoryName": "{{my-upstream-repo}}"
            }
        ],
        "externalConnections"" "[]"
    }
}
```

**注意**  
要创建带有上游存储库的存储库，您必须拥有对上游存储库执行 `AssociateWithDownstreamRepository` 操作的权限。

要在创建后向存储库中添加上游存储库，请参阅[添加或删除上游存储库（控制台）](repo-upstream-add.md#repo-upstream-add-console)和[添加或删除上游存储库 (AWS CLI)](repo-upstream-add.md#repo-upstream-add-cli)。