

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

# 创建域
<a name="domain-create"></a>

您可以使用 CodeArtifact 控制台、 AWS Command Line Interface (AWS CLI) 或创建域 CloudFormation。创建域时，域中不包含任何存储库。有关更多信息，请参阅 [创建 存储库](create-repo.md)。有关使用管理 CodeArtifact 域的更多信息 CloudFormation，请参阅[使用 AWS CloudFormation 创建 CodeArtifact 资源](cloudformation-codeartifact.md)。

**Topics**
+ [创建域（控制台）](#create-domain-console)
+ [创建域 (AWS CLI)](#create-domain-cli)
+ [AWS KMS 密钥策略示例](#create-domain-kms-key-policy-example)

## 创建域（控制台）
<a name="create-domain-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. 使用 AWS KMS key （KMS 密钥）加密您域中的所有资产。您可以使用 AWS 托管的 KMS 密钥或自己管理的 KMS 密钥。有关中支持的 KMS 密钥类型的更多信息 CodeArtifact，请参阅[中支持的 AWS KMS 密钥类型 CodeArtifact](domain-overview.md#domain-overview-supported-kms-keys)。
   + 如果您想使用默认 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.  选择**创建域**。

## 创建域 (AWS CLI)
<a name="create-domain-cli"></a>

要使用创建域 AWS CLI，请使用`create-domain`命令。您必须使用 AWS KMS key （KMS 密钥）来加密您域中的所有资产。您可以使用 AWS 托管 KMS 密钥或您管理的 KMS 密钥。如果您使用 AWS 托管 KMS 密钥，请不要使用`--encryption-key`参数。

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

```
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",
        "encryptionKey": "arn:aws:kms:us-west-2:111122223333:key/your-kms-key",
        "repositoryCount": 0,
        "assetSizeBytes": 0,
        "createdTime": "2020-10-12T16:51:18.039000-04:00"
    }
}
```

 如果您使用自己管理的 KMS 密钥，请在 `--encryption-key` 参数中添加其 Amazon 资源名称 (ARN)。

```
aws codeartifact create-domain --domain my_domain --encryption-key arn:aws:kms:us-west-2:111122223333:key/your-kms-key
```

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

```
{
    "domain": {
        "name": "my_domain",
        "owner": "111122223333",
        "arn": "arn:aws:codeartifact:us-west-2:111122223333:domain/my_domain",
        "status": "Active",
        "encryptionKey": "arn:aws:kms:us-west-2:111122223333:key/your-kms-key",
        "repositoryCount": 0,
        "assetSizeBytes": 0,
        "createdTime": "2020-10-12T16:51:18.039000-04:00"
    }
}
```

### 创建带标签的域
<a name="create-domain-cli-tags"></a>

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

```
aws codeartifact create-domain --domain my_domain --tags key=k1,value=v1 key=k2,value=v2
```

## AWS KMS 密钥策略示例
<a name="create-domain-kms-key-policy-example"></a>

在中创建域时 CodeArtifact，可以使用 KMS 密钥加密域中的所有资产。您可以选择 AWS 托管的 KMS 密钥或您管理的客户托管密钥。有关 KMS 密钥的更多信息，请参阅[《AWS Key Management Service 开发人员指南》](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)。

要使用客户托管密钥，您的 KMS 密钥必须具有授予访问权限的密钥策略 CodeArtifact。密钥策略是密 AWS KMS 钥的资源策略，也是控制 KMS 密钥访问的主要方式。每个 KMS 密钥必须只有一个密钥策略。密钥策略中的语句确定谁有权限使用 KMS 密钥以及如何使用 KMS 密钥。

以下示例密钥策略声明 AWS CodeArtifact 允许代表授权用户创建授权和查看密钥详细信息。本政策声明将权限限制为使用`kms:ViaService`和`kms:CallerAccount`条件键代表指定账户 ID CodeArtifact 行事。它还向 IAM 根用户授予所有 AWS KMS 权限，因此可以在创建密钥后对其进行管理。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "key-consolepolicy-3",
    "Statement": [
        {
            "Sid": "Allow access through AWS CodeArtifact for all principals in the account that are authorized to use CodeArtifact",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "kms:CreateGrant",
                "kms:DescribeKey"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:CallerAccount": "111122223333",
                    "kms:ViaService": "codeartifact.us-west-2.amazonaws.com"
                }
            }
        },
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}
```

------