3 回答
![?](http://img1.sycdn.imooc.com/533e4c3300019caf02000200-100-100.jpg)
TA贡献1798条经验 获得超3个赞
您正在尝试运行 go 源代码文件。您需要运行二进制文件:
# Build the binary for your module
GOOS=linux go build main.go
# Package the binary, note we're packaging "main", not "main.go" here:
zip function.zip main
# And upload "function.zip" this package to Lambda
此外,您还需要在 zip 文件中设置可执行位。有很多方法可以做到这一点,如果你想在 Windows 上做到这一点,你需要运行一个像这样的 python 脚本:
import zipfile
import time
def make_info(filename):
info = zipfile.ZipInfo(filename)
info.date_time = time.localtime()
info.external_attr = 0x81ed0000
info.create_system = 3
return info
zip_source = zipfile.ZipFile("source_file.zip")
zip_file = zipfile.ZipFile("dest_file.zip", "w", zipfile.ZIP_DEFLATED)
for cur in zip_source.infolist():
zip_file.writestr(make_info(cur.filename), zip_source.open(cur.filename).read(), zipfile.ZIP_DEFLATED)
zip_file.close()
这将使用相同的内容source_file.zip重新打包它dest_file.zip,但为所有文件设置了可执行位。
![?](http://img1.sycdn.imooc.com/56fb3e3d0001a10301000100-100-100.jpg)
TA贡献1836条经验 获得超5个赞
我遇到了同样的问题,您必须确保二进制文件的名称与处理程序的名称相似。这应该已经是你的情况了:
$ unzip -l main.zip
Archive: main.zip
Length Date Time Name
--------- ---------- ----- ----
21477357 11-13-2020 00:02 main
更棘手的是,您应该确保二进制文件具有正确的权限,正如 Anon Coward 在评论中强调的那样:
$ ls -l bin/main
-rwxrwxr-x 1 root root 19325838 nov. 12 03:23 bin/main
这应该使您的二进制文件可执行。
就我而言,我无法生成chmod 755二进制文件,因为我在 Ubuntu VM 中工作,位于 VM 中安装的共享文件夹下,所以我最终得到了这些权限,但无法更改它们:
$ ls -l bin/main
-rwxrwx--- 1 root vboxsf 19325838 Nov 12 02:23 bin/main
如果有人有答案,我很想知道为什么我无法更改虚拟机内文件的组和权限。
- 3 回答
- 0 关注
- 129 浏览
添加回答
举报