我目前正在尝试将 AWS Lambda 用作 Ruby 应用程序。我安装时遇到问题mysql2
,当我跑的时候bundle install
我收到以下错误:
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling
我发现了一个 Stackoverflow 帖子来创建 Docker 容器来加载依赖项,这是该帖子。无法在 AWS Lambda 上加载文件 mysql2 https://stackoverflow.com/questions/53854487/cannot-load-file-mysql2-on-aws-lambda
我按照帖子中的步骤操作:
move the mysql folder from /usr/lib64/mysql to /usr/mysql
mkdir -p /var/task/lib
cp -a /usr/mysql/.so. /var/task/lib/
bundle config --local build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
bundle install with and without deployment
我能够安装,正如帖子中提到的,文件不能是符号链接,因为一旦你它就会中断zip
目录。我尝试使用mv
但退出容器后,文件不会保留在目录中。有一次,我zip
应用程序并部署到 AWS Lambda 我收到以下错误:
Response:
{
"errorMessage": "libmysqlclient.so.18: cannot open shared object file: No such file or directory - /var/task/vendor/bundle/ruby/2.5.0/gems/mysql2-0.5.2/lib/mysql2/mysql2.so",
"errorType": "Init<LoadError>",
"stackTrace": [
"/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
"/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
"/var/task/vendor/bundle/ruby/2.5.0/gems/mysql2-0.5.2/lib/mysql2.rb:33:in `<top (required)>'",
"/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
"/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
"/var/task/my_sql.rb:1:in `<top (required)>'",
"/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
"/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
"/var/task/lambda_function.rb:8:in `<top (required)>'",
"/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
"/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'"
]
}
但我可以看到该文件mysql2.so
在供应商目录中:
bash-4.2# cd /var/task/vendor/bundle/ruby/2.5.0/gems/mysql2-0.5.2/lib/mysql2/
bash-4.2# ls
client.rb console.rb em.rb error.rb field.rb mysql2.so result.rb statement.rb version.rb
bash-4.2#
I'm also able to see the files libmysqlclient.so
and /mysql2/mysql2.so
.
为什么找不到该文件?