gpt4 book ai didi

ruby - 无法在 AWS Lambda 上加载文件 mysql2

转载 作者:行者123 更新时间:2023-12-04 15:50:44 26 4
gpt4 key购买 nike

尝试让 Lambda 连接到 RDS 数据库,但无法加载 mysql2 gem。尝试了 pristine 指令,但这并没有解决问题。

我在 vendor 目录中有内置的 mysql2 gem。这是否使用 bundle install --deployment

推测这是一个问题,因为 mysql2 使用的已编译扩展。虽然不确定如何为 AWS Lambda 对此进行排序。想法?

这是日志输出:

START RequestId: 62f35c49-039f-11e9-be04-1fd1111df42b Version: $LATEST
Ignoring mysql2-0.5.2 because its extensions are not built. Try: gem pristine mysql2 --version 0.5.2
Init error when loading handler lambda_function.lambda_handler
{
"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/lambda_function.rb:3: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'"
]
}
END RequestId: 62f35c49-039f-11e9-be04-1fd1111df42b
REPORT RequestId: 62f35c49-039f-11e9-be04-1fd1111df42b Duration: 1439.17 ms Billed Duration: 1500 ms Memory Size: 128 MB Max Memory Used: 17 MB
Unknown application error occurred
Init<LoadError>

这是我的 Gemfile:

source 'https://rubygems.org'

gem 'mysql2', '~> 0.5.2'
gem 'sequel', '~> 5.15.0'

Gemfile.lock

GEM
remote: https://rubygems.org/
specs:
mysql2 (0.5.2)
sequel (5.15.0)

PLATFORMS
ruby

DEPENDENCIES
mysql2 (~> 0.5.2)
sequel (~> 5.15.0)

BUNDLED WITH
1.17.2

这是我的 lambda_function.rb 文件的顶部

require 'json'
require 'logger'
require 'mysql2'
require 'sequel'

最佳答案

Dhanabal 的答案有效,但让我详细说明一下,因为答案对我来说过于程序化。

基本上,具有原生扩展的 gem 应该构建在与 AWS Lambda 相同的环境中。
因此,我们需要在模仿 Lambda 环境的 lambci/lambda:build-ruby2.5 docker 镜像中构建 native 扩展。

此外,我们还需要将动态库复制到加载路径中。
首先,让我们找出可以放置库的位置。
echo $LD_LIBRARY_PATH 在容器中你会得到/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib .
因此,我只是将库从 /usr/lib64/mysql 复制到 [function dir]/lib 并部署。

就是这样。

关于ruby - 无法在 AWS Lambda 上加载文件 mysql2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53854487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com