本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
域概述
当你使用时 CodeArtifact,域名可用于以下用途:
-
存储去重:即使在 1 个或 1000 个存储库中提供了某个资产,该资产也只需要在域中存储一次。这意味着您只需支付一次存储费用。
-
快速复制:当您将包从上游 CodeArtifact 存储库拉入下游存储库或使用 CopyPackageVersions API 时,只需要更新元数据记录。不复制任何资产。这样就可以快速设置用于暂存或测试的新存储库。有关更多信息,请参阅 在中使用上游存储库 CodeArtifact。
-
在存储库和团队之间轻松共享:使用单个AWS KMS key(KMS 密钥)对域中的所有资产和元数据进行加密。您不需要为每个存储库管理一个密钥,也不需要为单个密钥授予多个账户的访问权限。
-
在多个存储库中应用策略:域管理员可以在整个域应用策略。这包括限制哪些账户有权访问域中的存储库,以及谁可以配置与公有存储库的连接,以便将公有存储库作为程序包的来源。有关更多信息,请参阅域策略。
-
唯一的存储库名称:域为存储库提供命名空间。存储库名称只需要在域中保持唯一。您应该使用易于理解和有意义的名称。
域名在账户中必须唯一。
创建存储库时不能不指定所属的域。使用 CreateRepositoryAPI 创建存储库时,必须指定域名。不能将存储库从一个域移动到另一个域。
仓库可以归拥有该域的同一个AWS账户所有,也可以由另一个账户拥有。如果拥有域的账户不同,则必须向拥有存储库的账户授予域资源的 CreateRepository 权限。为此,您可以使用PutDomainPermissionsPolicy命令向域中添加资源策略。
尽管一个组织可以有多个域,但建议使用一个生产域来包含所有已发布构件,以便开发团队可以找到和共享整个组织中的程序包。第二个预生产域可用于测试对生产域配置的更改。
Cross-account 域名
域名只需要在一个账户中保持唯一,这意味着一个区域内可能有多个域具有相同名称。因此,如果您要访问由您未通过身份验证的账户所拥有的域,则必须同时在 CLI 和控制台中提供域所有者 ID 和域名。请见以下 CLI 示例。
访问您已通过身份验证的账户所拥有的域:
访问您已通过身份验证的账户内的域时,只需要指定域名即可。以下示例列出了您的账户所拥有的my_domain域中my_repo存储库中的软件包。
aws codeartifact list-packages --domainmy_domain--repositorymy_repo
访问您未通过身份验证的账户所拥有的域:
在访问由您未通过身份验证的账户所拥有的域时,您需要指定域所有者和域名。以下示例列出了other-domain域中other-repo存储库中由您未通过身份验证的账户拥有的软件包。请注意,添加了 --domain-owner 参数。
aws codeartifact list-packages --domainother-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 开发人员指南》中的外部密钥存储。