抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

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

2018 年 2 月 06 日

看新闻很累?看技术新闻更累?试试下载 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 )关注我们。

2018 年 2 月 06 日 18:001817
用户头像

发布了 34 篇内容, 共 16.5 次阅读, 收获喜欢 45 次。

关注

评论

发布
暂无评论
发现更多内容

开启“观察者模式”,跳出灵魂看自己

小天同学

日常思考 个人感悟

第一周练习1 食堂就餐卡系统设计

王鑫龙

极客大学架构师训练营

Hyperledger Fabric基础知识

程序那些事

区块链 以太坊 超级账本 hyperledger fabric

PostgreSQL权限控制

唯爱

读笔 | 听说你也想辞职去摆摊?何不先收下这份秘籍

张鸱鸺

读书笔记 摆地摊 社会话题

IT自由职业者是怎么样的感受和体验

奈学教育

IT

从软件架构说起

傻傻的帅

架构 架构要素 架构设计原则

架构师训练营第一周-食堂就餐卡系统设计

王铭铭

作业二:根据当周学习情况,完成一篇学习总结

LN

【架构师训练营】第1周作业2—学习总结

花生无翼

分布式账本简介

程序那些事

区块链 分布式系统 区块链技术 hyperledger fabric

架构师训练营-第一周学习总结

hellohuan

极客大学架构师训练营

食堂就餐卡系统架构设计文档

hifly

极客大学架构师训练营 UML 架构文档 部署图 时序图

架构师训练营第一周命题作业

兔狲

干货|微服务线上生命周期管理

博文视点Broadview

容器 微服务 微服务架构 微服务冶理 架构师

架构师训练营-第一周-食堂就餐卡系统设计

Anrika

架构师 极客大学架构师训练营

架构师训练营第1周作业一:食堂就餐卡系统设计

sunpengjian

架构师训练营第1周_学习总结

方舟勇士

课程总结

深圳各大知名办公园区引进 GoWork 智能楼宇管理系统,开启商业地产行业的春天

Geek_116789

架构师训练营第一周学习总结

围绕工作的务实学习

推荐几款基于 Markdown 语法在线制作简历的平台

JackTian

GitHub 网站 markdown 简历 工具软件

Fabric的6大特性

程序那些事

区块链 blockchain 区块链技术 hyperledger fabric

食堂就餐卡系统设计

hellohuan

架构 极客大学架构师训练营

ZooKeeper核心原理及应用场景

古月木易

食堂就餐卡系统架构设计

任小龙

如何使用UML做需求分析与系统架构

已昏懒人

UML 架构文档

ZooKeeper核心原理及应用场景

奈学教育

zookeeper

【话题讨论】「世界上最好的语言」?25周岁的 PHP “配” “不配”

InfoQ写作平台官方

php 写作平台 PHP25周年 活动专区

IT自由职业者是怎么样的感受和体验

古月木易

IT职场

ChaosBlade:从零开始的混沌工程(二)

郭旭东

云原生 混沌工程

谈谈阿里云发布新一代容器、Serverless 等云原生产品

关贺宇

阿里云 容器 云原生 中间件

Study Go: From Zero to Hero

Study Go: From Zero to Hero

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