AWS Lambda не может найти зависимость от Ruby - PullRequest
0 голосов
/ 11 декабря 2018

Я работаю над учебником в объявлении-ruby-support-for-aws-lambda , и у меня возникают проблемы с поиском Lambda для определения зависимостей Ruby.

У меня естьполучил код урока просто скопировать / вставить туда.Пока ничего необычного.

require 'aws-record'

class DemoTable
  include Aws::Record
  set_table_name ENV[‘DDB_TABLE’]
  string_attr :id, hash_key: true
  string_attr :body
end

def put_item(event:,context:)
  body = event["body"]
  item = DemoTable.new(id: SecureRandom.uuid, body: body)
  item.save! # raise an exception if save fails
  item.to_h
end

У меня есть Gemfile, содержащий aws-record, и я запускаю и bundle install и bundle install --deployment.

Если я вЛямбда-консоль, просматривая раздел «Функциональный код», показывает, что в проекте есть каталог vendor и присутствует гем aws-record.

Я использовал CLI sam для упаковки и развертывания кодаи кажется как будто все работает.

Но когда я создаю и запускаю тест, я получаю следующую ошибку.

{
  "errorMessage": "cannot load such file -- aws-record",
  "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/hello_ruby_record.rb:1: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'"
  ]
}

На этом этапе все кажется простымприложения, так что я озадачен тем, что мне не хватает.У кого-нибудь есть предложения по устранению неполадок?

1 Ответ

0 голосов
/ 11 декабря 2018

Проблема заключалась в несоответствии версий Ruby.Я был несколько версий позади версии AWS Lambda (2.5.0).Как только я изменил обновленную локальную версию на ту, которую использует Labmda, ошибка загрузки исчезла.

Эта проблема является дубликатом AWS Lambda: функция Ruby не может загрузить gem и Как я могу получить AWS Lambda для доступа к драгоценным камням, хранящимся в вендоре / комплекте? , но в настоящее время ни один из них не принял ответов, поэтому я оставляю это сообщение здесь для будущих разработчиков в аналогичной ситуации.

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