3 回答

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,但為所有文件設置了可執行位。

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 關注
- 181 瀏覽
添加回答
舉報