一般性问题
何为 AWS CodeArtifact?
AWS CodeArtifact 是一项完全托管的软件构件存储库服务,借助它,各种规模的组织都可以轻松安全地存储、发布和分享其软件开发过程中所使用的程序包。CodeArtifact 可与常用的程序包管理器及构建工具[例如 Maven 和 Gradle(Java),npm 和 yarn(JavaScript)或 pip 和 twine(Python)或 NuGet(.NET)]配合使用。
您可以在 CodeArtifact 中存储哪些包格式?
- npm/Yarn
- pip/twine
- Maven/Gradle
- NuGet
- RubyGems
- SwiftPM
- 通用
- Cargo
CodeArtifact 如何收费?
使用 CodeArtifact,没有前期费用,也无需订立合约。您只需为存储的构件、发出的请求数以及从 AWS 区域传输出的数据付费。CodeArtifact 包括按月免费使用的存储和请求套餐。有关定价详细信息,请参阅定价详细信息。
CodeArtifact 已在哪些 AWS 区域推出?
目前,CodeArtifact 已在以下 13 个 AWS 区域推出:
- 美国东部(弗吉尼亚北部)
- 美国东部(俄亥俄)
- 美国西部(俄勒冈)
- 欧洲(爱尔兰)
- 欧洲(伦敦)
- 欧洲(法兰克福)
- 欧洲(斯德哥尔摩)
- 欧洲(米兰)
- 欧洲(巴黎)
- 亚太地区(悉尼)
- 亚太地区(东京)
- 亚太地区(孟买)
- 亚太地区(新加坡)。
开始使用 CodeArtifact
如何开始使用 CodeArtifact?
您可以通过使用 AWS 管理控制台、开发工具包或 CLI 创建新的域及存储库来开始使用 CodeArtifact。然后,您可以使用常用的软件包管理器及构建工具,例如 npm 或 yarn CLI (JavaScript)、maven 或 gradle (Java)、pip (Python) 或 NuGet (.NET) 将软件包发布到存储库。您还可以通过 CodeArtifact 存储库使用来自公有存储库(例如 npm 注册表、Maven Central、Python 软件包索引 (PyPI) 或 NuGet.org)的开源软件包,该存储库存储的是以这种方式使用的任何软件包。
什么是 CodeArtifact 域?
域是特定于 CodeArtifact 的结构,该结构允许在多个 AWS 账户中对单个组织拥有的多个 CodeArtifact 存储库进行分组和管理。例如,组织可能会创建一个中央存储库,用于在团队和项目级存储库之间共享软件包,以存储仅由单个团队或应用程序使用的软件包。
什么是 CodeArtifact 存储库?
CodeArtifact 存储库包含一组软件包版本,每个软件包版本都映射到一组资产。存储库是多语言的,一个存储库可以包含任何受支持类型的软件包。每个存储库都公开了终端节点,可用于使用 npm CLI、Maven CLI (mvn)、pip 和 NuGet 等工具来获取和发布软件包。 有关 AWS CodeArtifact 中的资源限制,请参阅 AWS CodeArtifact 中的配额。
如何在 CodeArtifact 中创建存储库?
您可以使用控制台向导,或者以编程方式使用 AWS 开发工具包或 CLI 创建存储库。有关更多信息,请参阅 AWS CodeArtifact 文档中的创建存储库。
如何将构件发布到 CodeArtifact?
您可以使用本地语言工具,例如 npm 或 yarn (JavaScript)、maven 或 gradle (Java)、twine (Python) 或 NuGet (.NET),来发布构件。例如,使用 npm 发布新的软件包版本需要两个命令:首先,运行 CodeArtifact CLI “login”命令,然后运行 npm publish 将软件包上传到存储库。作为持续集成(CI)工作流的一部分,AWS CodeBuild 发布新的软件包版本时可以运行相同的命令。单击此处了解更多信息。
如何从 CodeArtifact 检索构件?
您可以使用语言本机工具来获取构件。例如,要安装 npm 软件包 webpack 及其所有依赖项,请运行 CodeArtifact CLI “login”命令,然后运行 npm install webpack。npm 从 CodeArtifact 获取 Webpack,根据 webpack 的 package.json 文件中的信息执行依赖项解析,然后从 CodeArtifact 递归获取所有必需的依赖项。 单击此处了解更多信息。
如何配置 CodeArtifact 存储库以从外部软件包存储库(如 npm 注册表)中提取软件包?
在 CodeArtifact 控制台上,创建一个具有外部连接的存储库,以从公有存储库(如 npm注册表)中提取软件包。您还可以使用 AssociateExternalConnection API 在 CodeArtifact 存储库和公有存储库之间创建连接。每当接收到软件包请求时,CodeArtifact 都会从外部存储库中提取并缓存所需的软件包(如果这些软件包尚不存在的话)。
身份验证和访问控制
如何从 AWS CLI 向 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 是否可以加密我的程序包?
可以。CodeArtifact 存储的所有软件包均使用 TLS 进行传输中加密,并且使用 AES-256 对称密钥进行静态加密。CodeArtifact 支持 AWS Key Management Service (KMS) 客户管理的 CMK 和 AWS 托管的 CMK。
集成
能否将 AWS CodeArtifact 与 AWS CodeBuild 一起使用?
可以。您可以指定 CodeArtifact 存储库,以在 CodeBuild 项目配置中使用和发布程序包。可用的 CodeBuild 映像包括适用于 CodeArtifact 支持的所有程序包类型的客户端工具。CodeBuild 将构建工具或程序包管理器配置为使用指定的存储库,并使用构建的 IAM 角色在构建开始时获取 CodeArtifact 身份验证令牌。您还可以指定在构建完成后应发布到 CodeArtifact 存储库中的构建构件。当内容更改时,可以使用 CodeArtifact 存储库发出的 CloudWatch Events 触发 CodeBuild 构建。
能否将 AWS CodeArtifact 与 AWS CodePipeline 一起使用?
可以。使用 Amazon EventBridge 时,您可以在 CodeArtifact 存储库中存储的程序包发生更改时(例如,发布新版本的程序包时)触发 CodePipeline 构建。
问:能否使用 AWS CloudFormation 来创建 AWS CodeArtifact 资源?
答:可以。您可以使用 CloudFormation 来创建域和存储库等的 CodeArtifact 资源。请参阅我们的 CodeArtifact 文档了解详细信息。