ServerLess的好伙伴——一些有用的NPM包

本文涉及的产品
简介: 本文讲的是ServerLess的好伙伴——一些有用的NPM包【编者的话】本文介绍了在基于AWS Lambda进行Serverless应用开发的过程中可以使用的一些工具,包括可以支持babel到ES5的转换的Serverless框架插件,管理lambda函数的命令行工具node-lambda,DynamoDB的数据映射工具Vogels,可以本地运行DynamoDB的Dynalite以及处理JavaScript代码中的promises的工具BlueBird。
本文讲的是ServerLess的好伙伴——一些有用的NPM包【编者的话】本文介绍了在基于AWS Lambda进行Serverless应用开发的过程中可以使用的一些工具,包括可以支持babel到ES5的转换的Serverless框架插件,管理lambda函数的命令行工具node-lambda,DynamoDB的数据映射工具Vogels,可以本地运行DynamoDB的Dynalite以及处理JavaScript代码中的promises的工具BlueBird。

AWS Lambda是一个年轻的产品;它是去年4月份正式发布的并一直运行Node v0.10,直到今年4月份才支持v4.3。对于我们这些ES2015的粉丝来讲,4.3版本的支持依然没有给我们所有的我们所期待的 有趣的功能 。然而,根据AWS发布新功能的速度来看,我们可以得到所有有趣的功能只是时间问题。

Serverless框架(v0.5)有一些有趣的插件可以支持babel到ES5的转换。或许你不想这么做,因为当出错的时候的你更希望看到有用的堆栈追踪信息而不是被告知类似于“在第2行第593列出错了”的模糊信息,但是有这么一个选项始终是好的。感谢人们开发了让我们生活变得更容易的工具。更好的是我只需要使用下面的一个命令就可以获取这些工具:
npm install -g serverless

我已经不再需要用来管理和部署的我的诸多函数的方法。

或许你需要一些更轻量级的工具,例如 node-lambda ,这是一个非常直接的管理lambda函数的命令行工具,它非常轻量、灵活和中立。它非常易于安装而且有很多配置选项。当你要认真处理Lambda的工作原理甚至是当你的Lambda需求很简单时,node-mambda都是一个很好的起点。我从node-lambda转到Serverless框架是因为我需要CloudFormation和API网关所支持的所有功能(以及插件),但是我还是会毫不犹豫的再次使用node-lambda,一个非常好的工具。

DynamoDB是一个精巧抽象的NoSQL数据库,但是它的API不是那么易用。有一个非常棒的包叫做 Vogels (我想是根据作者的名字命名的),它是一个极好的DynamoDB的数据映射工具。我已经使用了几个月了,觉得已经离不开它了。你可以使用 Joi  schema validator来定义你的数据库模型。它有一些内置的东西例如产生和管理时间戳。增删改查的操作和查询都非常容易。仅仅有因为其完善的文档都值得赞扬,所有的东西都有实例,非常好。有一个问题是在过去几个月都没有更新,不过最近有一个代码的 分支 被产生用来继续做维护和开发。不要因为这个小问题阻止你继续使用这个工具 – 这是一个被充分测试的和有效率的工具。

对Lambda进行本地测试可能会是很复杂的,主要是因为操作系统的区别(除非你用Docker – 如果感兴趣请参阅 docker-lambda ),你无法模拟CPU或者内存的限制。但这并不意味着一切必然是那么困难,你可以用 Dynalite 本地运行DynamoDB。你可以用跟DynamoDB相同的方式管理所有的条目,这就是重点所在。你仅仅需要配置你的AWS API去使用这个数据库,AWS自己也提供了 DynamoDB Local ,但是这是不那么好。Dynalite没有图形界面,但是功能上是完全没问题的。

如果你正在使用Serverless框架,你就可以用使用 Offline 或者 Serve 插件来测试你的API网关配置。你可以快速测试你的请求而无需持续部署或者担心触碰到配额(但是谁会担心这个呢?)。

