Ruby による Lambda 関数の構築 - AWS Lambda

Ruby による Lambda 関数の構築

Ruby コードは AWS Lambda で実行できます。Lambda は、コードを実行してイベントを処理する Ruby 用のランタイムを提供します。コードは、管理している AWS Identity and Access Management (IAM) ロールの認証情報を使用して、AWS SDK for Ruby を含む環境で実行されます。Ruby ランタイムに含まれている SDK バージョンの詳細については、「ランタイムに含まれる SDK バージョン」を参照してください。

Lambda は以下の Ruby ランタイムをサポートします。

Ruby
名前 識別子 オペレーティングシステム 廃止日 関数の作成をブロックする 関数の更新をブロックする

Ruby 3.3

ruby3.3

Amazon Linux 2023

Ruby 3.2

ruby3.2

Amazon Linux 2

Ruby 関数を作成するには
  1. Lambda コンソールを開きます。

  2. [Create function] (関数の作成) をクリックします。

  3. 以下の設定を行います。

    • [Function name]: 関数名を入力します。

    • [ランタイム]:[Ruby 3.2] を選択します。

  4. [Create function] (関数の作成) をクリックします。

  5. テストイベントを設定するには、[テスト] を選択します。

  6. [イベント名] で、「test」と入力します。

  7. [変更を保存] をクリックします。

  8. [テスト] を選択して関数を呼び出します。

コンソールで、lambda_function.rb という名前の単一のソースファイルを含む Lambda 関数が作成されます。このファイルを編集し、組み込みのコードエディタでファイルをさらに追加することができます。変更を保存するには [保存] を選択します。コードを実行するには、[Test] (テスト) を選択します。

注記

Lambda コンソールでは、AWS Cloud9 を使用して、ブラウザに統合開発環境を提供します。また、AWS Cloud9 を使用して、独自の環境で Lambda 関数を開発することもできます。詳細については、AWS Cloud9 ユーザーガイドの「AWS Toolkit を使用した AWS Lambda 関数の使用」を参照してください。

lambda_function.rb ファイルは、イベントオブジェクトおよびコンテキストオブジェクトを取得する lambda_handler という名前の関数をエクスポートします。これは、関数が呼び出されるときに Lambda が呼び出すハンドラー関数です。Ruby 関数のランタイムは、Lambda から呼び出しイベントを取得し、ハンドラーに渡します。関数設定で、ハンドラ値は lambda_function.lambda_handler です。

関数コードを保存すると、Lambda コンソールは .zip ファイルアーカイブのデプロイパッケージを作成します。コンソール外で (SDE を使用して) 関数コードを開発するときは、デプロイパッケージを作成して、Lambda 関数にコードをアップロードします。

注記

ローカル環境でアプリケーション開発を開始するには、このガイドの GitHub リポジトリで利用可能なサンプルアプリケーションの 1 つをデプロイします。

Ruby のサンプル Lambda アプリケーション
  • blank-ruby - ログ記録、環境変数、AWS X-Ray トレース、レイヤー、単位テスト、AWS SDK の使用を示す Ruby 関数。

  • AWS Lambda の Ruby コードサンプル – AWS Lambda との対話方法を示す、Ruby で記述されたコードサンプル。

関数のランタイムによって、呼び出しイベントに加えて、コンテキストオブジェクトがハンドラに渡されます。コンテキストオブジェクトには、呼び出し、関数、および実行環境に関する追加情報が含まれます。詳細情報は、環境変数から入手できます。

Lambda 関数には CloudWatch Logs ロググループが付属しています。関数のランタイムは、各呼び出しに関する詳細を CloudWatch Logs に送信します。これは呼び出し時に、任意の関数が出力するログを中継します。関数がエラーを返す場合、Lambda はエラー形式を整え、それを呼び出し元に返します。

ランタイムに含まれる SDK バージョン

Ruby ランタイムに含まれる AWS SDK のバージョンは、ランタイムバージョンと AWS リージョン によって異なります。AWSSDK for Ruby はモジュール式に設計されており、AWS のサービスごとに分かれています。使用しているランタイムに含まれている特定のサービス gem のバージョン番号を確認するには、次の形式のコードを使用して Lambda 関数を作成します。aws-sdk-s3Aws::S3 を、コードが使用するサービス gem の名前に置き換えます。

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 ランタイムは、軽量でミニマルな Ruby JIT コンパイラである YJIT をサポートしています。YJIT はパフォーマンスを大幅に向上しますが、Ruby インタープリタよりも多くのメモリを消費します。Ruby on Rails のワークロードには YJIT が推奨されます。

YJIT は、デフォルトでは有効になっていません。Ruby 3.2 関数で YJIT を有効にするには、RUBY_YJIT_ENABLE 環境変数を 1 に設定します。YJIT が有効であることを確認するには、RubyVM::YJIT.enabled? メソッドの結果を出力します。

例 — YJIT が有効になっていることの確認
puts(RubyVM::YJIT.enabled?()) # => true