gpt4 book ai didi

go - 将共享库添加到 AWS Lambda Go 二进制文件

转载 作者:行者123 更新时间:2023-12-03 10:09:36 31 4
gpt4 key购买 nike

上下文

我正在使用 Go 开发 AWS Lambda 函数,我的依赖项之一是 gopkg.in/h2non/bimg.v1它有一个依赖项:libvips 7.42+ 或 8+(推荐 8.4+)。

问题

问题是在我的本地机器上 lambda 处理程序正在工作,但是当我部署它时出现这个错误:

START RequestId: b4becbd1-3fca-4aed-9574-8df0e3d13c9e Version: $LATEST
/var/task/main: error while loading shared libraries: libvips.so.42: cannot open shared object file: No such file or directory
END RequestId: b4becbd1-3fca-4aed-9574-8df0e3d13c9e
REPORT RequestId: b4becbd1-3fca-4aed-9574-8df0e3d13c9e Duration: 42.36 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 12 MB
RequestId: b4becbd1-3fca-4aed-9574-8df0e3d13c9e Process exited before completing request

我的构建命令是:

GOOS=linux GOARCH=amd64 go build -o main main.go

我尝试了什么

我尝试在启用 c-shared 选项的情况下构建它:

GOOS=linux GOARCH=amd64 go build -buildmode=c-shared -o main main.go

但是也有一个错误,一个不同的错误;

START RequestId: 9b90df21-1025-463b-89b1-1a4ee31f295c Version: $LATEST
fork/exec /var/task/main: permission denied: PathError
null
END RequestId: 9b90df21-1025-463b-89b1-1a4ee31f295c
REPORT RequestId: 9b90df21-1025-463b-89b1-1a4ee31f295c Duration: 0.77 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 30 MB Init Duration: 1.84 ms

我有两个选择(?):

  1. 使用完整的 Go 库重写
  2. 使用打包到 Go 二进制文件中的 libvips 库生成一个库。

最佳答案

还有另一种选择 - 将所有 .so 文件与二进制文件一起放入 zip 存档中,然后将 zip 作为 lambda 上传。所以,你的目标内容应该是这样的

╰─ unzip -l function.zip
Archive: function.zip
Length Date Time Name
--------- ---------- ----- ----
6764336 10-08-2020 01:01 imgconvert
284008 06-19-2020 09:16 libexif.so.12
276072 08-22-2019 08:14 libjpeg.so.62
155824 12-10-2015 02:17 libpng12.so.0
468376 10-01-2019 03:37 libtiff.so.5
12261600 10-08-2020 00:48 libvips.so.42
3579016 10-08-2020 00:45 libwebp.so.7
85328 10-08-2020 00:45 libwebpdemux.so.2
205696 10-08-2020 00:45 libwebpmux.so.3

关于go - 将共享库添加到 AWS Lambda Go 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60591996/

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