aws lambda_AWS Lambda:简介

aws lambda

现代基础架构的许多部分本质上是事件驱动的,或者可以用事件驱动的模型来表示。 例如,我们要发送欢迎电子邮件以进行新注册,每当达到某些负载指标时就按比例放大或缩小系统,或在为系统创建新的管理员帐户时向工程团队发送通知。 所有这些任务都带有操作开销。

对所有这些事件进行管理和响应都需要复杂的基础架构,因此通常我们只是将它们放在一起进行一个控制器操作,或者使用在与我们的应用程序相同的进程中运行的观察者。 随着部分开始相互交织,这使代码库变得更加复杂。

大多数团队开始将这些任务推给后台工作人员,但是以这种方式管理任务所必需的基础结构也是开销。 因此,后台工作人员通常仅限于最重要的任务。 当它们不会被事件自动触发而是需要通过代码库触发时,尤其如此。 这样做会增加代码的复杂度,以便了解哪个部分触发了哪个事件。

作为最大的云基础架构提供商,AWS必须多次听到电话来解决此问题。 因此,在AWS reInvent中,他们启动了AWS Lambda 。

AWS Lambda将强大的事件基础架构与简单的部署模型结合在一起。 它使您可以编写小型NodeJS函数,这些函数将与各种服务或您自己的代码触发的事件的事件元数据一起调用。 将来将支持更多语言。 此外,他们还在演讲之一中阐述了他们在AWS reInvent上对事件驱动基础架构的看法。

AWS Lambda,基础知识

Lambda目前处于Beta预览中,但可供所有人试用而无需任何进一步的注册。 如前所述,它本身就支持节点,但是您也可以通过Node执行任何二进制文件,如本博客文章中所述 。 定价是每100毫秒执行一次,使用不同的层,具体取决于为该功能分配的RAM大小。

部署到Lambda就像压缩所有代码并调用api函数或cli命令并将zip文件推送到Lambda一样简单。 这允许在运行Lambda函数时可以使用任意文件。 然后,Lambda启动节点VM并调用节点功能。 对于每个后续请求,除非一段时间未执行任何功能,否则将使用相同的实例。 您可以在Lambda总经理蒂姆·瓦格纳(Tim Wagner)最近的博客文章中阅读有关此细节的更多信息。

事件来源

当前,AWS支持S3事件,Kinesis Streams或最近发布的DynamoDB Streams,并且当然可以手动触发您自己的事件。 这已经允许各种应用程序利用Lambda。 正如他们在演示文稿中提到的以及随后的质量检查一样,SQS和SNS是此事件模型的自然扩展。

一个例子

我已经实现了一个非常简单的Hello World示例,以帮助您入门。 作为前提条件,您需要在本地安装awscli,并需要通过本地的完全管理员访问权限进行身份验证。 按照Lambda控制台中的Lambda设置来创建一个IAM执行角色

aws lambda_AWS Lambda:简介_第1张图片

该存储库包含用于上载和调用Lambda函数的脚本,该脚本将打印一个简单的Hello World。

Anders Janmyr最近发布了带有更多示例的博客文章 。

事件改变了我们构建基础架构的方式

通过为我们提供轻松应对事件的基础架构,我们现在可以通过组合简单的组件来解决复杂的问题。 想象一下缩放问题:

特定基础架构的请求时间过长,并且触发了事件。 对事件做出React的Lambda函数从正确的AMI启动新服务器。 启动服务器会触发服务器创建的事件。 每当新服务器启动时,就会调用另一个Lambda函数,以检查新服务器是否在vpc中,并且端口均已正确关闭。 服务器启动并进行运行状况检查之后,又有另一个事件触发,我们将该新服务器放入ELB。

通过链接这些功能,它们各自解决了一个特定的问题,但将它们组合在一起,可针对更大的工作流程。 将来也可以通过各种方式将它们组合在一起。

其他示例是每当有新客户加入并在数据库中创建新客户时发出欢迎电子邮件,或自动检查任何新的IAM用户/组/角色是否有过多权限。 通过对DynamoDB表更改或数据库系统中可能发生的其他事件做出React,我们可以将Lambda用作构建应用程序的主要工具之一。 这将许多扩展挑战转移到了Lambda上,并确保我们可以专注于构建产品。

我们将来如何使用它

Codeship是一个固有的事件驱动系统。 我们可以看到许多将Lambda包含在我们的基础架构中的方式,其他人也会对此感兴趣。 从简单的后台任务到扩展和运行状况检查,它可以用于各种用例。

Lambda团队提出的最有趣的观点之一就是共享功能的潜力。 由于其标准的事件模型,将来有可能轻松共享用于常见操作的代码。 共享将进一步减少我们必须编写的代码,并使基础架构更加简单。

紧贴功能

管理数十个小型服务和功能非常Swift。 您想对基础结构中发生的事情以及哪个事件触发哪个功能进行概述。 通过拥有一个单一的受管理入口点,AWS可以构建一个不错的UI,外部团队也可以从AWS API中读取内容。

我们已经将复杂性从构建和管理较低级别的基础架构转移到了掌握最基础的架构。 这本质上是一个更好的问题。 现在,不仅是我们的问题,还有每个人的问题:我们,AWS和每个使用Lambda的人。 这创造了足够的动力来共同很好地解决这个问题。

想象一下一个系统,该系统跟踪Lambda函数执行的所有交互,因此能够跟踪整个基础结构中的任何功能链,并向您显示函数之间的依赖关系。 尽管这仍然是虚构的,但AWS竭尽全力确保我们对Lambda基础架构中发生的事情有深刻的见解。

结论

AWS Lambda是另一种抽象,它将我们必须构建和维护的内容的必要性降至最低。 通过为我们提供可扩展的,基于事件的基础结构,我们可以拆分由于操作复杂性而以前可能不想拆分的任务。

“ AWS Lambda是另一种抽象,它降低了我们必须构建的内容的必要性。” @codeship

点击鸣叫

今天,我们可以通过许多独特的Lambda函数捕获在一个整体应用程序中完成的许多任务。 这样做将有助于构建面向服务的体系结构,而不会增加操作开销。 Lambda还负责服务之间的消息传递层,从而降低了面向服务的体系结构难题中另一部分的复杂性。

我们目前正在与AWS Lambda团队合作,以与Codeship建立集成,从而使Lambda的入门更加容易。 注册预览版,然后尝试使用Lambda。 它将成为将来在AWS上构建的重要组成部分。

翻译自: https://www.javacodegeeks.com/2015/03/aws-lambda-an-introduction.html

aws lambda

你可能感兴趣的:(python,java,大数据,数据库,编程语言)