LoginSignup
19
19

More than 3 years have passed since last update.

【ハンズオン】Ruby support for AWS Lambdaを使ってみる

Last updated at Posted at 2018-12-05

※2019/7/3追記
AWS Lambda(for Ruby2.5)で画像合成をやってみた!
https://praha-inc.hatenablog.com/entry/2019/02/22/143721

こちらも執筆しています。より詳細な手順を記載していますので、参考になりましたら幸いです。


こんにちは、@shino_tpです。

AWS re:Invent 2018でAWS LambdaがRubyを公式サポートが発表されましたね!

これを期にLambdaでRubyを使ってみたところ、Lambdaに標準でインストールされていないライブラリ(gem)を使用する方法が不明だったため手順をまとめます。

詳細な手順は公式のドキュメントに記載されているので、備忘録になります。

公式ドキュメント
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/ruby-package.html

前提環境

awscli

awsコマンドを使うのでawscliのインストール&セットアップが必要です。
参照: https://qiita.com/maimai-swap/items/999eb69b7a4420d6ab64

Ruby2.5

rbenv、rvmなどを使ってRubyをインストール。

注意

AWS LambdaのRubyバージョンは2.5です(2018年12月6日現在)
※Rubyのバージョンが2.5以外の状態でbundle install を実行後、デプロイを行っても no such file などのエラーになるため注意。

AWSコンソール上で対応すること

Lambda関数を作成

AWSコンソールにアクセスし、Lambda関数を作成します。
デプロイ時に関数名を指定しますので、適当な名前で作成しましょう。

スクリーンショット 2018-12-06 3.57.38.png

ローカル環境で対応すること

Gemfileを作成

Gemfile
source 'https://rubygems.org'
gem 'aws-sdk-s3'
gem 'mini_magick' # AWS Lambdaが標準サポートしていないgem

bundle install

$ bundle install --path vendor/bundle

ディレクトリ構造

今回のディレクトリ構造です。

.
├── Gemfile
├── Gemfile.lock
├── lambda_function.rb
└── vendor
    └── bundle

Lambdaにデプロイ

ローカルでインストールしたライブラリを作成したプログラムファイルと一緒にzipに固めてデプロイをします。

デプロイ対象のファイルをzipファイルに圧縮

# zip -r [圧縮ファイル名].zip [ファイル名1] [ファイル名2] [ディレクトリ名1] [ディレクトリ名2]...(以降含めたいファイルorディレクトリを記述する)
$ zip -r function.zip lambda_function.rb vendor

ローカルからLambdaにデプロイ

$ aws lambda update-function-code \
--function-name [関数名] \
--zip-file fileb://[圧縮ファイル名].zip

--function-nameオプションには、Lambdaの関数名
--zip-fileオプションには、圧縮したzipファイルの名前
を指定

以上です。

参考資料

19
19
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
19
19