本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
域概述
当你使用时 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
--repositorymy_repo
访问您未通过身份验证的账户所拥有的域:
在访问由您未通过身份验证的账户所拥有的域时,您需要指定域所有者和域名。以下示例列出了中的软件包 other-repo
存储库在 other-domain
该域名归您未通过身份验证的账户所有。请注意,添加了 --domain-owner
参数。
aws codeartifact list-packages --domain
other-domain
--domain-owner111122223333
--repositoryother-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 开发人员指南》中的外部密钥存储。