AWS Lambda从入门到精通

简介: AWS Lambda从入门到精通

AWS Lambda从入门到精通

Amazon发布AWS Lambda服务,云计算的抽象层次被进一步提升了,这项创新的服务允许开发者把一组函数打包发布,然后由AWS平台来负责具体的管理和执行。在这种情况下,人们不再需要主动管理依赖的基础框架和操作系统,也无需处理运行阶段所面临的高可用性和可扩展性问题。每一个函数都有属于自己的安全配置,这些配置可以借助Amazon Web Services(AWS)的标准安全功能,设定函数的执行范围和对资源的访问权限。

介绍

AWS Lambda采取了一种新颖的计费方式,因为它能为用户更加高效实用地调用底层资源。在AWS Lambda环境下,计费的方式是:

·根据函数被调用的次数。

·全部调用的累计执行时间(以100毫秒为单位)。

执行时间的计费和内存的使用量呈线性关系,如果把内存容量加倍,但是保证函数执行的时间不变,对应的费用也将随之加倍。为了让用户有更好的学习和实际操作体验,AWS Lambda的免费资源包(Free Tier)允许用户免费使用一定数量的资源,每月免费资源包的限额是:

·不超过100万次函数调用。

·以1GB内存容量为基准的首个40万秒执行时间。

如果选择较小的内存容量,则可以获得更多的免费执行时间。例如,如果选择128MB(1GB的八分之一)的内存容量,那么AWS Lambda提供的免费执行时间可以长达320万秒(40万秒的八倍)。更直观地说,AWS Lambda每个月可以提供从40万秒(111小时或4.6天)到320万秒(889小时或大约37天)的免费执行时间,具体取决于用户为函数选择的内存容量。

调用AWS Lambda的函数

在调用AWS Lambda的函数时,需要在输入中提供一个事件(event)和一个上下文(context)对象:

·事件是函数获得输入参数的一种方法,通常采用JSON格式。

·上下文对象用来描述执行环境的有关信息以及事件是如何被接收并处理的,类似于传统操作系统的环境变量。

函数可以被同步调用并立刻返回结果)。我们使用同步(synchronous)这个词来表述这类函数调用方式,但是在例如“AWS Lambda API参考文档”或“AWS命令行文档”这些在线文档中,这种调用方式也被称为请求响应(RequestResponse)式调用。

请求响应(RequestResponse)式调用

采用请求响应的同步方式

采用请求响应的同步方式调用AWS Lambda函数,函数收到包括事件和上下文对象的输入信息,执行完毕后立刻返回结果函数同样可以被异步调用。在这种情况下,函数被调用后开始执行,同时立刻返回,并不会输出任何返回值(见图1-3)。我们使用异步(asynchronous)这个词来表述这类函数调用方式,但是在例如“AWS Lambda API参考文档”或“AWS命令行文档”这些在线文档中,这种调用方式也被称为事件(Event)式调用。

数可以执行针对其他资源的创建、更新、删除操作。资源也可以是另一个服务,比如用来发送对外的电子邮件

举例而言,我们可以使用AWS Lambda的日志输入能力来实现一个简单的日志功能,用户通过异步的方式在Node.js中调用

以函数作为应用程序的后端

我们通常倾向于把这些前端程序所依赖的外部逻辑作为应用的后端服务。

为了实现这些外部的逻辑,常规的做法通常是开发一个供移动应用调用的Web后台应用,或与现有的后台应用集成,为浏览器渲染内容。但除了开发一个全新的Web后台应用或修改现有后台应用的功能以外,开发者还可以通过在网页或移动应用的代码中,直接调用一个或多个AWS Lambda函数,由这些函数来完成相应的逻辑执行工作。这些函数就构成了一组无服务器的后端。

为应用程序实现后端逻辑的一个重要原因就是安全,用户访问后端服务时,必须时刻进行认证和授权信息的检验。AWS Lambda沿用了由AWS提供的标准安全框架来控制函数的行为。例如:函数只能读取指定路径的文件、向指定的数据库写入记录。这个安全框架基于AWS Identity and Access Management策略和角色。以此方法,开发者可以更轻松地为代码的执行创造安全的环境,把安全维护整合进开发流程。开发者可以自由地裁剪每一个函数的安全权限,用一组仅具备最低权限的模块,就能轻易实现应用程序。

最低权限是指执行应用时必须获取的基本权限,例如:代码从一个中央存储区读取用户信息并发布到网页上,这样的模块就不需要为其配置写入权限,只需要读取待发信息的子集。任何超越了这个权限的安全设置都可能是潜在的漏洞,加重未知攻击的后果,入侵者往往先攻破一个模块,然后借助模块本身过于宽松的权限设置为跳板,攻击整个系统。

