BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Sergio De Simone 关注 11 他的粉丝 ,译者 张兰月 关注 0 他的粉丝 发布于 2018年2月7日. 估计阅读时间: 4 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

看新闻很累?看技术新闻更累?试试下载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:::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


感谢冬雨对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT