看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!
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::<account-id>:role/<role> \ --handler main </role></account-id>
此外,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
感谢冬雨对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论