AWS Lambda已支持用Go语言编写的无服务器应用

Go语言是亚马逊最近才在AWS Lambda提供支持的语言之一,其它语言包括Node.js、Python、Java和C#。

为了让你的Go代码能够在AWS上部署,你的代码首先必须位于一个处理程序 (handler) 函数内,然后AWS会将这个函数传入lambda.Start()。在被调用时,lambda.Start()并不生成返回值,它会与Lambda内部端点进行通信,并将调用请求传递给处理程序。该处理程序函数可能会有0-2个参数,其中包括请求对象,并且该函数可能会返回0-2个值,其中包括一个error对象,例如:

// main.go package main import ( "github.com/aws/aws-lambda-go/lambda" ) func hello(request Request) (string, error) { return "Hello!", nil } func main() { // Make the handler available for Remote Procedure Call by AWS Lambda lambda.Start(hello) }

AWS要求编写的Go代码必须能在AWS Lambda for Linux里使用,并且需要将代码压缩为zip文件,以便于在AWS Lambda中进行部署。你可以运行以下代码来实现它:

GOOS=linux go build -o main main.go zip main.zip main

该zip文件的名字必须与被部署的Lambda函数的Handler配置属性相匹配。

在代码被压缩为zip文件后,你就可以通过以下AWS CLI来部署它了:

$ aws lambda create-function \ --region us-west-1 \ --function-name HelloFunction \ --zip-file fileb://./main.zip \ --runtime go1.x \ --tracing-config Mode=Active --role arn:aws:iam:::role/ \ --handler main

此外,AWS还为Go提供了AWS X-Ray。AWS X-Ray是一组类库,它可以生成跟踪数据,以便于X-Ray守护进程(daemon)分析和调试Go函数。

为了让开发者用Go来开发AWS Lambda函数更加简便,亚马逊公布了一个GitHub资源库,其中包含大量库、样本和工具。你可以点击此链接获取更多有关如何在AWS上测试、构建和部署Go代码的信息。

查看英文原文AWS Lambda Now Supports Go for Serverless Applications

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e94d7dc4497875df397feb5d72ca0afb.html