使用 Ruby 构建 Lambda 函数 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Ruby 构建 Lambda 函数

您可以在 Amazon Lambda 中运行 Ruby 代码。Lambda 可为 Ruby 提供运行时,用于运行代码来处理事件。您的代码在包含 Amazon SDK for Ruby 的环境中运行,其中包含来自您管理的 Amazon Identity and Access Management (IAM) 角色的凭证。要了解有关 Ruby 运行时随附的 SDK 版本的更多信息,请参阅 包含运行时的 SDK 版本

Lambda 支持以下 Ruby 运行时:

Ruby
名称 标识符 操作系统 弃用日期 阻止函数创建 阻止函数更新

Ruby 3.2

ruby3.2

Amazon Linux 2

创建 Ruby 函数
  1. 打开 Lambda 控制台

  2. 选择 Create function(创建函数)。

  3. 配置以下设置:

    • 函数名称:输入函数名称。

    • 运行时系统:选择 Ruby 3.2

  4. 选择 Create function(创建函数)。

  5. 要配置测试事件,请选择测试

  6. 对于事件名称,输入 test

  7. 选择 Save changes(保存更改)。

  8. 要调用该函数,请选择 Test(测试)。

控制台将使用名为 lambda_function.rb 的源文件创建一个 Lambda 函数。您可以在内置代码编辑器中编辑此文件并添加更多文件。要保存您的更改,请选择 Save(保存)。然后,要运行代码,请选择 Test(测试)。

注意

Lambda 控制台使用 Amazon Cloud9 在浏览器中提供集成开发环境。您还可以使用 Amazon Cloud9 在您自己的环境中开发 Lambda 函数。有关更多信息,请参阅《Amazon Cloud9 用户指南》中的通过 Amazon Toolkit 使用 Amazon Lambda 函数

lambda_function.rb 文件会导出一个名为 lambda_handler 的函数,此函数将接受事件对象和上下文对象。这是 Lambda 在调用函数时调用的处理函数。Ruby 函数运行时从 Lambda 获取调用事件并将其传递到处理程序。在函数配置中,处理程序值为 lambda_function.lambda_handler

保存函数代码时,Lambda 控制台会创建一个 .zip 文件归档部署包。在控制台外部开发函数代码时(使用 IDE),您需要创建部署程序包将代码上载到 Lambda 函数。

注意

要在本地环境中开始应用程序开发,请部署本指南的 GitHub 存储库中提供的其中一个示例应用程序。

Ruby 中的示例 Lambda 应用程序
  • blank-ruby – 一个 Ruby 函数,显示日志记录、环境变量、Amazon X-Ray 跟踪、层、单元测试和Amazon开发工具包的使用情况。

  • 适用于 Amazon Lambda 的 Ruby 代码示例 – 在 Ruby 中编写的代码示例,演示了如何与 Amazon Lambda 互动。

除了调用事件之外,函数运行时还将上下文对象传递给处理程序。上下文对象包含有关调用、函数和执行环境的其他信息。环境变量中提供了更多信息。

您的 Lambda 函数附带了 CloudWatch Logs 日志组。函数运行时会将每次调用的详细信息发送到 CloudWatch Logs。该运行时会中继调用期间函数输出的任何日志。如果您的函数返回错误,则 Lambda 将为错误设置格式,并将其返回给调用方。

包含运行时的 SDK 版本

Ruby 运行时中包含的 Amazon SDK 版本取决于运行时版本和您的 Amazon Web Services 区域。适用于 Ruby 的 Amazon SDK 采用模块化设计,并按照 Amazon Web Service各自独立。要查找您正在使用的运行时中包含的特定服务 Gem 的版本号,请使用以下格式的代码创建 Lambda 函数。用您的代码使用的服务 Gem 的名称替换 aws-sdk-s3Aws::S3

require 'aws-sdk-s3' def lambda_handler(event:, context:) puts "Service gem version: #{Aws::S3::GEM_VERSION}" puts "Core version: #{Aws::CORE_GEM_VERSION}" end

再启用一个 Ruby JIT(YJIT)

Ruby 3.2 运行时系统支持 YJIT,这是一款轻量级的极简 Ruby JIT 编译器。YJIT 提供的性能有显著提升,但消耗的内存也比 Ruby 解释器更多。建议将 YJIT 用于 Ruby on Rails 工作负载。

默认情况下,将不会启用 YJIT。要为 Ruby 3.2 函数启用 YJIT,请将 RUBY_YJIT_ENABLE 环境变量设置为 1。要确认已启用 YJIT,请打印 RubyVM::YJIT.enabled? 方法的结果。

例 :确认已启用 YJIT
puts(RubyVM::YJIT.enabled?()) # => true