Ruby による Lambda 関数の構築
Ruby コードは AWS Lambda で実行できます。Lambda は、コードを実行してイベントを処理する Ruby 用のランタイムを提供します。コードは、管理している AWS Identity and Access Management (IAM) ロールの認証情報を使用して、AWS SDK for Ruby を含む環境で実行されます。Ruby ランタイムに含まれている SDK バージョンの詳細については、「ランタイムに含まれる SDK バージョン」を参照してください。
Lambda は以下の Ruby ランタイムをサポートします。
名前 | 識別子 | オペレーティングシステム | 廃止日 | 関数の作成をブロックする | 関数の更新をブロックする |
---|---|---|---|---|---|
Ruby 3.3 |
|
Amazon Linux 2023 |
スケジュールされていません |
スケジュールされていません |
スケジュールされていません |
Ruby 3.2 |
|
Amazon Linux 2 |
スケジュールされていません |
スケジュールされていません |
スケジュールされていません |
Ruby 関数を作成するには
-
Lambda コンソール
を開きます。 -
[Create function] (関数の作成) をクリックします。
-
以下の設定を行います。
-
[Function name]: 関数名を入力します。
-
[ランタイム]:[Ruby 3.2] を選択します。
-
-
[Create function] (関数の作成) をクリックします。
-
テストイベントを設定するには、[テスト] を選択します。
-
[イベント名] で、「
test
」と入力します。 -
[変更を保存] をクリックします。
-
[テスト] を選択して関数を呼び出します。
コンソールで、lambda_function.rb
という名前の単一のソースファイルを含む Lambda 関数が作成されます。このファイルを編集し、組み込みのコードエディタでファイルをさらに追加することができます。変更を保存するには [保存] を選択します。コードを実行するには、[Test] (テスト) を選択します。
lambda_function.rb
ファイルは、イベントオブジェクトおよびコンテキストオブジェクトを取得する lambda_handler
という名前の関数をエクスポートします。これは、関数が呼び出されるときに Lambda が呼び出すハンドラー関数です。Ruby 関数のランタイムは、Lambda から呼び出しイベントを取得し、ハンドラーに渡します。関数設定で、ハンドラ値は lambda_function.lambda_handler
です。
関数コードを保存すると、Lambda コンソールは .zip ファイルアーカイブのデプロイパッケージを作成します。コンソール外で (SDE を使用して) 関数コードを開発するときは、デプロイパッケージを作成して、Lambda 関数にコードをアップロードします。
関数のランタイムによって、呼び出しイベントに加えて、コンテキストオブジェクトがハンドラに渡されます。コンテキストオブジェクトには、呼び出し、関数、および実行環境に関する追加情報が含まれます。詳細情報は、環境変数から入手できます。
Lambda 関数には CloudWatch Logs ロググループが付属しています。関数のランタイムは、各呼び出しに関する詳細を CloudWatch Logs に送信します。これは呼び出し時に、任意の関数が出力するログを中継します。関数がエラーを返す場合、Lambda はエラー形式を整え、それを呼び出し元に返します。
トピック
ランタイムに含まれる SDK バージョン
Ruby ランタイムに含まれる AWS SDK のバージョンは、ランタイムバージョンと AWS リージョン によって異なります。AWSSDK for Ruby はモジュール式に設計されており、AWS のサービスごとに分かれています。使用しているランタイムに含まれている特定のサービス gem のバージョン番号を確認するには、次の形式のコードを使用して Lambda 関数を作成します。aws-sdk-s3
と Aws::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 3.2 関数で YJIT を有効にするには、RUBY_YJIT_ENABLE
環境変数を 1
に設定します。YJIT が有効であることを確認するには、RubyVM::YJIT.enabled?
メソッドの結果を出力します。
例 — YJIT が有効になっていることの確認
puts(RubyVM::YJIT.enabled?()) # => true