地址: 宣城市走劫村308号 邮箱: forested@126.com 工作时间:上午9点-下午8点

公司新闻

  • 首页
  • Our News
  • 将您的 Ruby Gems 添加到 AWS CodeArtifact 新闻博客

将您的 Ruby Gems 添加到 AWS CodeArtifact 新闻博客

2026-01-27 14:07:16

在 AWS CodeArtifact 中新增 Ruby Gems

关键要点

Ruby 开发者现在可以使用 AWS CodeArtifact 来安全地存储和检索其 gems。CodeArtifact 支持通过常用工具如 gem 和 bundler 进行 Ruby gem 的发布和下载。组织需确保依赖包的许可证兼容性,从而避免法律和安全问题。CodeArtifact 允许安全地向内部开发团队分发包,无需管理底层基础设施。

Ruby 开发者如今可以利用 AWS CodeArtifact 来安全地存储和提取他们的 gem。CodeArtifact 能与标准开发工具如 gem 和 bundler 集成。

应用程序通常会使用大量的软件包来加速开发,通过提供可重用的代码来处理常见任务,比如网络访问、加密或数据处理。开发者也会嵌入 SDK例如 AWS SDKs 来访问远程服务。这些软件包可能来自组织内部,也可能来自开源项目等第三方。管理包和依赖对软件开发至关重要。其他语言如 Java、C#、JavaScript、Swift 和 Python 都有相应的工具来下载和解析依赖,而 Ruby 开发者通常使用 gem 和 bundler。

然而,使用第三方软件包会带来法律和安全挑战。组织必须确保软件包的许可证与其项目兼容,并且不违反知识产权。他们还必须验证包含的代码是否安全,是否引入了漏洞,这种策略被称为供应链攻击。为了解决这些挑战,组织通常会使用私有包服务器。开发者只能使用经过安全和法律团队审核的包,且这些包只能通过私有仓库获得。

CodeArtifact 是一种托管服务,允许安全地向内部开发团队分发软件包,无需管理基础设施。除了支持 npm、PyPI、Maven、NuGet、SwiftPM 和通用格式外,CodeArtifact 现在还支持 Ruby gems。

您可以从 AWS Cloud 的 CodeArtifact 仓库发布和下载 Ruby gem 依赖,并使用现有的工具如 gem 和 bundler。在将包存储在 CodeArtifact 后,您可以在 Gemfile 中引用这些包。在构建过程中,您的构建系统将从 CodeArtifact 仓库下载已批准的包。

如何开始

假设我正在开发一个要与我组织内其他开发团队共享的包。

在这个演示中,我将展示如何准备环境,将包上传到仓库,并使用此特定包的构建作为项目的依赖。我将专注于 Ruby 包的特定步骤。您可以阅读我同事 Steven 撰写的 教程 来了解如何使用 CodeArtifact。

我使用的 AWS 账户已配置好一个软件包 仓库MyGemsRepo和 域stormacqtest。

为了让 Ruby 工具访问我的 CodeArtifact 仓库,我先从 CodeArtifact 收集一个身份验证令牌。

bashexport CODEARTIFACTAUTHTOKEN=aws codeartifact getauthorizationtoken domain stormacqtest domainowner 012345678912 query authorizationToken output text

export GEMHOSTAPIKEY=Bearer CODEARTIFACTAUTHTOKEN

请注意,身份验证令牌会在 12 小时后过期。12 小时后,我必须重复该命令以获得新的令牌。

将您的 Ruby Gems 添加到 AWS CodeArtifact 新闻博客

接着,我请求仓库端点。我传递 domain 名称和 domain owner即 AWS 账户 ID。注意 format ruby 选项。

bashexport RUBYGEMSHOST=aws codeartifact getrepositoryendpoint domain stormacqtest domainowner 012345678912 format ruby repository MyGemsRepo query repositoryEndpoint output text sed s/

