相关疑难解决方法(0)

如何让我的AWS Lambda访问存储在vendor/bundle中的gem?

我正在Ruby中编写Lambda函数,最终将通过Webhook向Slack发送一些通知.所以我的lambda_function文件就是

require 'json'
require 'webhook'

def lambda_handler(event:, context:)
    # TODO implement
    { statusCode: 200, body: JSON.generate('Hello from Lambda!') }
    Webhook.post('https://mywebhookurl', {message: 'test'})
end
Run Code Online (Sandbox Code Playgroud)

我的内联代码编辑器中的目录结构如下所示:

Gemfile
Gemfile.lock
lambda_function.rb
vendor/
  bundle/
    ruby
      2.3.0
        gems/webhook
Run Code Online (Sandbox Code Playgroud)

也是在2.3.0洗澡其他几个文件夹,包括build_info, cache,doc等.为了得到这个代码到AWS LAMBDA,我跑

zip -r myLambda.zip * 将所有内容放入zip文件并上传到Lambda.

但是,当我最终对lambda运行基本测试时,我收到以下错误:

{
  "errorMessage": "cannot load such file -- webhook",
  "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/lambda_function.rb:2: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'"
  ]
}
Run Code Online (Sandbox Code Playgroud)

由于下面的教程确切地说明了如何设置我所拥有但不起作用,因此不应再有这个了.有没有人成功从AWS Lambda的gemfile中提取宝石?

ruby amazon-web-services bundler aws-lambda

10
推荐指数
3
解决办法
2466
查看次数

标签 统计

amazon-web-services ×1

aws-lambda ×1

bundler ×1

ruby ×1