Kappa: 简化AWS Lambda部署

Mitch Garnaat 创建了一个名为Kappa的命令行工具。这个工具简化了将“Lambda函数”部署到AWS Lambda上的操作。AWS Lambda是一个计算服务。这个服务基于事件运行代码,并且自动地管理相关的计算资源。

Amazon Web Service (AWS) Lambda服务允许将代码部署到AWS云计算平台中,并将代码与事件相关联,例如网址的点击、在AWS S3 object storage bucket中出现新的文件、或者有新的数据写入一个AWS Kinesis实时流处理实例中。

AWS Lambda能在一个事件发生后的毫秒级别内运行指定的代码。并且,该服务能够自动地管理计算能力、启动必要的基础架构并为每一个事件运行代码。目前AWS Lambda支持能运行于Node.js上的代码。Node.js是一个基于Chrome的JavaScript运行时构建的平台。

Mitch Garnaat是boto,一个AWS Python接口库的开发者。将代码从本地开发环境部署到AWS Lambda时需要一些手工操作的步骤,而且每个步骤需要使用不同的AWS服务。在发现这个问题之后,他创建了Kappa。Garnaat举了一个部署简单的JavaScript函数到AWS Lambda中的例子:当有记录写入一个Amazon Kinesis实例时,调用这个函数。实现这个例子的步骤如下:

  • 编写JavaScript函数(AWS Lambda目前只支持JavaScript)
  • 创建一个IAM角色,使得Lambda函数在执行时能够访问任何需要的AWS资源
  • 打包压缩JavaScript函数及依赖
  • 上传压缩文件到AWS Lambda服务
  • 发送测试数据给Lambda函数
  • 创建一个IAM角色,用于Lambda服务调用你的Lambda函数
  • 从Amazon CloudWatch Logs获取Lambda函数的输出
  • 为Lambda函数添加一个事件源
  • 监视这个Lambda函数的输出

Garnaat表示Kappa的目标是通过简化部署流程,使得部署Lambda函数更加容易,“[Kappa] 尝试处理大量繁琐的细节,从而让你专注于Lambda函数的具体实现”。

Kappa 通过命令行方式执行。AWS Lambda服务的配置存储在本地文件系统的一个YAML文件中。这个配置文件指定了服务细节,例如一个包含了Kappa和AWS Lambda交互时所需认证信息的AWS profile,部署代码的AWS地区,以及触发Lambda函数的事件源属性。

通过使用CloudFormation模版来管理函数执行和调用时所需的AWS Identity Access Management(IAM)角色,Kappa可以自动处理Lambda函数相关的安全要求。Garnaat表示,通过使用CloudFormation来处理IAM功能,角色和策略可以通过事务操作进行创建和更新,并可以使用如git等SCM工具进行版本控制。

Kappa提供了用于部署和执行代码的命令。“deploy”命令会触发所需基础架构栈的创建,将本地创建的Lambda函数打包压缩并上传到AWS Lambda。“add-event-source”命令通过使用在CloudFormation模版中指定的调用角色,可将上传的Lambda函数和指定的事件关联在一起。

Kappa还提供了一个“tail”命令,可用于发现CloudWatch Logs服务中包含有函数输出的日志组名和日志流,并将流中最近的日志事件打印到终端上。

如果需要修改角色、策略或者Lambda函数,那么可以使用Kappa的“deploy”命令。Kappa会处理好CloudFormation上相关的更新,并上传最新版本的函数到AWS Lambda。

Kappa可以使用Python package index(PyPI)进行安装,或者从Github代码库中克隆项目的代码,并根据AWS Advent blog上的说明进行手动安装。读者可以通过Lambda产品页面获取AWS Lambda服务的更多细节。

查看英文原文:Kappa: Simplifying AWS Lambda Deployments

感谢张龙对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(Kappa: 简化AWS Lambda部署)