虽然不是直接跟AWS或者Serverless应用开发相关,但我觉得还是要说一下 Bluebird 。如果你在你的JavaScript代码中没有使用promises,看一下他们是如何处理异步代码的管理和测试是一个很好的主意。我最喜欢Bluebird的一点是它可以‘promisify’一个库,只要传入一个库它将会把所有的回调函数转换成promises。如下所示:
import Promise from 'bluebird';
const s3 = Promise.promisifyAll(new AWS.S3());
// Some config...
s3.putObjectAsync(options)
.then((object) => {
// Do something else.
});  

你无需担心回调函数陷阱或者任何对于promises的滥用。而且当你理解了细节之后代码也非常易读。

这些就是我喜欢用的并且希望跟大家分享的几个工具。 Lodash 也值得一提,它在使你的代码保持专注和小尺寸方面做得非常棒。

原文链接:Serverless buddies — NPM packages that will make your life easier(翻译:李光成)

==============================================================
译者介绍

李光成,IBM中国研究院资深研究员,研究方向是云计算基础设施及技术。目前在做的是Docker方面的研究项目。

原文发布时间为:2016-07-18

本文作者:李光成

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:ServerLess的好伙伴——一些有用的NPM包

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
13天前
|
前端开发 小程序 API
【微信小程序】-- 使用 npm 包 - API Promise化(四十二)
【微信小程序】-- 使用 npm 包 - API Promise化(四十二)
|
13天前
|
资源调度 小程序 前端开发
【微信小程序】-- 使用 npm 包 - Vant Weapp(四十一)
【微信小程序】-- 使用 npm 包 - Vant Weapp(四十一)
|
13天前
|
资源调度 小程序 前端开发
【微信小程序】-- npm包总结 --- 基础篇完结(四十七)
【微信小程序】-- npm包总结 --- 基础篇完结(四十七)
|
3月前
|
JavaScript
Nodejs 第七章(发布npm包)
Nodejs 第七章(发布npm包)
24 0
|
3月前
查看 npm 包下载量(简单快捷,数据精确)
查看 npm 包下载量(简单快捷,数据精确)
140 0
|
3月前
|
JavaScript 安全 Windows
NPM包的安装、更新、卸载
NPM包的安装、更新、卸载
|
2月前
|
资源调度
#发布npm包遇到错误,因为用了淘宝镜像地址的原因的解决方法-403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.cou
#发布npm包遇到错误,因为用了淘宝镜像地址的原因的解决方法-403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.cou
145 0
|
3月前
|
JavaScript 前端开发
实现自动扫描工作区npm包并同步cnpm
前言 在开发一个多npm包的项目时,时常会一次更新多个包的代码,再批量发布到 npm 镜像源后。 由于国内网络环境的原因,大部分都会使用淘宝的镜像源进行依赖安装,为了确保发布后,通过淘宝源能够顺利的安装,通常会手动同步一下 cnpm sync vue react 但在一些大型的 monorepo 的多包工程里,手动输入包名是一件非常繁琐的事情,所以准备把输入的过程简化一下,改成自动扫描工作区的包名,然后自动同步。 进而有了这个工具 工具的使用 直接通过 npx 运行即可,将自动扫描所有的包
|
4天前
|
Java Serverless 测试技术
Serverless 应用引擎常见问题之上传自定义jar包自动vpc启动报错如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
28 4
|
27天前
|
供应链 JavaScript Shell
供应链投毒预警 | 恶意NPM包利用Windows反向shell后门攻击开发者
本周(2024年02月19号),悬镜供应链安全情报中心在NPM官方仓库(https://npmjs.com)中发现多起NPM组件包投毒事件。攻击者利用包名错误拼写方式 (typo-squatting)在NPM仓库中连续发布9个不同版本的恶意包,试图通过仿冒合法组件(ts-patch-mongoose)来攻击潜在的NodeJS开发者。
25 2

热门文章

最新文章

相关产品

  • 函数计算
  • 推荐镜像

    更多