无法在 AWS Lambda 上加载文件 mysql2

2024-02-11

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

我已经在供应商目录中构建了 mysql2 gem。这是使用捆绑安装--部署.

据推测,这是一个问题,因为 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'

达纳巴尔的答案有效,但让我详细说明,因为答案对我来说太程序化了。

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

另外,我们需要将动态库复制到加载路径中。
首先,让我们找出可以将库放置在哪里。
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 to [function dir]/lib并部署。

就是这样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 AWS Lambda 上加载文件 mysql2 的相关文章

随机推荐

  • 用于提取 TwitPic 链接/代码(如果存在)的 PHP 正则表达式

    我希望能够检查文本字符串并提取 TwitPic URL 如果它存在于字符串中 最终我只想要代码部分 但两者都可以 Example blah blah blah http twitpic com 1aso4q blah blah 期望的结果
  • 库链接

    我正在尝试使用 Zed Shaw 的 Learn C the Hard way 来学习 C 编程 我一直在 ex26 上工作 我们创建了一个用于安装软件的程序 devpkg 此练习需要安装 Apache Portable Runtime 库
  • 无序元组类型

    我只是在深入研究 Typescript 类型 我想知道如何定义一个元组类型 但具有无序元素类型 我的意思是 有 type SimpleTuple number string const tup1 SimpleTuple 7 7 Valid
  • 调用 Math.random() 的函数是纯函数吗?

    以下是纯函数吗 function test min max return Math random max min min 我的理解是纯函数遵循以下条件 它返回一个根据参数计算得出的值 除了计算返回值之外 它不做任何工作 如果这个定义是正确的
  • 如何在 Jersey/Spring 中使用 @QueryParam 重载方法?

    我想使用 QueryParam 重载一个方法 但每次我尝试执行此代码时 它都会抛出 SEVERE Exception occurred when intialization com sun jersey spi inject Errors
  • Matplotlib,绘图上的对数色标,但颜色条图例上的线性色标

    我想以对数比例绘制 我已经使用以下方法完成了 plt contourf cube 0 data levels np arange 0 6000 10 norm mplc LogNorm 但我希望颜色条仍然是线性比例 这可能吗 如果可以的话我
  • Server.MapPath 并从 ASP.NET 应用程序运行命令行实用程序

    我需要使用 ASP NET 应用程序运行可执行文件Process exe 文件位于 ASP NET 项目内 ProjectRoot Utilities utility exe 为什么这段代码运行失败 string path Server M
  • 使用路径相关类型作为类参数

    我想要一个类 它采用依赖于类的类型的参数 就像我经常对方法所做的那样 然而 令我惊讶的是 这不起作用 scala gt trait Compiler trait Config defined trait Compiler works fin
  • 如何使用 JWT 令牌管理多设备同时登录?

    我的疑问是关于使用 JWT 令牌支持同一用户同时进行多设备登录 我使用 NestJS 作为我的后端 用户表 userid 用户名 密码 包含哈希密码 名称 refreshToken 包含哈希刷新令牌 当用户执行 api login 调用时
  • HOC 上的组件定义缺少显示名称

    我正在尝试创建一个更高阶的组件 但不断收到此 eslint 警告 组件定义缺少显示名称 我尝试添加如下所示的显示名称 但它仍然抱怨 import React from react const HOC props gt WC gt WC di
  • 以编程方式更改 Android 中矢量的 fillColor

    我想以编程方式编辑 Android 中矢量文件的填充颜色 在 xml 文件中 我可以使用属性设置颜色机器人 填充颜色但我想在运行时改变颜色 有什么例子吗 谢谢 This https medium com emmaguy dynamicall
  • 尝试使用 imagecreatefromstring 保存 base64 图像,但它是全黑的

    我正在尝试从数据库中获取 Base64 编码图像并将其保存到文件中 无论出于何种原因 当我尝试使用 imagecreatefromstring 和 imagepng 时 图像完全是黑色的 我尝试了很多不同的方法 但最终还是得到了一个黑匣子
  • msbuild复制文件

    我在使用 MSbuild 复制文件时遇到问题 并且收到的错误消息似乎相互矛盾 使用 TFS 2008 进行构建 我目前的构建脚本中有以下内容
  • EL 表达式:传递 null 作为 BigDecimal 字段的值

    我有课BigDecimal财产 当我绑定到它 EL 表达式并传递 null 时 valueExpression set context null 财产的新价值变为BigDecimal ZERO 有什么方法可以将 null 传递给BigDec
  • 如何在 C# 中将视频转换为字节数组?

    我正在使用 c net 紧凑框架 3 5 我想将视频文件转换为字节数组 以便我可以将其上传到服务器上 以类似的方式 我正在进行图像上传 获得了成功的结果 HttpWebRequest request request ContentType
  • RGB 到 HSL 转换

    我正在创建一个颜色选择器工具 对于 HSL 滑块 我需要能够将 RGB 转换为 HSL 当我搜索 SO 进行转换的方法时 我发现了这个问题HSL 到 RGB 颜色转换 https stackoverflow com questions 23
  • 为什么 [][[]] 的计算结果为未定义?

    表达方式 评估为undefined在 JavaScript 中 我对此的理解是编译器看到第二组 并将其解释为数组下标运算符 因为不能让两个数组彼此相邻 所以编译器知道内部表达式 必须是一个索引 因此在评估它之后 它会将其强制为一个数字 Nu
  • 查询以查明外键是否在数据库中的其他位置被引用

    我有餐桌动物 我想返回该表中的所有内容 一列 该列表示记录是否在其他任何地方作为外键引用 I E Animal Id Name 1 Cat 2 Dog 3 Parrot 我想返回这个 AnimalId Name Referenced 1 C
  • 我可以使用Web App的私钥证书来签署JWT吗?

    我正在为 Chrome 浏览器开发推送通知服务器 在 Google Cloud Console 上 我已将我的应用程序注册为 Web 应用程序并下载了私钥证书 我可以使用此证书来签署 JWT 请求吗 可以 但出于多种目的共享私钥通常不是一个
  • 无法在 AWS Lambda 上加载文件 mysql2

    尝试让 Lambda 连接到 RDS 数据库 但无法加载 mysql2 gem 尝试过pristine说明 但这并没有解决问题 我已经在供应商目录中构建了 mysql2 gem 这是使用捆绑安装 部署 据推测 这是一个问题 因为 mysql