AWS Lambda - Go中的功能

Go语言支持是AWS的最新成员.要使用Go,您需要在创建AWS Lambda函数时从AWS控制台中选择语言.在本章中,让我们详细了解Go语言中的AWS Lambda函数.

安装Go

要开始,我们需要Go Language支持.在本节中,我们将通过以下详细信息开始使用Go中的AWS Lambda.这是Go下载的官方网站: https://golang.org/dl/

Go Programming

现在,按照操作系统下载软件包.按照此处给出的步骤在相应的操作系统上安装Go.

在Windows上安装

观察对于Windows,有32位和提供64位下载.下载zip文件并提取内容并将其存储在您选择的目录中.

添加 ControlPanel --->中可用的环境变量.系统--->高级系统设置.

系统属性

现在,单击 Environment Variables 按钮并添加目录路径,如下所示 :

环境变量Go

你也可以编辑系统变量,如下所示 :

编辑系统变量

完成这些步骤后,您应该可以开始使用Go了.打开命令提示符并检查Go命令的版本.请注意以下屏幕截图.

命令提示符

安装Linux和Mac OS

要在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

使用GO的AWS Lambda函数

返回的程序当build构建一个可执行文件时去.以下是Go with AWS Lambda支持中的简单程序.我们需要导入 github.com/aws/aws-lambda-go/lambda ,因为它具有Lambda编程功能.对AWS Lambda的另一个重要需求是处理程序.

Main.go

// 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函数作为运行时 :

APIws Console Go

创建函数后,上传创建的可执行zip文件上面.

带Go的Lambda函数处理程序

Handler是Go程序执行的开始.从主调用 lambda.start ,使用处理函数调用执行.请注意,要添加的处理程序将是 main .

在此处观察代码以了解和减去;

func main() {
   // Make the handler available for Remote Procedure Call by AWS Lambda
   lambda.Start(hello)
}

按照下面给出的屏幕截图&减去;

功能代码


执行角色去

现在,保存该功能并进行测试.您可以看到执行结果如下所示.

执行结果转到

相应的日志输出将如下所示 :

Log Output Go

使用Go的上下文对象

Go中的AWS Lambda为上下文提供以下全局变量和属性.

  • MemoryLimitInMB : 内存限制,以aws lambda配置的MB为单位.

  • FunctionName :  aws lambda函数的名称.

  • FunctionVersion : 执行aws lambda函数的版本.

  • LogStreamName :  cloudwatch日志流名称.

  • LogGroupName :  cloudwatch组名.

上下文中可用的属性为 :

AwsRequestID

这是调用AWS Lambda函数时获得的AWS请求ID.

ClientContext

这包含通过AWS Mobile SDK调用时有关客户端应用程序和设备的详细信息.它可以为null.客户端上下文提供客户端ID,应用程序标题,版本名称,版本代码和应用程序包名称等详细信息.

InvokedFunctionArn

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中的日志

您可以看到日志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)
}

上面显示的代码的输出如下所示 :

功能错误