Go语言支持是AWS的最新成员.要使用Go,您需要在创建AWS Lambda函数时从AWS控制台中选择语言.在本章中,让我们详细了解Go语言中的AWS Lambda函数.
要开始,我们需要Go Language支持.在本节中,我们将通过以下详细信息开始使用Go中的AWS Lambda.这是Go下载的官方网站: https://golang.org/dl/
现在,按照操作系统下载软件包.按照此处给出的步骤在相应的操作系统上安装Go.
观察对于Windows,有32位和提供64位下载.下载zip文件并提取内容并将其存储在您选择的目录中.
添加 ControlPanel --->中可用的环境变量.系统--->高级系统设置.
现在,单击 Environment Variables 按钮并添加目录路径,如下所示 :
你也可以编辑系统变量,如下所示 :
完成这些步骤后,您应该可以开始使用Go了.打开命令提示符并检查Go命令的版本.请注意以下屏幕截图.
要在Linux和Mac OS上安装软件包,请按照下面的说明进行操作并减去;
打开软件包并将其存储在位置/usr/local/go .现在,将/usr/local/go/bin 添加到PATH环境变量中.可以使用/etc/profile 或 $ HOME/.profile 来完成.
为此,您可以使用以下内容命令
export PATH=$PATH:/usr/local/go/bin
要为Windows,Linux和Mac添加AWS支持,请在git命令行中使用以下内容 :
go.exe get -u github.com/aws/aws-lambda-go/lambda go.exe get -u github.com/aws/aws-lambda-go/lambdacontext go.exe get -u github.com/aws/aws-lambda-go/cmd/build-lambda-zip
要编译代码Windows/Linux/Mac,请使用以下命令 :
GOOS=linux GOARCH=amd64 go build -o main main.go %GOPATH%\bin\build-lambda-zip.exe -o main.zip main
返回的程序当build构建一个可执行文件时去.以下是Go with AWS Lambda支持中的简单程序.我们需要导入 github.com/aws/aws-lambda-go/lambda ,因为它具有Lambda编程功能.对AWS Lambda的另一个重要需求是处理程序.
// main.go package main import ( "github.com/aws/aws-lambda-go/lambda" ) func hello() (string, error) { return "Hello Lambda", nil } func main() { // Make the handler available for Remote Procedure Call by AWS Lambda lambda.Start(hello) }
请注意,执行 Go 程序从main所在的lambda开始.使用处理函数调用start.观察下面显示的代码 :
func main() { // Make the handler available for Remote Procedure Call by AWS Lambda lambda.Start(hello) }
现在,让我们使用Go命令执行上述文件,然后压缩可执行文件.
我们使用的文件结构如下所示 :
使用 go build ,它会创建一个名为main.exe的可执行文件.要压缩文件并将其上传到AWS Lambda,您可以使用以下过程 :
要编译代码Windows/Linux/Mac,请使用以下命令 :
GOOS=linux GOARCH=amd64 go build -o main main.go %GOPATH%\bin\build-lambda-zip.exe -o main.zip main
然后,登录AWS控制台并使用 Go 创建Lambda函数作为运行时 :
创建函数后,上传创建的可执行zip文件上面.
Handler是Go程序执行的开始.从主调用 lambda.start ,使用处理函数调用执行.请注意,要添加的处理程序将是 main .
在此处观察代码以了解和减去;
func main() { // Make the handler available for Remote Procedure Call by AWS Lambda lambda.Start(hello) }
按照下面给出的屏幕截图&减去;
现在,保存该功能并进行测试.您可以看到执行结果如下所示.
相应的日志输出将如下所示 :
Go中的AWS Lambda为上下文提供以下全局变量和属性.
MemoryLimitInMB : 内存限制,以aws lambda配置的MB为单位.
FunctionName : aws lambda函数的名称.
FunctionVersion : 执行aws lambda函数的版本.
LogStreamName : cloudwatch日志流名称.
LogGroupName : cloudwatch组名.
上下文中可用的属性为 :
这是调用AWS Lambda函数时获得的AWS请求ID.
这包含通过AWS Mobile SDK调用时有关客户端应用程序和设备的详细信息.它可以为null.客户端上下文提供客户端ID,应用程序标题,版本名称,版本代码和应用程序包名称等详细信息.
ARN调用函数.非限定ARN执行$ LATEST版本,别名执行它指向的函数版本.
它提供有关Amazon Cognito标识的详细信息与AWS mobile SDK一起使用时的提供程序.
添加到 main.go 的更改以打印上下文详细信息 :
// main.go package main import ( "context" "log" "github.com/aws/aws-lambda-go/lambda" "github.com/aws/aws-lambda-go/lambdacontext" ) func hello(ctx context.Context) (string, error) { lc, _ := lambdacontext.FromContext(ctx); log.Print(lc); log.Print(lc.AwsRequestID); log.Print(lc.InvokedFunctionArn); return "Hello Lambda", nil } func main() { // Make the handler available for Remote Procedure Call by AWS Lambda lambda.Start(hello) }
我们需要导入 log 和 lambda context 与Go一起使用.上下文详细信息如下 :
func hello(ctx context.Context) (string, error) { lc, _ := lambdacontext.FromContext(ctx); log.Print(lc); log.Print(lc.AwsRequestID); log.Print(lc.InvokedFunctionArn); return "Hello Lambda", nil }
您可以在测试上述代码时观察以下输出 :
使用 Go ,您可以使用log或fmt模块记录数据,如下所示 :
// main.go package main import ( "log" "fmt" "github.com/aws/aws-lambda-go/lambda" ) func hello() (string, error) { log.Print("Hello from Lambda Go using log"); fmt.Print("Hello from Lambda Go using fmt"); return "Hello Lambda", nil } func main() { // Make the handler available for Remote Procedure Call by AWS Lambda lambda.Start(hello) }
相同的输出如下所示 :
您可以看到日志CloudWatch也.为此,请转至AWS服务并选择cloudwatch,然后单击左侧的日志.现在,在列表中搜索Lambda函数以查看日志 :
您可以使用errors模块在AWS Lambda中创建自定义错误处理,如下面的代码所示 :
// main.go package main import ( "errors" "github.com/aws/aws-lambda-go/lambda" ) func hello() error { return errors.New("There is an error in the code!") } func main() { // Make the handler available for Remote Procedure Call by AWS Lambda lambda.Start(hello) }
上面显示的代码的输出如下所示 :