域概述 - CodeArtifact

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

域概述

当你使用时 CodeArtifact,域名可用于以下用途:

  • 存储去重:即使在 1 个或 1000 个存储库中提供了某个资产,该资产也只需要在域中存储一次。这意味着您只需支付一次存储费用。

  • 快速复制:当您将包从上游 CodeArtifact 存储库提取到下游存储库或使用时 CopyPackageVersions API,只需要更新元数据记录。不复制任何资产。这样就可以快速设置用于暂存或测试的新存储库。有关更多信息,请参阅 在中使用上游存储库 CodeArtifact

  • 在存储库和团队之间轻松共享:域中的所有资产和元数据都使用单个 AWS KMS key (KMS密钥)进行加密。您不需要为每个存储库管理一个密钥,也不需要为单个密钥授予多个账户的访问权限。

  • 在多个存储库中应用策略:域管理员可以在整个域应用策略。这包括限制哪些账户有权访问域中的存储库,以及谁可以配置与公有存储库的连接,以便将公有存储库作为程序包的来源。有关更多信息,请参阅域策略

  • 唯一的存储库名称:域为存储库提供命名空间。存储库名称只需要在域中保持唯一。您应该使用易于理解和有意义的名称。

域名在账户中必须唯一。

创建存储库时不能不指定所属的域。使用创建存储库时,必须指定域名。CreateRepositoryAPI不能将存储库从一个域移动到另一个域。

仓库可以由拥有该域的同一个 AWS 账户拥有,也可以由另一个账户拥有。如果拥有域的账户不同,则必须向拥有存储库的账户授予域资源的 CreateRepository 权限。为此,您可以使用PutDomainPermissionsPolicy命令向域中添加资源策略。

尽管一个组织可以有多个域,但建议使用一个生产域来包含所有已发布构件,以便开发团队可以找到和共享整个组织中的程序包。第二个预生产域可用于测试对生产域配置的更改。

跨账户域

域名只需要在一个账户中保持唯一,这意味着一个区域内可能有多个域具有相同名称。因此,如果您要访问的域名归您未通过身份验证的账户所有,则必须在和控制台中同时提供域所有者 ID CLI 和域名。请见以下 CLI 示例。

访问您已通过身份验证的账户所拥有的域:

访问您已通过身份验证的账户内的域时,只需要指定域名即可。以下示例列出了中的软件包 my_repo 存储库在 my_domain 您的账户所拥有的域名。

aws codeartifact list-packages --domain my_domain --repository my_repo

访问您未通过身份验证的账户所拥有的域:

在访问由您未通过身份验证的账户所拥有的域时,您需要指定域所有者和域名。以下示例列出了中的软件包 other-repo 存储库在 other-domain 该域名归您未通过身份验证的账户所有。请注意,添加了 --domain-owner 参数。

aws codeartifact list-packages --domain other-domain --domain-owner 111122223333 --repository other-repo

中支持的 AWS KMS 密钥类型 CodeArtifact

CodeArtifact 仅支持对称KMS密钥。您不能使用非对称KMS密钥来加密您的 CodeArtifact 域名。有关更多信息,请参阅识别对称和非对称密钥KMS。要了解如何创建新的客户托管密钥,请参阅AWS Key Management Service 开发人员指南中的创建对称加密KMS密钥

CodeArtifact 支持 AWS KMS 外部密钥存储 (XKS)。您应对XKS密钥的关键操作的可用性、持久性和延迟负责,这可能会影响可用性、持久性和延迟 CodeArtifact。以下是使用XKS按键效果的一些示例 CodeArtifact:

  • 由于所请求包的每项资产及其所有依赖项都会受到解密延迟的影响,因此随着XKS操作延迟的增加,构建延迟可能会大大增加。

  • 由于所有资产都已加密 CodeArtifact,因此丢失XKS密钥材料将导致使用该密XKS钥与该域相关的所有资产丢失。

有关XKS密钥的更多信息,请参阅《AWS Key Management Service 开发人员指南》中的外部密钥存储