T6-S4-黄德滨

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

AWSLambda:云中事件驱动的代码黄德滨,合作伙伴解决方案架构师简单问题:•你想把S3存储桶的图片自动创建缩略图•你想检查一下存在DynamoDB中的地址格式是不是正确的…原来的解决方案:•创建一些代理实例把上传的数据下载下来。•对于每个上传文件需要使用一个队列。•创建另外一批实例读取这个队列并执行任务。•需要部署这些服务。•计划整个架构的承载能力,考虑容错机制,长期的平均使用率、突发的高峰使用率等等。•24x7x365监控整个架构利用率、健康状况、安全情况等等•当资源不够使用的时候需要将你的应用迁移到更大的实例类型,并且保持整个环境在迁移过程中保持一致。有没有更好的方式?如果每个AWS的服务都产生事件将怎样?PUTCOPYUPDATEDELETERESTOREAmazonS3AWSLambda–优势事件驱动的自动扩展无服务器亚秒级收费AWSLambda:能力自带你的代码计算“能力级别”自选灵活的调用路径细粒度的权限控制AWSLambda–如何工作部署审计监控&日志无状态什么样的服务器最容易管理?由其他人操心的服务器是最好的选择!AWSLambda五个应用场景无服务器模式的微服务Amazon服务的功能扩展平台的扩展可扩展的移动应用和IoT后台实时的流数据分析实现的需求•不用操心扩展能力/无需配置•内置的部署功能•默认的高可用•BYOC*•无需为闲置付费*BringYourOwnCode使用自己的代码可扩展的移动应用后台一个可扩展的移动应用后台。。。不需要敲代码的移动应用后台使用AWSLambda创建移动应用后台1.创建一个AmazonDynamoDB数据库。2.在Lambda控制台界面选择“SimpleMobileBackend”示例代码。3.使用AWSMobileSDK创建你的应用AWSLambda让我们看一下演示。。。演示:AWSLambda作为应用应用后台创建移动后台应用:各种“插件”需要用户登录?使用AmazonCognito认证。需要根据设备进行渲染?设备信息就在函数上下文对象中。AWSLambdaAWSIoT+AWSLambda设备SDK客户端库组,用以连接、授权和交换消息设备GATEWAY与设备通过MQTT和HTTP协议进行通讯认证授权成熟的认证和加密技术保证安全规则引擎根据规则和AWS服务的路径转换消息设备SHADOW在丢失连接的时候保存thing的状态应用AWSIoTAPI设备注册认证和管理你的thingsLambda函数消息为什么这么容易?消除“在你的环境里运行”和“在客户的环境里运行”之间的距离闲置无需付费内置Web服务器自动补丁自动部署自动扩展内置监控内置日志内置安全HTTP端点深入探讨:编程模式•三种主要语言–Node.js–Java8–Python•加上Scala、Clojure和其他“jvm”语言•后台运行进程–Node.js、Java和Python–也可以使用csh或者你自己的可执行程序•Cron计划执行模式–标准的cron语法–最小5分钟的粒度无服务器的微服务可以直接开放为HTTP端点可以直接在SDK中调用•开发语言–JavaScript–Java–Object-C/Swift–.NET–PHP–Go–Python–Ruby•浏览器•移动端–Android–iOS•各种容器–JVM–Node.js一个全新的全托管架构模型ManagedInternetMobile应用AWSLambda函数AWSAPIGateway缓存AmazonEC2上的端点其他任何公共访问的端点AmazonCloudWatchAmazonCloudFrontAPIGatewayAPIGateway其他AWS服务AWSLambda函数这种模式的关键点•AWSLambda+AmazonAPIGateway意味着没有需要管理的基础架构-我们替你扩展•安全很重要,也很复杂-由AWS的IAM来负责•Swagger导入并生成客户端的SDK-我们可以自动做大部分事情我们要用到的AWS服务AmazonAPIGatewayAWSLambdaAmazonCognitoAmazonDynamoDB提供API服务并路由API调用执行应用的业务逻辑产生临时的AWS证书数据存储让我们看一下演示。。。深入探讨:编程模式•同步或者异步运行代码。。。–AWS命令行接口–AWSLambda自己调用(没错,支持self-hosts模式)–更长的运行时间:最长5分钟•代码是预授权的–选择一个角色Lambda会使用这个角色–跨帐号调用也是支持的–与Cognito和APIGateway一起提供更为健壮的安全架构扩展第三方的平台接入设备的计算资源•AlexaSkillsKit—创建语音应用•AWSLambda作为接入设备的后台/IoT平台Slack演示架构Alexa,tellSlacktosend,“I’mgivingthedemonow.”取出消息(使用AmazonSQS队列)Kevinsays,“Breakaleg!”消息上传(使用SlackAPI)团队(频道用户)SlackGitHub事件响应GitHub事件团队(资源库用户)GitHubAmazonSNS消息AWSLambda–合作伙伴平台为什么那么容易?平台提供者•不用任何主机•不用任何license•不用管理能力•不用运行web服务•低时延同步调用•“触发并忘记”的事件应用开发者•低成本•永远免费节点•没有基础设施•没有代码“模版”•可以选择语言•没有库的限制深入探讨:资源的Sizing•AWSLambda提供23种“能力级别”•更高的级别提供更多的内存和更强的CPU性能–128MB,低CPU性能–1.5GB,高CPU性能•更高的能力级别==执行计算密集型和爆发式的任务时延低•能力级别影响定价•函数运行时间从100毫秒到5分钟之间扩展Amazon服务的功能扩展AmazonS3添加自动压缩功能AmazonS3存储桶事件AWSLambda原对象压缩对象123如何添加一个AmazonS3功能1.随便从网上找一段Java压缩代码示例。2.从AmazonS3事件示例开始:1.从S3上GET原对象2.压缩3.将压缩的版本PUT回S33.选择一些S3存储桶应用这个事件。让我们看一下演示。。。为什么这么容易?请求级别的扩展!•谁知道事件的频率?S3和Lambda!•你不可能低于或者高于配置(依据设计)•根据使用付费可以与多种AmazonAWS服务集成AWSCloudFormation定制化资源…andthelistwillcontinuetogrow!IoT后台AmazonSWF任务AmazonSNS定制化消息AmazonCognito事件触发AmazonS3事件触发AmazonDynamoDB事件触发AmazonKinesis处理器APIGateway微服务实时的流数据分析容易的实时数据流分析架构使用AmazonKinesis汲取数据(PUT纪录)AWSLambda提取纪录你的代码只在每匹纪录处理时运行一次AmazonS3AmazonDynamoDB智能设备点击流数据日志数据AmazonRedshift深入探讨:重试和事件排序•三种可能:–同步调用你的AWSLambda函数。•使用AWSSDK?在这里添加重试逻辑。•使用RESTful直接调用Lambda?你可以完全控制重试。•根据调用决定顺序。–AmazonS3或者SNS触发Lambda函数,或者异步调用你的代码•总共三次重试,然后事件将被忽略•没有顺序(“松散的顺序”)–Lambda获取AmazonKinesis或者AmazonDynamoDB更新流•重试没有限制,有顺序保证题外话:切片和顺序切片1•记录1a•记录1b题外话:切片和顺序切片1•记录1a•记录1b切片2•记录2a•记录2b切片3•记录3a•记录3b切片1切片2切片3•记录3a•记录3b题外话:切片和顺序实践细粒度的价格•以100MS为单位购买•请求费用低•没有按小时、天或者月度计费•没有按设备收费永远不用为闲置付费。免费使用一百万请求和400,000GB计算资源每个月每个客户。构建和部署集成JenkinsGruntAWSCloudFormationAmazonS3合作伙伴版本:开发阶段•开发阶段保持AWSLambda的简单:•上传代码•任何时候都可以修改•最后的更新生效exports.handler=function(event,context){context.succeed(“bye”);}exports.handler=function(event,context){context.succeed(“hi”);}版本:发布•在任何时候都可以将开发发布为一个新的版本:•“复制”一个开发版本到一个编号版本•发布的版本都是只读的(包括配置)•每个函数都是简单的整数计数exports.handler=function(event,context){context.succeed(“bye”);}exports.handler=function(event,context){context.succeed(“hi”);}12Versions版本:调用Lambda函数•开发版本:FunctionName(或)FunctionName:$LATEST•特定版本:FunctionName:1FunctionName:2•命名版本:FunctionName:productionFunctionName:v1_2_3_4版本:别名•可以为任何一个版本命名别名:•可以在代码中使用ARN映射•可以不用修改客户端代码exports.handler=function(event,context){context.succeed(“bye”);}exports.handler=function(event,context){context.succeed(“hi”);}proddevAliasesAmazonAPIGateway:API版本•/prod/my_url_endpoint•MyFunction:prod_relAPI和代码的版本•MyFunction:prod_rel•Function:3•{yourcode}AWSLambda:代码版本我们已经忙了很久。现在该你了。进入AWSLambda控制台,创建一个函数,运行它。(成为在中国的前100万个请求)恭喜,你已经成为一个Lambda函数专家了!添加一个事件源或者一个HTTP端点。创建世界上最简单的移动应用后端。(提示:从内置的CRUD例子开始!)变成AWSLambda粉丝!aws.amazon.com/blogs/computeaws.amazon.com/lambdaAWSLambda论坛

1 / 59
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功