前提・実現したいこと
Rubyを用いて、スクレイピングするプログラムを作成し、定期実行できるように実装しています。
現段階では、スクレイピングのプログラムまで作成しました。
作成したプログラムをLambdaにアップロードするのですが、
Lambda上でGemをrequireすることができません。。
※ローカル環境では下記のようにコマンドを入力することで、問題なく実行できています。
% bundle exec ruby ファイル名
発生している問題・エラーメッセージ
アップロードしたプログラムを、Lambdaで実行すると下記のようなエラーが発生します。
START RequestId: ID Version: $LATEST Init error when loading handler scrap.scrap{ "errorMessage": "cannot load such file -- nokogiri", "errorType": "Init<LoadError>", "stackTrace": [ "/var/lang/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'", "/var/lang/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'", "/var/task/scrap.rb:2:in `<top (required)>'", "/var/lang/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'", "/var/lang/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'" ] }END RequestId: ID REPORT RequestId: ID Duration: 2043.89 ms Billed Duration: 2100 ms Memory Size: 128 MB Max Memory Used: 18 MB Unknown application error occurred Init<LoadError>
RubyファイルをLambdaにアップロードする手順
①Rubyファイルのzip化
% zip -r function.zip ファイル名.rb vendor
②zipファイルをLambdaにアップロード
% aws lambda update-function-code --function-name 関数名 --zip-file fileb://function.zip
補足情報(FW/ツールのバージョンなど)
・Ruby:2.7.0
・Gemのインストールは「bundle install --path vendor/bundle」を用いて行っています。
・function.zipの中身は以下の通りになっています・
①scrap.rb
②venndor/bundle/ruby/2.7.0
②の中にgemが入ってる形になっています!
回答1件
あなたの回答
tips
プレビュー