AWS Lambda教程

AWS Lambda Go

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

安装 Go

首先,我们需要 Go 语言支持。在本节中,我们将通过以下详细信息开始在 Go 中使用 AWS Lambda。这是 Go 下载的官方网站:https://golang.org/dl/
Go Programming
现在,根据操作系统下载软件包。按照此处给出的步骤在相应的操作系统上安装 Go。

在 Windows 上安装

请注意,对于 Windows,有 32 位和 64 位下载可用。下载 zip 文件并解压缩内容并将其存储在您选择的目录中。
添加在 ControlPanel---> System---> Advanced system settings 中可用的环境变量。
系统属性
现在,单击 环境变量按钮并添加目录路径,如下所示-
环境变量转到
您还可以编辑系统变量,如下所示-
编辑系统变量
完成这些步骤后,您应该可以开始使用 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 函数

当构建给出可执行文件时,Go 中返回的程序。下面是一个简单的 Go 程序,支持 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 where 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 调用开始,使用处理函数调用执行。请注意,要添加的处理程序将是 main
观察这里的代码以了解-
func main() {
   // Make the handler available for Remote Procedure Call by AWS Lambda
   lambda.Start(hello)
}
按照下面给出的屏幕截图进行操作-
函数代码
执行角色转到
现在,保存函数并测试它。执行结果如下图所示。
执行结果转到
相应的日志输出将如下所示-
日志输出转到

带有 Go 的上下文对象

Go 中的 AWS Lambda 为上下文提供了以下全局变量和属性。
MemoryLimitInMB-内存限制,以 MB 为单位,在 aws lambda 中配置。 FunctionName-aws lambda 函数的名称。 FunctionVersion-aws lambda 函数执行的版本。 LogStreamName-cloudwatch 日志流名称。 LogGroupName-cloudwatch 组名。
上下文中可用的属性如下-

AwsRequestID

这是您在调用 AWS Lambda 函数时获得的 AWS 请求 ID。

客户端上下文

这包含有关通过 AWS 移动开发工具包调用时的客户端应用程序和设备的详细信息。它可以为空。客户端上下文提供客户端 ID、应用程序名称、版本名称、版本代码和应用程​​序包名称等详细信息。

InvokedFunctionArn

被调用函数的 ARN。不合格的 ARN 执行 $LATEST 版本,别名执行它指向的函数版本。

身份

当与 AWS 移动开发工具包一起使用时,它提供了有关 Amazon Cognito 身份提供商的详细信息。
添加到 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)
}
我们需要导入 loglambda 上下文 以在 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 并单击左侧的 Logs。现在,在列表中搜索 Lambda 函数以查看日志-
检查日志

功能错误

您可以使用错误模块在 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)
}
上面显示的代码的输出如下所示-
函数错误
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4