帮助 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 事件源进行建模。官方文档有详细的演练。