AWS CodeArtifact 是一项完全托管的软件构件存储库服务,借助它,各种规模的组织都可以轻松安全地存储、发布和分享其软件开发过程中所使用的程序包。CodeArtifact 可与常用的程序包管理器及构建工具[例如 Maven 和 Gradle(Java),npm 和 yarn(JavaScript)或 pip 和 twine(Python)或 NuGet(.NET)]配合使用。
使用 CodeArtifact,没有前期费用,也无需订立合约。您只需为存储的构件、发出的请求数以及从 AWS 区域传输出的数据付费。CodeArtifact 包括按月免费使用的存储和请求套餐。有关定价详细信息,请参阅定价详细信息。
目前,CodeArtifact 已在以下 13 个 AWS 区域推出:
您可以通过使用 AWS 管理控制台、开发工具包或 CLI 创建新的域及存储库来开始使用 CodeArtifact。然后,您可以使用常用的软件包管理器及构建工具,例如 npm 或 yarn CLI (JavaScript)、maven 或 gradle (Java)、pip (Python) 或 NuGet (.NET) 将软件包发布到存储库。您还可以通过 CodeArtifact 存储库使用来自公有存储库(例如 npm 注册表、Maven Central、Python 软件包索引 (PyPI) 或 NuGet.org)的开源软件包,该存储库存储的是以这种方式使用的任何软件包。
域是特定于 CodeArtifact 的结构,该结构允许在多个 AWS 账户中对单个组织拥有的多个 CodeArtifact 存储库进行分组和管理。例如,组织可能会创建一个中央存储库,用于在团队和项目级存储库之间共享软件包,以存储仅由单个团队或应用程序使用的软件包。
CodeArtifact 存储库包含一组软件包版本,每个软件包版本都映射到一组资产。存储库是多语言的,一个存储库可以包含任何受支持类型的软件包。每个存储库都公开了终端节点,可用于使用 npm CLI、Maven CLI (mvn)、pip 和 NuGet 等工具来获取和发布软件包。 有关 AWS CodeArtifact 中的资源限制,请参阅 AWS CodeArtifact 中的配额。
您可以使用控制台向导,或者以编程方式使用 AWS 开发工具包或 CLI 创建存储库。有关更多信息,请参阅 AWS CodeArtifact 文档中的创建存储库。
您可以使用本地语言工具,例如 npm 或 yarn (JavaScript)、maven 或 gradle (Java)、twine (Python) 或 NuGet (.NET),来发布构件。例如,使用 npm 发布新的软件包版本需要两个命令:首先,运行 CodeArtifact CLI “login”命令,然后运行 npm publish 将软件包上传到存储库。作为持续集成(CI)工作流的一部分,AWS CodeBuild 发布新的软件包版本时可以运行相同的命令。单击此处了解更多信息。
您可以使用语言本机工具来获取构件。例如,要安装 npm 软件包 webpack 及其所有依赖项,请运行 CodeArtifact CLI “login”命令,然后运行 npm install webpack。npm 从 CodeArtifact 获取 Webpack,根据 webpack 的 package.json 文件中的信息执行依赖项解析,然后从 CodeArtifact 递归获取所有必需的依赖项。 单击此处了解更多信息。
在 CodeArtifact 控制台上,创建一个具有外部连接的存储库,以从公有存储库(如 npm注册表)中提取软件包。您还可以使用 AssociateExternalConnection API 在 CodeArtifact 存储库和公有存储库之间创建连接。每当接收到软件包请求时,CodeArtifact 都会从外部存储库中提取并缓存所需的软件包(如果这些软件包尚不存在的话)。
首先,安装 AWS CLI 并为具有访问 CodeArtifact 的适当权限的 IAM 用户或角色配置 AWS 凭证。然后,您可以使用 CLI 调用 CodeArtifact GetAuthorizationToken API。该 API 出售身份验证令牌,该令牌可以包含在程序包管理器和构建工具发出的请求中的 HTTP 授权标头中。CLI 提供了登录命令,该命令可调用 GetAuthorizationToken 并自动将程序包管理器配置为将此令牌用于所有请求。这与 Amazon ECR 提供的 get-login 命令类似,因此使用 Docker CLI 与 ECR 进行交互的开发人员会熟悉此模式。
符合。CodeArtifact 存储库支持资源策略以启用跨账户访问。您可以通过控制台或 AWS CLI 添加资源策略。
符合。CodeArtifact 支持程序包级别的写入权限。您可以通过将语句添加到资源库资源策略文档中来配置这些资源,这些语句可将程序包 ARN 指定为资源。CodeArtifact 仅支持存储库级别的读取权限,即给定的 IAM 主体可以读取存储库中的所有程序包,也可以不读取任何程序包。
符合。CodeArtifact 存储的所有软件包均使用 TLS 进行传输中加密,并且使用 AES-256 对称密钥进行静态加密。CodeArtifact 支持 AWS Key Management Service (KMS) 客户管理的 CMK 和 AWS 托管的 CMK。
符合。您可以指定 CodeArtifact 存储库,以在 CodeBuild 项目配置中使用和发布程序包。可用的 CodeBuild 映像包括适用于 CodeArtifact 支持的所有程序包类型的客户端工具。CodeBuild 将构建工具或程序包管理器配置为使用指定的存储库,并使用构建的 IAM 角色在构建开始时获取 CodeArtifact 身份验证令牌。您还可以指定在构建完成后应发布到 CodeArtifact 存储库中的构建构件。当内容更改时,可以使用 CodeArtifact 存储库发出的 CloudWatch Events 触发 CodeBuild 构建。
符合。使用 Amazon EventBridge 时,您可以在 CodeArtifact 存储库中存储的程序包发生更改时(例如,发布新版本的程序包时)触发 CodePipeline 构建。
符合。您可以使用 CloudFormation 来创建域和存储库等的 CodeArtifact 资源。请参阅我们的 CodeArtifact 文档了解详细信息。