现在我得到了仓库端点和身份验证令牌,gem 将使用这些环境变量的值来连接到我的私有包仓库。

我创建了一个非常简单的项目,进行构建,并将其发送到包仓库。

bash gem build holagemspec

Successfully built RubyGem Name holacodeartifact Version 000 File holacodeartifact000gem

gem push holacodeartifact000gem Pushing gem to https//stormacqtest486652066693dcodeartifactuswest2amazonawscom/ruby/MyGemsRepo

我在控制台中验证该包是否可用。

现在该包可用,我可以像往常一样在项目中使用它。这涉及到配置本地的 /gemrc 文件。我按照控制台提供的说明进行操作,并确保将 {CODEARTIFACTAUTHTOKEN} 替换为其实际值。

一旦 /gemrc 文件配置正确,我就可以像往常一样安装 gems。他们将从我的私有 gem 仓库中下载。

bash gem install holacodeartifact

Fetching holacodeartifact000gemSuccessfully installed holacodeartifact000Parsing documentation for holacodeartifact000Installing ri documentation for holacodeartifact000Done installing documentation for holacodeartifact after 0 seconds1 gem installed

从上游安装

我也可以将我的仓库与上游源关联。在请求 gems 时,它将自动从上游获取。

要将仓库与 rubygemsorg 关联,我可以通过控制台操作,或通过下面的命令:

一元梯子

bashaws codeartifact associateexternalconnection domain stormacqtest repository MyGemsRepo externalconnection publicrubygemsorg

json{ repository { name MyGemsRepo administratorAccount 012345678912 domainName stormacqtest domainOwner 012345678912 arn arnawscodeartifactuswest2012345678912repository/stormacqtest/MyGemsRepo upstreams [] externalConnections [ { externalConnectionName publicrubygemsorg packageFormat ruby status AVAILABLE } ] createdTime 20240412T1258441010000200 }}

关联后,我可以通过 CodeArtifact 拉取任何 gems。当本地未找到时,它将自动从上游获取软件包。

bash gem install rake

Fetching rake1321gemSuccessfully installed rake1321Parsing documentation for rake1321Installing ri documentation for rake1321Done installing documentation for rake after 0 seconds1 gem installed

我在控制台中检查,确认 rake 包现在在我的仓库中。

需要注意的事项

在上传您的第一个 Ruby 包之前,请注意以下几点:

请确保在尝试运行上述指令中的任何命令之前 更新到最新版本的 AWS CLI。只有最新版本的 CLI 知道 CodeArtifact 中的 Ruby 仓库。身份验证令牌在 12 小时内过期。我们建议编写脚本来自动更新令牌,或者使用 计划的 AWS Lambda 函数,并安全地将令牌存储在 AWS Secrets Manager 中例如。

定价与可用性

CodeArtifact 对 Ruby 包的收费与其他已支持的包格式相同。CodeArtifact 的计费依赖于三个指标:存储按月以 GB 计,请求数量以及传输到互联网或其他 AWS 区域的数据量。向同一区域内的 AWS 服务传输数据不收取费用,这意味着您可以在 Amazon Elastic Compute Cloud (Amazon EC2) 或 AWS CodeBuild 等上执行持续集成和交付CI/CD工作,而无需为 CodeArtifact 的数据传输支付额外费用。具体细节请参考 定价页面。

CodeArtifact 现已在 所有 13 个可用区域提供 Ruby 包支持。

现在,快去构建您的 Ruby 应用程序并将您的私有包上传到 CodeArtifact 吧!

seb

Sbastien Stormacq

Seb 自 80 年代中期第一次接触 Commodore 64 起便开始写代码。他鼓励建设者解锁 AWS 云的价值,运用他对激情、热情、客户保护、好奇心和创造力的秘密结合。他的兴趣包括软件架构、开发工具和移动计算。如果您想推销什么给他,请确保它具有 API。关注他的 Twitter @sebsto。

订阅我们的时事通讯并获取最新消息