どうもこんにちは。
今回は、業務でAWS LambdaでRubyコードをデプロイしたのでそのやり方を紹介していきます。
AWS Lambdaとは
AWS公式ページの言葉を引用すると、
「サーバーをプロビジョニングまたは管理せずにコードを実行できるようにするコンピューティングサービス」です。
要するに、サーバーを使用せずにコードを実行することができる。いわば「サーバーレスアプリケーション」を構築することができるサービスということです。
AWS Lambdaを使用するメリット
- サーバーが必要ない
- 最大で998個の処理を同時に行うことができる
- 実行時間とリソース使用量によって料金が決まるため、低コストで使用できる
- Lambdaはイベント駆動型のため、さまざまなサービスのイベントをトリガーにコードを実行することができる
- 他のAWSサービスと連携して実装することができる
- AWSのIAMを使用して関数の実行権限を細かく設定できる
- AWSのVPCの設定を行うことでセキュリティは安心
などなどです!
構築方法
0. AWSコンソールにログインしてAWSLambdaのダッシュボードに遷移する
1. 「関数の作成」をクリックする
画面右上の「関数の作成」をクリックすると、作成画面へ遷移します。
2. 必要な情報を入力していく
作成画面では、以下の3つを設定します。
- Lambda関数名: 自分の好きな名前を入れてください。
- ランタイム: Ruby3.2(ここではプログラミング言語とそのバージョンを選択します。)
- アーキテクチャ: x86_64
入力したら「関数の作成」ボタンをクリックします。
3. 作成された関数の確認
手順2で関数が作成されたので、関数のコードを確認してみます。
以下のようなRubyコードがエディタに入力されているはずです。
require 'json'
def lambda_handler(event:, context:)
# TODO implement
{ statusCode: 200, body: JSON.generate('Hello from Lambda!') }
end
4. テスト
コードタブの横にテストというタブがあります。それをクリックすると、テストを実行できる画面に遷移します。
以下のようにテストの情報を入力していきます。
- イベント名: 好きな名前を入れてください
- イベント共有の設定: 他のユーザーと共有する必要がないならプライベートでOKです
- テンプレートオプション: hello-worldでOKです
- イベントJSON: JSON形式で関数に渡すテストデータを作成します。初期コードであればそのままでOKです
「テスト」ボタンをクリックすると、テストが実行され結果が画面に表示されます。
結果画面にはテストの結果が表示されます。(緑ならテスト成功、赤ならテスト失敗)
今回のコードでは、Lambda関数が実行されたらJSON形式で文字を出力するだけのコードなので、以下の結果が出力されます。
{
"statusCode": 200,
"body": "\"Hello from Lambda!\""
}
引数を渡してコードを実行
次はLambda関数に引数を渡してコードを動かしてみます。
関数の書き換え
まずはLambdaのコードを以下のように修正します。
require 'json'
def lambda_handler(event:, context:)
# TODO implement
name = event['Parameters']['name']
age = event['Parameters']['age']
"私の名前は#{name}です。年齢は#{age}歳です。"
end
テストのパラメータを修正
テストのイベントJSONを以下のように書き換えます。
{
"Parameters": {
"name": "太郎",
"age": "25"
}
}
テストの実行
テストボタンを押すと、以下のような結果が出力されると思います。
"私の名前は太郎です。年齢は25歳です。"
まとめ
今回はLambdaの基本的な使い方をまとめてみました。
また別の記事でローカルで開発した関数をLambdaにデプロイする方法を書こうと思います。