查看原文
其他

大咖专栏 | 带您玩转Lambda,轻松构建Serverless后台!

2017-04-18 AWS


大咖专栏

大咖专栏主要刊登亚马逊AWS诸位大咖亲自撰写的Blog,内容涉猎广泛,话题讨论前沿,且与实战紧密相连。我们非常欢迎小伙伴们在评论区留言,与大咖互动交流!


今天为大家撰文的大咖,是我们的AWS解决方案架构师——毛郸榕老师。

毛郸榕

AWS解决方案架构师

毛郸榕负责基于AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内的应用和推广。他毕业于北京航空航天大学云计算专业,硕士,毕业后直接加入亚马逊AWS中国,在大规模后台架构、自动化运维等方面有着丰富的实践经验。目前他在集中精力学习新一代无服务器架构设计。

Amazon CTO Werner Vogels曾经在AWS re:Invent大会上提到: 如果把云计算理解成一个执行环境,那么,在这个环境里,函数(即业务逻辑的载体)+数据(即跟业务相关的输入与输出)就是应用的核心。有了Functions、Data、Event这三者,其它任何代码和框架,无非是整个应用的胶水和UI罢了。那么,最理想的情况就是用最少的时间写胶水,将更多的时间投入到核心应用的开发中,甚至,彻底实现整个软件栈的微服务化。


那么能不能做到呢?答案是肯定的。AWS Lambda也在这样的背景下应运而生了,其实在很多人眼里,Lambda是一个具有“革命性”的服务,我本人也非常喜欢Lambda这个服务,因为它给我的感觉是: 轻、快、高可用!能够快速将想法写成代码,并应用到生产,不需要关心底层基础设施的运维。接下来,让我们一起搭建一个serverless的后台!

1. AWS Lambda怎么用?

怎么学习Lambda呢?让我们从一个简单的数学问题开始,10以内乘法和加法运算,获得随机的一个数字。代码有注释,如下:

//Node.js尽量全使用严格模式

'use strict';

//利用console.log可以将日志自动打到CloudWatch里面

console.log('Loading function');

exports.handler = (event, context, callback) => {

    //定义一个最小值为2

    var min = 2;

    //定义一个最大值为10

    var max = 10;

    //生成一个随机数,乘以最大值,再加上一个最小值

    var generatedNumber = Math.floor(Math.random() * max) + min;

    //利用callback回调,得到结果。

    callback(null, generatedNumber);

};

接下去,然后选择Lambda服务:

创建一个Lambda Function:

选择Node.js 6.10的环境:

当然,Lambda目前支持C#、Node.js、Python、Java,后续会支持很多的语言比如Go、PHP、Ruby等。换言之,之后任何能在Linux上跑的环境都能在Lambda上运行。

接下去把上面那段代码拷贝进去,选择“Role”角色,这其实就是Lambda执行时所拥有的权限。当然,你可以通过IAM服务创建一个新的Role,或者选择已经存在的Role。

然后点击“Create Function”,接着就会看到:

好!Lambda创建成功了!在Lambda上方点击Test,进行测试,能看到输出的结果。细心的你已经发现,代码运行的时间只有0.3ms哦!

查看Lambda执行的结果:

您可以多次点击test,每次输出的结果都不一样,这是因为,代码一开始生成了一个随机数,所以每次输出的结果也都是随机的。

您可以点击“View logs in CloudWatch”,能看到所有Lambda运行相关的日志。AWS已经把这部分的日志已经自动集成到CloudWatch里面了。

如果你想结合自己常用的日志分析工具,比如sumologic,可以再用一个Lambda将CloudWatch Logs的日志导出。

在接下来的内容里,我们会介绍:

2. Lambda + API Gateway

3. Lambda + API Gateway + 传参

4. Lambda快速部署到云端

5. Lambda + CloudWatch Event

6. Lambda + DynamoDB –> 数据写入到数据库

7. Lambda + DynamoDB –> 数据从数据库读取

8. Lambda + API Gateway + DynamoDB

9. Lambda + API Gateway + DynamoDB + S3 + CloudFront

10. Lambda + CodeCommit + CodePipeline + CodeBuild + CloudFormation


请感兴趣的小伙伴点击“阅读原文”

或扫描/长按识别下方的二维码

阅读完整版文章


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存