Как запросить локальную библиотеку проекта в лямбда-функцию ruby ​​aws? - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть рубиновая лямбда-функция, и теперь ей нужно подключение к базе данных с помощью mysql2.

Теперь, используя редактор консоли лямбда-функции, я загрузил свой zip-файл со своей библиотекой в ​​vendor / bundle.

Я установил библиотеку в своем локальном компьютере, используя следующую команду

bundle install --path vendor / bundle

для установки mysql2 ~> 0.5.2 из Gemfile.

Теперь, я написал ниже код для получения данных из db

require 'json'
load_paths = Dir.pwd + "/vendor/bundle/ruby/2.5.0/gems/**/lib"
$LOAD_PATH.unshift(*load_paths)
require 'mysql2'
def lambda_handler()
  @db_host  = "host"
  @db_user  = "user"
  @db_pass  = "pass"
  @db_name = "db"

  client = Mysql2::Client.new(:host => @db_host, :username => @db_user, :password => @db_pass, :database => @db_name)
  @cdr_result = client.query("SELECT count(*) from names")
  puts @cdr_result
  { statusCode: 200, body: JSON.generate('Hello from Lambda!') }
end
lambda_handler

, но выбрасываю эту ошибку в aws lambda

Response:
{
  "errorMessage": "cannot load such file -- mysql2",
  "errorType": "Init<LoadError>",
  "stackTrace": [
    "/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
    "/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
    "/var/task/replaceFile.rb:4:in `<top (required)>'",
    "/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
    "/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'"
  ]
}

Есть ли способ, которым я могу требовать локальногопоместите gem mysql2 в мой файл скрипта, содержащий мои гемы внутри vendor / bundle, и используйте эти библиотеки в моем скрипте ruby, который входит в пакет развертывания лямбда-aws.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...