服务
关于
CloudProse博客
Think FaaS播客

压缩并交付:AWS上的无服务器部署-Think FaaS播客

无服务器被誉为更快,更容易,但是,构建和部署无服务器应用程序的过程仍然有些痛苦。
福雷斯特Brazeal Trek10 191210 171202
阿甘(Forrest Brazeal) | 2018年3月29日

2018年3月29日,星期四

在Google Play上订阅 订阅苹果播客

成绩单

嗨,我是Trek10的Forrest Brazeal,这是“ Think FaaS”,在这里我们比运行Lambda函数花费更少的时间了解无服务器计算的世界。因此,请紧紧等待五分钟-是时候开始思考FaaS了。

与传统的Web开发相比,无服务器被吹捧为更快,更轻松。在很多方面,这都是对的-您不必配置和管理整个服务器,并且在最佳情况下,您的总代码投资可以是配置文件中的单个处理函数。但是在现实世界中,代码更加复杂,构建和部署该代码的过程可能会有些痛苦。

那是因为您不能依赖于习惯使用的已建立的Web开发框架(例如Rails或Java Spring)来生成可在Web服务器上运行的代码工件。相反,您的函数源代码通常包装在一个zip文件中,然后您将该zip文件直接上传到云提供商。

同时,这是分发一堆代码的最简单方法,也是最难管理的方法,因为当您开始添加第三方依赖项时,该zip文件很快就会变得难以管理。因此,由于这是一种以AWS为重点的播客,因此让我们看一些在AWS上管理无服务器代码的不同技巧。

请记住,您本地的开发环境与Lambda不太相似。

Lambda函数受到严格控制-除了/ tmp目录之外,它们无法访问基础文件系统,并且它们在Amazon的自定义Linux发行版上运行。您将无法在Lambda函数本身中安装软件包。因此,您必须确保该功能需要的所有依赖项(例如NPM或pip软件包)都已包含在该zip中。

当您拥有所谓的本机或OS依赖项时,这会变得更加困难。例如,如果您要为API网关编写Lambda自定义授权者,则可能需要一些加密库来解码和验证令牌。这些库可能具有C头文件,这些头文件必须在Amazon Linux上而不是在本地开发机器上进行编译。因此,如果没有任何框架可以帮助您,您将不得不在本地启动EC2实例或Docker容器,以获取正确版本的依赖项,然后手动将其复制到zip文件中。

如果您每次都临时采用此方法,则该过程绝对会分散并且非常令人沮丧。幸运的是,在过去几年中出现了一些工具,这些工具对于使创建zip文件尽可能轻松自如地起到了很大的作用。

考虑无服务器框架…

无服务器框架 在过去的几年中,它是无服务器生态系统中涌现的各种部署工具中最有名的,当然也是最成熟的。他们使用多种云,它们是开源的,最重要的是,它们拥有一个插件生态系统,可以让您和我这样的人扩展基本功能。

例如,作为Python家伙,我真的很喜欢 无服务器python要求 插入。它将查看requirements.txt文件中的pip软件包列表,并在部署时将这些软件包加载到zip中。就像在命令行中运行“无服务器部署”一样简单。如果您有那些讨厌的本机依赖项,​​该插件甚至可以在您的开发机器上启动一个Amazon Linux容器。有一些插件可以让您在本地模拟Lambda和DynamoDB等服务,因此您可以离线测试服务。 Trek10是无服务器框架合作伙伴,我们也贡献了一些插件。很酷的东西。

…或考虑使用SAM。

AWS无服务器部署中的另一大参与者是 SAM,它代表无服务器应用程序模型,是一种AWS工具,在过去一年左右的时间里一直吸引着很多人。 SAM的核心是CloudFormation的扩展,它是“无服务器感知”的:与原始CloudFormation相比,它使创建Lambda函数,API网关和DynamoDB表之类的通用无服务器资源的过程更加容易,并使您可以将函数连接到只需几行配置即可完成事件。

SAM也有一个本地开发选项,称为 SAM本地,支持一些本地测试和调试。这项服务仍处于测试阶段,坦率地说,我还没有取得很大的成功,但是值得关注。

AWS还发布了其他一些无服务器工具,特别是 圣杯,这是用于部署Python Lambda函数的Flask的简化版本。但是无服务器框架和SAM现在是最大的两个。

那么哪个最好呢?每个都有其优点和缺点。 SAM具有与CloudFormation无缝集成的优势,并开始与CodeDeploy等其他AWS服务挂钩。无服务器框架具有出色的插件生态系统,并且在帮助您整理zip文件方面仍然要好得多。现在,如果您需要更多的支架来构建复杂的代码工件,那么我将为简单的应用程序和无服务器框架选择SAM。从长远来看,我希望SAM能够变得更好,并使这一选择更加艰难。但是对于无服务器开发人员来说,这是个好问题。

无论如何,我得自己寄一些拉链。同时,您可以在Twitter上关注Trek10 @ Trek10inc,我也在那里 @forrestbrazeal,我们将在下一集Think FaaS中与您见面。

作者
福雷斯特Brazeal Trek10 191210 171202
阿甘(Forrest Brazeal)