幫助 Go 開發人員開發 AWS Lambda 函數的函式庫、範例和工具。
要了解有關用 Go 編寫 AWS Lambda 函數的更多信息,請訪問官方文檔
// main.gopackage mainimport ( "github.com/aws/aws-lambda-go/lambda")func hello() (string, error) { return "Hello λ!", nil}func main() { // Make可用於AWS Lambdalambda.Start(hello) 遠端過程呼叫的處理程序 }
準備要部署到 AWS Lambda 的二進位檔案需要針對 Linux 進行編譯並放入 .zip 檔案中。當使用provided
、 provided.al2
或provided.al2023
執行時,.zip檔案中的可執行檔應命名為bootstrap
。 Lambda 的預設架構是x86_64
,因此當從非 x86 環境進行交叉編譯時,應使用GOARCH=amd64
建立可執行檔。同樣,如果將 Lambda 函數配置為使用 ARM,則應使用GOARCH=arm64
建立可執行檔。
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go zip lambda-handler.zip 引導程式
在 Linux 上,Go 編譯器的預設行為是將輸出可執行檔連結到系統 libc 以實現某些標準函式庫功能(例如 DNS 查找)。如果建置環境使用的 Linux 發行版的 GNU libc 版本比部署環境更新,則應用程式在部署到 Lambda 時可能會失敗,並出現類似/lib64/libc.so.6: version `GLIBC_X.YZ' not found
錯誤。
大多數 Go 應用程式不需要連結到系統 libc。可以使用CGO_ENABLED
環境變數來停用此行為。
CGO_ENABLED=0 go build -o bootstrap main.go zip lambda-handler.zip bootstrap
請參閱使用 CGO
Windows 開發人員可能難以產生將二進位檔案標記為 Linux 上可執行檔的 zip 檔案。若要建立可在 AWS Lambda 上執行的 .zip, build-lambda-zip
工具可能會有所幫助。
取得工具
go.exe 安裝 github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest
使用GOPATH
中的工具。如果您預設安裝了 Go,則該工具將位於%USERPROFILE%Gobin
中。
在cmd.exe:
設定 GOOS=linuxset GOARCH=amd64set CGO_ENABLED=0go build -o bootstrap main.go%USERPROFILE%Gobinbuild-lambda-zip.exe -o lambda-handler.zip bootstrap
在 Powershell 中:
$env:GOOS = "linux"$env:GOARCH = "amd64"$env:CGO_ENABLED = "0"go build -o bootstrap main.go ~GoBinbuild-lambda-zip.exe -o lambda-handler.zip 開機程式
對於需要 CGO 的應用程序,建置環境必須使用與目標 Lambda 執行時期相容的 GNU libc 版本。否則,執行可能會失敗,並出現類似/lib64/libc.so.6: version `GLIBC_X.YZ' not found
錯誤。
Lambda 運行時 | GLIBC版本 |
---|---|
provided.al2023 | 2.34 |
provided.al2 | 2.26 |
provided 和go1.x | 2.17 |
另外,Lambda 支援容器映像作為 .zip 檔案的部署包替代方案。有關更多信息,請參閱有關使用容器映像的官方文件。
若要部署您的函數,請參閱使用 AWS CLI、AWS Cloudformation 和 AWS SAM 進行部署的官方文件。
事件模型可用於對 AWS 事件來源進行建模。官方文件有詳細的演練。