我已经阅读了 https://docs.aws.amazon.com/lambda/latest/dg/golang-handler.html 页面数次,但我仍然不太确定我应该给
起什么名字handler
aws cli 的参数 create-function
对于我的 Go 代码。
它说,
- func HandleRequest(ctx context.Context, name MyEvent) (string, error):这是您的 Lambda 处理程序签名,包含将要执行的代码。
- 对于使用 go1.x 运行时的 Go 函数,可执行文件和处理程序可以共享任何名称。例如,如果将处理程序的值设置为 Handler,Lambda 将调用 Handler 可执行文件中的 main() 函数。
好的,情况是这样的
MyLambda
文件夹中,MyHandleRequest
定义为 func MyHandleRequest(ctx context.Context, name MyEvent) (string, error)
。bin/MyLambda
,并与我的其他文件(如 zip
等)一起放入 assets/*
文件中。在这种情况下,对于使用 go1.x 运行时的 Go 函数,我应该向 aws cli
handler
提供什么作为 create-function
参数?
对于 lambda 中的 golang 处理程序,
handler
名称应该是您上传到 lambda 的 go 二进制文件的名称。go build -o mybinary main.go
(IE:前面示例中的mybinary
)
您的二进制文件应该像任何其他 go 程序一样具有
main
函数,并且要获取 lambda 上下文信息,请使用 github.com/aws/aws-lambda-go
模块。 AWS 文档有明确的示例:
https://docs.aws.amazon.com/lambda/latest/dg/golang-context.html