9
9

More than 5 years have passed since last update.

Serverless Framework ランタイムRubyでgemを使えるようにする

Last updated at Posted at 2019-02-14

はじめに

AWSのLambdaでRubyが使えるようになって色々実務で触っているので、ちょこちょこ更新していこうと思います。

環境

  • Ruby 2.5
  • Node 11.9.0
  • Serverless Framework 1.36.1
  • Mac OS X 10.14.2

rbenvとNodejsのインストールは完了している前提です。

RubyのバージョンをLambdaランタイムのRubyバージョンに合わせる

2019/2/14現在 LambdaのRubyバージョンが2.5.0なので、それに合わせて、rbenvで2.5.0をインストールしておきます。
すでにインストールしている場合はこの項目をスキップしてOKです

// 以下のコマンドでrbenvでインストール出来るRubyのバージョンを確認します
$ rbenv install -l

// 2.5.0がなかったら、以下を実行し、最新のRubyバージョンをインストール出来るようにします。
$ brew update
$ brew upgrade ruby-build

// 2.5.0があったら、以下を実行
$ rbenv install 2.5.0

// インストール出来ているか以下で確認をする
$ rbenv versions

Lambda関数の作成

// serverless frameworkをグローバルにインストール
$ npm i -g serverless

// 作業ディレクトリの作成
$ mkdir Lambda

// 作業ディレクトリ内へ移動
$ cd Lambda

// serverlessコマンドのエイリアスslsを使って関数を作成
$ sls create -t aws-ruby -p myFunc

// 関数のディレクトリ内へ移動
$ cd myFunc

// この関数のRubyバージョンを2.5.0に設定
$ rbenv local 2.5.0

// おまじない
$ rbenv rehash

Gemを使用出来るようにする

// bundlerをインストールしておく
$ gem install bundler

// Gemfileを手動で作成
$ touch Gemfile

Gemfileにsourceを記述してGemを使えるようにします

source 'https://rubygems.org'

gem 'aws-record', '~> 2'

上記を記述したら、以下を実行

// いきなりdeploymentが出来ないため
$ bundle install --no-deployment

// 関数と一緒にデプロイするために以下を実行
$ bundle install --deployment

以上までで、myFuncディレクトリは以下のような構造になります。

- handler.rb
- serverless.yml
- Gemfile
- Gemfile.lock
- vendor/

handler.rbでrequire

require 'json'
require 'aws-record'

def main

end

みたいにしてあげれば、ライブラリが使えるようになります。
しばらく、serverless関連の話題を投稿していこうと思います。

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9