Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将共享库添加到AWS Lambda Go二进制文件 上下文_Go_Aws Lambda - Fatal编程技术网

将共享库添加到AWS Lambda Go二进制文件 上下文

将共享库添加到AWS Lambda Go二进制文件 上下文,go,aws-lambda,Go,Aws Lambda,我正在使用Go开发一个AWS Lambda函数,其中一个依赖项是具有依赖项的: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.s

我正在使用Go开发一个AWS Lambda函数,其中一个依赖项是具有依赖项的: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.go
我试过的 我尝试在启用了
c-shared
选项的情况下构建它:

GOOS=linux-GOARCH=amd64-go-build-buildmode=c-shared-o 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  
我有两个选择(?):

  • 用一个完整的库重写
  • 生成一个库,将libvips库打包到Go二进制文件中

  • 还有另一个选项-使用二进制文件将所有.so文件放入zip存档,并将zip作为lambda上传。所以,你的achive内容应该是这样的

    ╰─ 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
    

    顺便说一句,最好基于AWS lambda运行时所基于的相同映像在容器中构建libvip。我在amazon/aws-sam-cli-emulation-image-go1.x:rapid-1.2.0作为构建阶段构建了它