400-638-8808
|
微信公众号
Go 语言支持是 AWS 最近新增的。要使用 Go,您需要在创建 AWS Lambda 函数时从 AWS 控制台选择语言。在本章中,让我们详细了解 Go 语言中的 AWS Lambda 函数。
安装 Go
首先,我们需要 Go 语言支持。在本节中,我们将通过以下详细信息开始在 Go 中使用 AWS Lambda。这是 Go 下载的官方网站:https://golang.org/dl/
在 Windows 上安装
请注意,对于 Windows,有 32 位和 64 位下载可用。下载 zip 文件并解压缩内容并将其存储在您选择的目录中。
添加在 ControlPanel---> System---> Advanced system settings 中可用的环境变量。
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 命令执行上述文件,然后压缩可执行文件。
我们一直使用的文件结构如下所示-
要编译代码 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 函数-
带有 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)
}
我们需要导入 log 和 lambda 上下文 以在 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)
}
上面显示的代码的输出如下所示-
作为AWS核心代理商,选择天.下.数.据的优势
1、专属客服协助注册AWS,或提供注册好的账号直接使用
2、支持收U等多币种支付代付,无额外服务费用
3、AWS多种产品类型,更高产品租赁权限
4、针对大客户,AWS专属折扣优惠
5、7x24小时专属客服,在线解答各种疑问
AWS亚马逊云代理商哪家好?推荐找天 下 数 据,可享受高额折扣、高额返现优惠,详询电话40 0-63 8-88 08 官网:https://www.idcbest.com/2023/aws.asp
天下数据手机站 关于天下数据 联系我们 诚聘英才 付款方式 帮助中心 网站备案 解决方案 域名注册 网站地图
天下数据18年专注海外香港服务器、美国服务器、海外云主机、海外vps主机租用托管以及服务器解决方案-做天下最好的IDC服务商
《中华人民共和国增值电信业务经营许可证》 ISP证:粤ICP备07026347号
朗信天下发展有限公司(控股)深圳市朗玥科技有限公司(运营)联合版权
深圳总部:中国.深圳市南山区深圳国际创新谷6栋B座10层 香港总部:香港上環蘇杭街49-51號建安商業大廈7樓
7×24小时服务热线:4006388808香港服务电话:+852 67031102
本网站的域名注册业务代理北京新网数码信息技术有限公司的产品