質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Q&A

解決済

1回答

1773閲覧

【Ruby】Serverless Frameworkで作成したLambda関数でGemが使えない

kou_pg_0131

総合スコア14

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

0グッド

1クリップ

投稿2019/08/28 20:29

遭遇している問題

Serverless Frameworkを使用して作成したAWS Lambda関数でvendor/bundle以下にインストールしているGemが読み込まれません。。。

環境

bash

1$ sls -v 2Framework Core: 1.51.0 3Plugin: 1.3.9 4SDK: 2.1.0

やったこと

bash

1$ sls create -t aws-ruby -p ruby-at-lambda-test 2$ cd ruby-at-lambda-test 3$ rbenv local 2.5.0 4$ bundle init
  • Gemfile

ruby

1# frozen_string_literal: true 2 3source "https://rubygems.org" 4 5git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } 6 7gem 'bcrypt'

bash

1$ bundle install 2$ bundle install --deployment
  • handler.rb

ruby

1require 'json' 2require 'bcrypt' 3 4def hello(event:, context:) 5 password = BCrypt::Password::create('password') 6 7 { 8 statusCode: 200, 9 body: { 10 password: password 11 }.to_json 12 } 13 14end

bash

1$ sls deploy 2$ sls invoke -f hello 3# エラーが起きる 4{ 5 "errorMessage": "cannot load such file -- bcrypt", 6 "errorType": "Init<LoadError>", 7 "stackTrace": [ 8 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", 9 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", 10 "/var/task/handler.rb:2:in `<top (required)>'", 11 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", 12 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'" 13 ] 14}

試したこと

Bundler.requireを追加

diff

1+ require 'bundler' 2require 'json' 3- require 'bcrypt' 4+ Bundler.require 5 6def hello(event:, context:) 7 password = BCrypt::Password::create('password') 8 9 { 10 statusCode: 200, 11 body: { 12 password: password 13 }.to_json 14 } 15 16end

bash

1$ sls deploy 2$ sls invoke -f hello 3{ 4 "errorMessage": "Could not find bcrypt-3.1.13 in any of the sources", 5 "errorType": "Init<Bundler::GemNotFound>", 6 "stackTrace": [ 7 "/var/runtime/gems/bundler-2.0.1/lib/bundler/spec_set.rb:87:in `block in materialize'", 8 "/var/runtime/gems/bundler-2.0.1/lib/bundler/spec_set.rb:81:in `map!'", 9 "/var/runtime/gems/bundler-2.0.1/lib/bundler/spec_set.rb:81:in `materialize'", 10 "/var/runtime/gems/bundler-2.0.1/lib/bundler/definition.rb:170:in `specs'", 11 "/var/runtime/gems/bundler-2.0.1/lib/bundler/definition.rb:237:in `specs_for'", 12 "/var/runtime/gems/bundler-2.0.1/lib/bundler/definition.rb:226:in `requested_specs'", 13 "/var/runtime/gems/bundler-2.0.1/lib/bundler/runtime.rb:108:in `block in definition_method'", 14 "/var/runtime/gems/bundler-2.0.1/lib/bundler/runtime.rb:20:in `setup'", 15 "/var/runtime/gems/bundler-2.0.1/lib/bundler.rb:107:in `setup'", 16 "/var/runtime/gems/bundler-2.0.1/lib/bundler.rb:114:in `require'", 17 "/var/task/handler.rb:3:in `<top (required)>'", 18 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", 19 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'" 20 ] 21}

require 'bundler/setup'を追加

diff

1+ require 'bundler/setup' 2require 'json' 3require 'bcrypt' 4 5def hello(event:, context:) 6 password = BCrypt::Password::create('password') 7 8 { 9 statusCode: 200, 10 body: { 11 password: password 12 }.to_json 13 } 14 15end

bash

1$ sls deploy 2$ sls invoke -f hello 3{ 4 "errorMessage": "Could not find bcrypt-3.1.13 in any of the sources", 5 "errorType": "Init<Bundler::GemNotFound>", 6 "stackTrace": [ 7 "/var/runtime/gems/bundler-2.0.1/lib/bundler/spec_set.rb:87:in `block in materialize'", 8 "/var/runtime/gems/bundler-2.0.1/lib/bundler/spec_set.rb:81:in `map!'", 9 "/var/runtime/gems/bundler-2.0.1/lib/bundler/spec_set.rb:81:in `materialize'", 10 "/var/runtime/gems/bundler-2.0.1/lib/bundler/definition.rb:170:in `specs'", 11 "/var/runtime/gems/bundler-2.0.1/lib/bundler/definition.rb:237:in `specs_for'", 12 "/var/runtime/gems/bundler-2.0.1/lib/bundler/definition.rb:226:in `requested_specs'", 13 "/var/runtime/gems/bundler-2.0.1/lib/bundler/runtime.rb:108:in `block in definition_method'", 14 "/var/runtime/gems/bundler-2.0.1/lib/bundler/runtime.rb:20:in `setup'", 15 "/var/runtime/gems/bundler-2.0.1/lib/bundler.rb:107:in `setup'", 16 "/var/runtime/gems/bundler-2.0.1/lib/bundler/setup.rb:20:in `<top (required)>'", 17 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", 18 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", 19 "/var/task/handler.rb:1:in `<top (required)>'", 20 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", 21 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'" 22 ] 23}

$LOAD_PATHを追加

diff

1+ $LOAD_PATH.unshift('./vendor/bundle/ruby/2.6.0/gems/bcrypt-3.1.13/lib') 2require 'json' 3require 'bcrypt' 4 5def hello(event:, context:) 6 password = BCrypt::Password::create('password') 7 8 { 9 statusCode: 200, 10 body: { 11 password: password 12 }.to_json 13 } 14 15end

bash

1$ sls deploy 2$ sls invoke -f hello 3{ 4 "errorMessage": "cannot load such file -- bcrypt_ext", 5 "errorType": "Init<LoadError>", 6 "stackTrace": [ 7 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", 8 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", 9 "/var/task/vendor/bundle/ruby/2.6.0/gems/bcrypt-3.1.13/lib/bcrypt.rb:12:in `<top (required)>'", 10 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", 11 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", 12 "/var/task/handler.rb:3:in `<top (required)>'", 13 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", 14 "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'" 15 ] 16}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

おそらく下記と全く同じ問題だと思います。

https://teratail.com/questions/206614

投稿2019/08/29 00:05

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kou_pg_0131

2019/08/29 09:21

できました!! 解決の糸口すら全く見つからなかったので本当に助かりました、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問