Как использовать Gem в aws с Ruby? - PullRequest
1 голос
/ 28 октября 2019

Я хочу использовать gem httparty (в качестве примера)

Я добавил Gemfile

source 'https://rubygems.org'

gem 'httparty'

enter image description here

Мой лямбда-код имеет:

...
require 'httparty'

, и я называю его с

response = Net::HTTParty.get('example.com', '/index.html')

, но начальный require получает

{
  "errorMessage": "cannot load such file -- httparty",
  "errorType": "Init<LoadError>",
  "stackTrace": [
    "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'",
    "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'",
    "/var/task/lambda_function.rb:3:in `<top (required)>'",
    "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'",
    "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'"
  ]
}

1 Ответ

0 голосов
/ 28 октября 2019

Нужно связать гемы non-aws в папку локального вендора и затем сжать те зависимости, которые нужно включить, т.е.

bundle install --path vendor/bundle  # <-- Note using path

zip -r function.zip lambda_function.rb vendor/ # <-- vendor/ for the dependencies

aws lambda update-function-code --function-name myFunction \
--zip-file fileb://function.zip --region 'us-east-2' # <= your region
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...