后端应用程序的用例和需求

用户通过后端服务与应用程序交互,请注意后端有一些逻辑和数据。

取决于应用程序计划支持的设备类型数量,使用应用程序的用户可能选择不同的设备。同时支持包括Web界面、移动设备、供高级用户集成第三方服务的Open API等在内的交互方式,正逐渐成为行业标准,也是一款应用取得成功的不二法门。

但审视不同设备与后端通信的接口,我们发现这些接口通常都是不一样的:Web浏览器往往占据主导,因为这些内容都需要被用户界面(动态生成的HTML、CSS、JavaScript和多媒体文件等)和应用后端逻辑(采用API的方式呈现)使用。

如果移动应用是在Web浏览器接口实现之后才开发的,那么后端服务需要在以Web渲染为主的API基础上进行重构,以满足移动应用的需求。不论原始应用是如何开发的,这样的重构通常都不太容易(花费不必要的时间)。这还会导致两套后端应用并存的尴尬局面,一套服务Web界面,另一套服务移动应用和可能的新设备,比如可穿戴设备、家庭自动化系统、物联网等。即使这两套后端被很好地设计,能够共享大部分功能(代码),这也是对开发资源的浪费,因为今后添加每一个新功能都需要理解两套平台上的实现差异,运行更多的测试,在一系列毫无价值的工作上浪费时间。

如果对数据进行分类,把可以导入一个或多个数据库的结构化数据分成一组,把文件之类的非结构化数据分成另一组,我们就能用以下几步,完成对整体架构的简化:

·增加一个安全的Web接口来访问所有的文件存储,这可以成为客户端直接访问的单一资源。

·把一部分的逻辑置于Web浏览器,使用JavaScript客户端与移动端的逻辑逐一配对。从架构的视角来看,这个运行JavaScript的客户端程序,不论是功能实现、安全还是与后端交互的方式,跟移动应用都是一样的。


相关文章
|
2月前
|
Python
lambda函数简介
lambda函数简介
30 0
|
4月前
|
分布式计算 大数据 Java
Scala 入门指南:从零开始的大数据开发
Scala 入门指南:从零开始的大数据开发
|
JSON 监控 JavaScript
|
存储 监控 JavaScript
5.1 软件服务 亚马逊 AWS Lambda|学习笔记
快速学习5.1 软件服务 亚马逊 AWS Lambda
5.1 软件服务 亚马逊 AWS Lambda|学习笔记
|
Python
Python编程:lambda替代品-operator模块
代码中不是很推荐使用 lambda表达式 取而代之的是 operator模块,提供了很多简单函数实现
68 0
|
开发工具
【AWS系列】boto3入门-下篇
下载文件和上传文件是对称的Client、Bucket、Object三个对象提供了、。是并行的,是串行的,这两个函数同样提供了ExtraArgs和Callback参数。描述了下载过程的ExtraArgs的可用参数。
1055 0
【AWS系列】boto3入门-下篇
|
存储 网络安全 API
【AWS系列】boto3入门-上篇
官方介绍:官方文档Boto 是AWS的基于python的SDK(当然还支持其他语言的SDK,例如Ruby, Java等),Boto允许开发人员编写软件时使用亚马逊等服务像S3和EC2等,Boto提供了简单,面向对象的API,也提供了低等级的服务接入。这里需要区分,Boto有两个版本,其中旧的版本boto2已经不推荐使用了,在一些亚马逊新建的region已经不支持旧的Boto2了(貌似中国就是这样的),所以如果开发Python代码的话建议使用Boto3。为什么不推荐Boto2?
1830 0
【AWS系列】boto3入门-上篇
|
存储 弹性计算 API
【AWS系列】什么是Lambda
Lambda 是一项计算服务,可使您无需预置或管理服务器即可运行代码。Lambda 在可用性高的计算基础设施上运行您的代码,执行计算资源的所有管理工作,其中包括服务器和操作系统维护、容量调配和弹性伸缩和记录。您可以使用 Lambda API 调用 Lambda 函数,或者 Lambda 也可以运行函数来响应来自其他AWS服务的事件。只有在需要时 Lambda 才运行您的函数,并且能自动扩展,从每天几个请求扩展到每秒数千个请求。借助 Lambda,您可以为几乎任何类型的应用程序或后端服务运行代码。
497 0
【AWS系列】什么是Lambda
|
存储 运维 监控
AWS S3 Lens使用简介
本文主要对S3 Lens的基本功能及如何使用进行介绍
483 0
AWS无服务开发Lambda系列之本地上传包至Lambda
AWS无服务开发Lambda系列之本地上传包至Lambda
679 0
AWS无服务开发Lambda系列之本地上传包至Lambda