AWS Lambda
開発者ガイド

Ruby による Lambda 関数のビルド

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

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

Ruby ランタイム

名前 識別子 AWS SDK for Ruby オペレーティングシステム

Ruby 2.5

ruby2.5

3.0.1

Amazon Linux

Lambda 関数は実行ロールを使用して、Amazon CloudWatch Logs にログを書き込み、他のサービスやリソースにアクセスするためのアクセス権限を取得します。関数開発用の実行ロールをお持ちでない場合は、作成してください。

実行ロールを作成するには

  1. IAM コンソールの [Roles] ページを開きます。

  2. [ロールの作成] を選択します。

  3. 次のプロパティでロールを作成します。

    • [信頼されたエンティティ] – [Lambda]。

    • [アクセス許可] – [AWSLambdaBasicExecutionRole]。

    • ロール名lambda-role

    AWSLambdaBasicExecutionRole ポリシーには、ログを CloudWatch Logs に書き込むために関数が必要とするアクセス許可があります。

後でロールにアクセス許可を追加するか、1 つの関数に固有の別のロールに差し替えることができます。

Ruby 関数を作成するには

  1. Lambda コンソールを開きます。

  2. [Create function] を選択します。

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

    • Name (名前)my-function

    • ランタイムRuby 2.5

    • ロール既存のロールを選択

    • 既存のロールlambda-role

  4. [Create function] を選択します。

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

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

  7. [作成] を選択します。

  8. 関数を実行するには、[テスト] を選択します。

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

注記

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

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

関数コードを保存するたびに、Lambda コンソールはデプロイパッケージを作成します。このパッケージは、関数コードを含む ZIP アーカイブです。関数の開発が進むにつれて、ソース管理への関数コードの保存、ライブラリの追加、デプロイの自動化を行うことがあります。まず、デプロイパッケージを作成し、コマンドラインでコードを更新します。

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

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