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

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 本文讲的是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包

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
2月前
|
JavaScript 前端开发 Java
npm学习一:npm 包管理工具 学习、使用。
这篇文章介绍了npm的基础知识和常用命令,包括安装包、查看包信息、管理依赖等操作,并提供了如何删除npm安装的镜像以及如何彻底删除node_modules文件夹的具体步骤。
110 2
|
2月前
|
JavaScript 前端开发 Java
npm学习一:npm 包管理工具 学习、使用。
这篇文章是关于npm包管理工具的学习、使用指南,包括npm概述、基础命令和如何安装webpack。
84 3
npm学习一:npm 包管理工具 学习、使用。
|
2月前
|
资源调度 前端开发 安全
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
137 0
|
3月前
|
数据安全/隐私保护
发布一个npm包
发布一个npm包
124 2
|
5月前
|
运维 Kubernetes Java
阿里云云效操作报错合集之npm包已经发布到了制品仓库,但流水线中拉取依赖时出现404错误,该如何排查
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
阿里云云效操作报错合集之npm包已经发布到了制品仓库,但流水线中拉取依赖时出现404错误,该如何排查
|
4月前
NPM——删除已发布的包
NPM——删除已发布的包
157 1
|
5月前
|
弹性计算 Java Serverless
Serverless 应用引擎操作报错合集之上传自定义JAR包,启动时报错,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
负载均衡 Serverless API
函数计算操作报错合集之如何解决上传二进制包时报错: "Permission denied (os error 13)"
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
5月前
|
弹性计算 Serverless API
函数计算产品使用问题之如何安装插件和配置依赖包
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
JavaScript 前端开发 开发者
从零到一:教你如何发布自己的npm插件包
从零到一:教你如何发布自己的npm插件包

热门文章

最新文章

相关产品

  • 函数计算
  • 推荐镜像

    更多