go aws-lambda 與 terraform 中的 exec 格式錯誤
php小編新一為您介紹一個常見問題:「go aws-lambda 與 terraform 中的 exec 格式錯誤」。在使用aws-lambda和terraform建立函數時,可能會遇到Exec格式錯誤的問題。這可能是由於函數程式碼或terraform配置的錯誤導致的。本文將幫助您了解並解決此問題,讓您能夠順利建立和執行aws-lambda函數。
問題內容
我實際上在使用 terraform 呼叫 golang lambda 時遇到了一個非常罕見的問題。所以基本上我使用 terraform 來部署我的所有資源,例如 lambda、帶有 golang 的 api 網關。問題是,當我使用 terraform 將 golang lambda 二進位 .zip 檔案部署到 lambda 時,在使用路由檢查請求時,它會傳回 exec 格式錯誤。 terraform 的所有程式碼都很好且格式化,因為我測試了簡單的 js lambda 函數,它運作得很好。我猜這是二進位架構的問題,但我使用與 aws 上使用的 lambda 相同的二進位架構。如果有人可以提供協助,我也使用與 Provide.al2 相同的問題,並出現 exec 格式錯誤。
一些調試資訊
1-目錄結構
- infra -- helloGO -- main.go -- main // binary file -- terraform -- main.tf -- hello.zip // with main binary file
2- terraform lambda 函數資源
resource "aws_lambda_function" "hello" { function_name = "hello" filename = "../hello.zip" // taking filename from root ./hello.zip runtime = "go1.x" # nodejs16.x go1.x handler = "main" # function.handler role = aws_iam_role.hello_lambda_exec.arn timeout = 3 }
3-建置指令
buildGO: cleanGO GOOS=linux GOARCH=amd64 CGO_ENABLED=0 cd ./helloGo/ && go build -o ./ main.go cd ./helloGo/ && chmod +x main cd ./helloGo/ && zip ../hello.zip main
這將建立建置檔案 main 並將其打包為 main.zip 以便 lambda terraform 檔案使用。 (amd64 是 x86_64 的可執行檔)
我嘗試提供了諸如使用amd64 構建之類的解決方案,但不知道lambda 呼叫go 說二進位檔案無法用此可執行檔執行
解決方法
您的環境設定是正確的,但您為錯誤的命令設定了它們。
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 cd ./helloGo/ && go build -o ./ main.go
此行為 cd
指令設定 GOOS、GOARCH 和 CGO_ENABLED,而不是為 go build
設定。
試試這個:
cd ./helloGo/ && GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o ./ main.go
以上是go aws-lambda 與 terraform 中的 exec 格式錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)