本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS CodeArtifact 概念
以下是您在使用时需要了解的一些概念和术语 CodeArtifact。
资产
资产是存储在中与软件包版本关联 CodeArtifact 的单个文件,例如 npm .tgz
文件或 Maven POM 和 JAR 文件。
域
存储库聚合到一个名为域 的更高级别实体中。所有程序包资产和元数据都存储在域中,但通过存储库来使用资产和元数据。给定的程序包资产(例如 Maven JAR 文件)在每个域中存储一次,而不管域中有多少个存储库。域中的所有资产和元数据都使用存储在 () 中的相同 AWS KMS key (KMS 密钥)进行加密。 AWS Key Management Service AWS KMS
每个存储库都是单个域的成员,不能移动到另一个域。
借助域,您可以将组织策略应用于多个存储库。通过这种方法,您可以确定哪些账户可以访问域中的存储库,以及哪些公有存储库可以用作程序包的来源。
尽管一个组织可以有多个域,但我们建议使用一个包含所有已发布构件的生产域。这样,团队就可以找到和共享整个组织中的程序包。
存储库
CodeArtifact 存储库包含一组软件包版本,每个版本都映射到一组资源。存储库是多种语言的,单个存储库可以包含任何受支持类型的程序包。每个存储库都公开端点,用于使用 nuget CLI、npm CLI、Maven CLI (mvn) 和 pip 等工具来提取和发布程序包。您最多可以为每个域创建 1000 个存储库。
软件包
程序包 是解析依赖关系和安装软件所需的软件和元数据的捆绑包。在中 CodeArtifact,软件包由软件包名称、可选命名空间(如@types
在)@types/node
、一组软件包版本以及包级元数据(例如 npm 标签)组成。
AWS CodeArtifact 支持 C argo、g enerial、Maven、npm、、NuGetp yPI、Ruby、Sw ift 包格式。
Package 组
Pac@@ kage groups 可用于使用包格式、包命名空间和软件包名称将配置应用于与已定义模式相匹配的多个包。您可以使用包组更方便地为多个软件包配置包源控制。Package Origin 控制用于阻止或允许摄取或发布新的软件包版本,从而保护用户免受称为依赖关系替换攻击的恶意行为的侵害。
程序包命名空间
某些程序包格式支持分层程序包名称,用于将程序包组织成逻辑组,有助于避免名称冲突。例如,npm 支持作用域。有关更多信息,请参阅 npm 作用域文档@types/node
的作用域为 @types
,名称为 node
。@types
作用域中还有许多其他的程序包名称。在中 CodeArtifact,作用域(“类型”)被称为包命名空间,名称(“节点”)被称为包名称。对于 Maven 程序包,程序包命名空间与 Maven GroupId 相对应。Maven 程序包 org.apache.logging.log4j:log4j
的 groupID(程序包命名空间)为 org.apache.logging.log4j
,artifactID(程序包名称)为 log4j
。对于通用程序包,需要命名空间。某些程序包格式(例如 pyPI)不支持其概念类似于 npm 作用域或 Maven groupID 的分层名称。如果无法对程序包名称进行分组,则可能更难避免名称冲突。
程序包版本
程序包版本 标识程序包的特定版本,例如 @types/node 12.6.9
。版本号格式和语义因不同的程序包格式而异。例如,npm 程序包版本必须符合语义版本控制规范
程序包版本修订
程序包版本修订 是一个字符串,用于标识程序包版本的一组特定资产和元数据。每次更新程序包版本时,都会创建一个新的程序包版本修订。例如,您可以发布 Python 程序包版本的源分配存档 (sdist),然后将包含已编译代码的 Python wheel 添加到同一个版本中。当您发布 wheel 时,会创建一个新的程序包版本修订。
上游存储库
当可以从下游存储库的存储库端点访问其中的程序包版本时,则一个存储库位于另一个存储库的上游。从客户的角度来看,这种方法有效地合并了两个存储库的内容。使用 CodeArtifact,可以在两个存储库之间创建上游关系。