AWS Lambda实战:开发事件驱动的无服务器应用程序

AWS Lambda实战:开发事件驱动的无服务器应用程序 pdf epub mobi txt 电子书 下载 2025

[意] 达尼洛·波恰(Danilo Poccia) 著,喻勇 译
图书标签:
  • AWS Lambda
  • 无服务器
  • Serverless
  • 事件驱动
  • 云计算
  • Python
  • Node
  • js
  • Java
  • 开发
  • 实战
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111579946
版次:1
商品编码:12196513
品牌:机工出版
包装:平装
丛书名: 云计算与虚拟化技术丛书
开本:16开
出版时间:2017-10-01
用纸:胶版纸
页数:309

具体描述

内容简介

本书以实例为驱动,教会读者如何使用事件驱动的方法来开发后端应用程序。从AWSLambda的基础介绍开始,逐渐深入地讲解了从Web或移动端调用Lambda函数的常见例子和模式。本书的第二部分把这些简单的例子组合在一起,构成了一个更大的应用。后,读者将学会如何在AWS平台上构建应用程序,满足高可用性、高安全性、高性能和高扩展性的要求。

作者简介

Danilo Poccia,是 Web Services的技术专员,他是AWS Lambda工具的创建者之一,这种工具通过外部事件驱动的服务可以简化认证并整合AWS资源。

目录

赞誉
中文版序
推荐序
译者序
前言
关于原书封面插图
第一部分 快速入门
第1章 在云中运行函数2
1.1 AWS Lambda简介5
1.2 以函数作为应用程序的后端10
1.3 应对一切的单一后端11
1.4 事件驱动的应用程序13
1.5 从客户端调用函数17
总结20
第2章 属于你的第一个Lambda函数21
2.1 创建一个新的函数21
2.2 编写函数24
2.3 其他设置26
2.4 测试函数28
2.5 从Lambda API调用函数30
总结32
练习32
第3章 把函数作为Web API34
3.1  API Gateway简介34
3.2 创建API36
3.3 创建集成38
3.4 测试集成40
3.5 改变响应信息41
3.6 把资源路径作为参数46
3.7 使用API Gateway的上下文对象49
总结52
练习52
第二部分 构建事件驱动的应用程序
第4章 管理安全56
4.1 用户、组和角色57
4.2 理解策略60
4.3 实践策略63
4.4 使用策略变量68
4.5 赋予角色70
总结72
练习72
第5章 使用独立的函数74
5.1 在函数中打包库和模块74
5.2 让函数订阅事件76
5.2.1 创建后端资源77
5.2.2 把函数打包78
5.2.3 配置权限82
5.2.4 创建函数84
5.2.5 测试函数86
5.3 在函数中使用二进制库88
5.3.1 准备环境88
5.3.2 实现函数89
5.3.3 测试函数93
5.4 调度函数的执行94
总结98
练习98
第6章 用户身份管理100
6.1  Cognito身份管理服务概述100
6.2 外部身份提供方103
6.3 集成自定义身份认证104
6.4 处理认证和非认证用户105
6.5 使用 Cognito的策略变量106
总结110
练习110
第7章 从客户端调用函数113
7.1 用JavaScript调用函数113
7.1.1 创建ID池114
7.1.2 为Lambda函数开放权限117
7.1.3 创建Web页面119
7.2 从移动应用中调用函数123
7.3 从浏览器调用函数127
总结131
练习131
第8章 设计基于Lambda的认证服务134
8.1 交互模式135
8.2 事件驱动架构137
8.3 使用 Cognito服务141
8.4 保存用户配置文件142
8.5 向用户配置文件添加更多数据143
8.6 加密密码143
总结144
练习144
第9章 实现基于Lambda的认证服务146
9.1 管理集中式配置147
9.2 对初始化和部署实现自动化149
9.3 共享代码150
9.4 创建应用的首页151
9.5 注册新用户152
9.6 验证用户邮件158
总结163
练习163
第10章 为认证服务添加更多功能168
10.1 处理密码遗忘168
10.2 处理密码重置175
10.3 处理用户登录180
10.4 为认证用户获取AWS令牌184
10.5 处理密码修改186
总结192
练习192
第11章 构建一个媒体共享应用195
11.1 事件驱动架构195
11.1.1 简化实现196
11.1.2 合并函数199
11.1.3 改进事件驱动架构201
11.2 在 S3中定义对象的命名空间202
11.3 为 DynamoDB设计数据模型204
11.4 客户端应用205
11.5 响应内容更新216
11.6 更新内容索引220
总结223
练习225
第12章 为什么选择事件驱动226
12.1 事件驱动架构总览227
12.2 从前端起步228
12.3 关于后端229
12.4 响应式编程232
12.5 通向微服务之路235
12.6 平台的扩展性237
12.7 可用性和适应性238
12.8 预估费用239
总结241
练习242
第三部分 从开发环境到生产部署
第13章 改进开发和测试244
13.1 本地开发244
13.1.1 用Node.js做本地开发245
13.1.2 用Python做本地开发246
13.1.3 社区工具247
13.2 日志与调试247
13.3 使用函数版本249
13.4 使用别名来管理不同环境250
13.5 开发工具和框架251
13.5.1 Chalice Python微框架252
13.5.2 Apex无服务器架构254
13.5.3 Serverless框架256
13.6 简单的无服务器测试258
总结260
练习260
第14章 自动化部署263
14.1 在 S3上存储代码263
14.2 事件驱动的无服务器持续部署266
14.3 用AWS CloudFormation部署268
14.4 多区域部署274
总结276
练习276
第15章 自动化的基础设施管理279
15.1 对告警做出响应279
15.2 对事件做出响应282
15.3 近实时处理日志282
15.4 设定循环的活动283
15.5 跨区域的架构和数据同步284
总结287
练习287
第四部分 使用外部服务
第16章 调用外部服务290
16.1 管理密码和安全凭证290
16.2 使用IFTTT Maker通道294
16.3 向Slack团队发送消息296
16.4 自动管理GitHub代码库298
总结299
练习299
第17章 从其他服务获取事件301
17.1 谁在调用301
17.2 Webhook模式302
17.3 处理来自Slack的事件304
17.4 处理来自GitHub的事件305
17.5 处理来自Twilio的事件306
17.6 使用MongoDB作为触发器306
17.7 日志监控的模式307
总结308
练习308

前言/序言

最简单的服务器,就是没有服务器。
—Werner Vogel,亚马逊CTO1996年我开始接触客户端-服务器架构,体验过分布式系统的先进和复杂。21世纪初,我与电信和媒体的客户合作过几个大型项目,那时我切身体会到计算、存储和网络的限制会成为阻碍公司创新的瓶颈。
接着在关键性的2006年,以“按需”(utility)模式使用计算资源—就像使用能源、汽油和水那样—开始成为现实。那年AWS发布了它的首个存储服务( S3)和计算服务( EC2)。我对它们都产生了强烈的兴趣和好奇。
自2012年起,我专注于帮助客户在云端实现应用,或者把应用迁移到云端。为了更熟悉手头的新服务、新平台,我决定用 S3作为后端存储,写一个共享式文件系统。我用Python编写实现方案,放到GitHub上开源,很快就遇上了一批志同道合的用户和贡献者。
2014年AWS Lambda横空出世时,我意识到自己已经站在变革大潮的前端。数月后一个阴雨绵绵的周末,我想我可以不借助任何实体服务器,编写一个完整的应用。仅需要浏览器上的HTML、CSS和JavaScript文件这类静态内容,配合Lambda函数在后端执行我的逻辑,再加上用事件来支配商业流程,应用就完成了。我写了一个“简单的”认证服务(详见本书第8~10章),再次放到GitHub上共享。反响之热烈出乎我的意料,显然,我抓住了开发者的痛点。
经验分享之谈最后就成了本书。我希望本书能帮助你接受无服务器计算的新趋势,开发出无与伦比的新应用,检验新技术、新数据。我随时洗耳恭听你的故事,帮助同道中人实现理想将是我无上的荣光。
关于本书本书分为四部分。第一部分(第1~3章)介绍了基础技术,比如AWS Lambda和Web API。第二部分(第4~12章)是本书的核心,讲解了事件驱动应用的构建方法,让你可以用事件串联多个函数,构建新的应用。第三部分(第13~15章)主要关注从开发到生产,帮助你优化DevOps流程。第四部分(第16章和第17章)介绍了如何把Lambda函数与AWS平台以外的服务整合起来,用AWS Lambda改进沟通方式,自动完成代码管理。
本书自始至终的逻辑是递进的,建议按照顺序阅读。
如果你已经涉猎过AWS Lambda的基础内容,可以跳过第一部分,直接从第二部分开始,学习构建更为复杂的事件驱动应用。
第三部分和第四部分可以作为参考内容,帮助你实现新的想法,或者对照我所建议的做法,巩固对知识的掌握。
云计算的发展日新月异,因此我只能关注一些基本的概念,如分布式系统和事件驱动设计。在我看来,在这个分布式的世界里,这些内容对所有IT系统开发者都是至关重要的。
本书的目标读者是那些没有云技术经验,同时希望了解无服务器计算和事件驱动应用前沿技术的开发人员。如果你已经对 EC2和 VPC这类AWS服务有所了解,本书将为你开辟一个新的认知视角,帮助你用服务而非服务器的角度构建应用程序。
代码规范本书的每个专题都附带了丰富的样例。大段代码或夹在文本中的代码都会用等宽字体显示,以区别于正文。类、方法名、对象属性,以及其他代码相关的术语和内容,也都会使用等宽字体。
获取源代码本书中的一些源代码可以从以下网站获得。
致谢我要感谢许多人。这些年来,他们与我并肩工作、交换想法、分享有趣的点子,让我从中获益匪浅。我不喜欢列名单,所以这里没有他们的名单。我相信那些帮助过我的人能从中读出我的谢意。这里需要特别感谢几位仁兄:Toni Arritola,他总能厘清我偶尔混乱的思路,用简明易懂的语言说出我的想法,让本书内容条理清晰;Brent Stains,他给了我许多极有价值的提示和技术视角;Mike Stephens,是他最先提出了让我写这本书的想法。
此外还要感谢不吝宝贵时间,为本书的改进建言献策的评论者们:Alan Moffet、Ben Leibert、Cam Crews、Christopher Haupt、Dan Kacenjar、Henning Kristensen、Joan Fuster、Justin Calleja、Michael Frey、Steve Rogers、Tom Jensen、Luis Carlos Sanchez Gonzalez(技术审校)。
谨以此书献给我的妻子Paola,她陪伴我度过了撰写这本书的每一个周末,目睹了背后所有的努力。献给我的父母,他们在我年幼时就开始支持我学习计算机。献给我的兄弟,他们给予了我支持。
关于原书封面插图 about the cover illustration英文原书的封面图片名为“Femme Kamtschadale”(来自勘察加的女人)。此图取材于法国人Jacques Grasset de Saint-Sauveur(1757—1810)于1797年出版的《Costumes de Différents Pays》一书,书中的每幅插图都是人工精心绘制的。
该书向我们展示了两个世纪前世界上各个地区的文化差异。当时的人们分居地球的不同角落,操着不同的语言口音。在陋巷、在乡野,仅通过人们的衣着,就能判断他们的居所和阶级。
后来,人们的衣着改变了,不同地区的文化差异也日渐式微。现在就连不同大洲的居民都难辨彼此,更遑论不同村、不同乡、不同国的人。或许,我们把文化差异拿


《AWS Lambda实战:开发事件驱动的无服务器应用程序》 内容简介: 在云计算日益普及的今天,无服务器架构正以前所未有的速度改变着应用程序的开发和部署模式。AWS Lambda 作为无服务器计算的先驱,以其强大的弹性、按需付费的经济模型以及对事件驱动架构的天然支持,成为开发者构建现代化、高可伸缩性应用的理想选择。本书《AWS Lambda实战:开发事件驱动的无服务器应用程序》将带您深入探索 AWS Lambda 的核心概念、实际应用场景以及构建健壮、高效无服务器解决方案的最佳实践。 本书并非泛泛而谈,而是聚焦于 “实战” 二字,旨在通过丰富的示例和详尽的步骤,帮助您从零开始,逐步掌握使用 AWS Lambda 开发事件驱动应用程序的完整流程。我们将从 AWS Lambda 的基础概念入手,清晰地阐述其工作原理、触发器机制、执行模型以及与 AWS 生态系统中其他服务的集成方式。随后,我们将深入到实际的代码开发层面,讲解如何使用多种编程语言(如 Node.js、Python、Java 等)编写 Lambda 函数,并演示如何处理各种常见的事件源,包括 API Gateway、S3、DynamoDB、SQS、SNS 等。 本书内容梗概: 第一部分:无服务器与 AWS Lambda 基础 理解无服务器架构: 深入剖析无服务器的定义、核心优势(如降低运维成本、提升开发效率、自动伸缩等),以及它如何颠覆传统的应用部署模式。我们将对比无服务器与其他架构模式的异同,帮助您建立清晰的认识。 AWS Lambda 入门: 详细介绍 AWS Lambda 的核心组件,包括函数、事件源、触发器、运行时环境以及执行角色。您将了解 Lambda 函数的生命周期,包括冷启动和热启动的区别,以及如何优化函数性能。 Lambda 函数编写与部署: 学习使用不同的编程语言编写 Lambda 函数,理解其请求/响应模型,以及如何处理输入事件和生成输出。我们将演示如何使用 AWS CLI、AWS SAM (Serverless Application Model) 或 AWS CDK (Cloud Development Kit) 等工具来打包、部署和管理 Lambda 函数,涵盖从简单的“Hello, World!”到复杂的业务逻辑实现。 权限与安全性: 探讨 AWS Lambda 的权限管理,理解 IAM (Identity and Access Management) 角色在 Lambda 函数执行中的关键作用。我们将演示如何配置最小权限原则,确保 Lambda 函数只能访问其必要的 AWS 服务,从而提升应用程序的安全性。 第二部分:事件驱动的 Lambda 应用场景 API Gateway 集成: 学习如何利用 API Gateway 将 HTTP 请求路由到 Lambda 函数,构建无服务器的 RESTful API。我们将演示如何配置 API Gateway 的资源、方法、集成请求和响应,以及如何处理 CORS、请求验证和认证。 S3 事件驱动: 探索如何让 Lambda 函数响应 S3 存储桶中的对象事件,例如文件上传、删除等。我们将构建实际案例,例如自动调整图片大小、处理新上传的 CSV 文件、数据归档等,展示 S3 和 Lambda 结合的强大能力。 DynamoDB 数据处理: 学习如何使用 DynamoDB Streams 捕获数据库数据的变更,并触发 Lambda 函数进行实时处理。我们将构建场景,如数据同步、实时分析、审计日志记录等,利用 DynamoDB 和 Lambda 实现高效的数据管道。 消息队列与事件总线: 深入理解 SQS (Simple Queue Service) 和 SNS (Simple Notification Service) 在解耦应用组件中的作用,以及它们如何与 Lambda 协同工作。我们将演示如何使用 Lambda 处理 SQS 消息队列中的任务,以及如何利用 SNS 实现发布/订阅模式,将事件分发给多个 Lambda 函数或终端用户。 定时触发器 (EventBridge/CloudWatch Events): 学习如何配置定时器,让 Lambda 函数按照预设的时间间隔执行,实现计划任务自动化。我们将构建案例,如定期数据备份、报表生成、资源清理等。 其他常见事件源: 触及更多 Lambda 支持的事件源,包括 Kinesis Streams、IoT Core、Cognito 等,根据实际需求,为您拓展更多应用可能。 第三部分:高级 Lambda 开发与优化 Lambda 函数的性能优化: 探讨影响 Lambda 函数性能的关键因素,如内存配置、超时设置、代码效率、依赖管理等。我们将提供切实可行的优化策略,帮助您降低延迟,提高吞吐量。 错误处理与日志记录: 学习如何设计健壮的错误处理机制,确保 Lambda 函数在遇到异常情况时能够优雅地处理并记录错误信息。我们将演示如何利用 CloudWatch Logs 进行集中式的日志管理和分析。 Lambda 层 (Layers) 的使用: 理解 Lambda 层的概念及其优势,学习如何创建和管理共享的库和依赖项,以减少部署包的大小,提高代码的可维护性。 版本控制与别名: 学习如何有效地管理 Lambda 函数的不同版本,并使用别名进行流量路由和灰度发布,确保应用程序的平稳升级。 监控与调试: 掌握使用 AWS CloudWatch 对 Lambda 函数进行性能监控、告警设置以及进行远程调试的方法,及时发现并解决潜在问题。 测试 Lambda 函数: 介绍单元测试、集成测试以及端到端测试在 Lambda 开发中的重要性,并演示如何在本地和云端对 Lambda 函数进行有效的测试。 第四部分:无服务器应用程序架构模式 构建微服务: 学习如何使用 Lambda 构建独立的、可伸缩的微服务,以及如何通过 API Gateway 和其他 AWS 服务将它们组合成完整的应用程序。 数据处理管道: 设计和实现复杂的数据处理管道,从数据摄取、转换到存储和分析,充分发挥 Lambda 在数据处理场景下的优势。 事件驱动的工作流: 利用 AWS Step Functions 与 Lambda 结合,构建复杂、容错性强的事件驱动工作流,实现跨多个服务的业务流程自动化。 无服务器的常见模式与反模式: 总结无服务器架构设计中的最佳实践和需要避免的陷阱,帮助您构建更具弹性和可维护性的无服务器解决方案。 本书特色: 理论与实践相结合: 每一项技术点的讲解都辅以丰富的代码示例和完整的操作步骤,让您能够亲手实践,快速掌握。 聚焦实际场景: 书中案例贴近真实开发需求,覆盖了 API 开发、数据处理、自动化任务等多个热门应用场景。 循序渐进的难度: 从基础概念到高级技巧,内容设计循序渐进,适合不同阶段的开发者。 全面的 AWS 生态集成: 深入展示 Lambda 如何与 API Gateway, S3, DynamoDB, SQS, SNS, EventBridge, Step Functions 等 AWS 服务无缝集成。 强调最佳实践: 在讲解过程中,我们会不断强调安全性、性能优化、可维护性等无服务器开发中的关键原则。 无论您是希望拥抱无服务器架构的初学者,还是有一定经验但希望深入掌握 AWS Lambda 的资深开发者,本书都将是您构建下一代事件驱动应用程序的宝贵指南。阅读本书,您将不仅学会如何编写 Lambda 函数,更能掌握如何设计、构建和运维一套现代化、高效率的无服务器解决方案。

用户评价

评分

这本书给我带来的最直接的好处,是大大提升了我解决问题的能力。在开发无服务器应用程序的过程中,难免会遇到各种意想不到的状况,比如函数执行失败、性能瓶颈、或者是与第三方服务的集成问题。这本书就像一本“武林秘籍”,里面囊括了各种常见问题的解决方案和调试技巧。作者在书中分享了许多宝贵的调试经验,例如如何利用CloudWatch Logs进行错误排查、如何使用AWS X-Ray进行性能追踪、以及如何针对性地优化Lambda函数的配置。书中还提供了一些关于如何处理资源限制、超时设置、以及并发控制的实用建议。我尤其喜欢书中关于如何构建可观测性极强的无服务器应用的章节,这让我能够更好地监控我的应用程序的运行状态,并及时发现和解决潜在问题。这本书的结构非常清晰,逻辑性也很强,每一章的内容都层层递进,让我在学习过程中不会感到迷茫。总的来说,这本书让我从一个“技术使用者”变成了一个“技术掌控者”,我对AWS Lambda的掌握程度有了质的飞跃。

评分

在我看来,这本书最吸引人的地方在于它对“事件驱动”这一核心理念的深刻阐述。作者不仅仅是将AWS Lambda作为一个独立的服务来讲解,而是将其置于一个更大的、由事件驱动的生态系统中。书中详细解释了什么是事件源、事件如何被捕获、如何被Lambda函数处理,以及Lambda函数如何触发下游服务,形成一个闭环。从简单的S3事件触发,到复杂的IoT设备数据流,再到监控告警触发自动化处理,每一个案例都生动地展示了事件驱动架构的强大之处。我特别欣赏书中关于如何设计灵活、可扩展的事件驱动系统的章节,作者提出了许多实用的设计原则,例如解耦、异步处理、以及如何处理事件的顺序性和重复性。这些内容不仅帮助我理解了Lambda的功能,更重要的是,帮助我转变了传统的思维模式,开始用事件驱动的视角去思考应用程序的设计。这本书的语言风格非常洒脱,读起来很有趣,即使是在讲解比较抽象的概念时,也能保持读者的阅读兴趣。对于那些想要拥抱云原生、构建现代化应用的开发者来说,这本书绝对是必读的。

评分

这本书真是让我大开眼界!之前我对无服务器的概念一直有些模糊,只知道它能省钱省事,但具体怎么用、有什么优势,心里总没底。读了这本书,我才真正理解了AWS Lambda的核心价值,以及如何构建真正的事件驱动架构。作者的讲解非常深入浅出,从最基础的Lambda函数创建、触发器配置,到更高级的服务集成,比如API Gateway、DynamoDB、SNS、SQS等,都做了详细的剖析。我尤其喜欢书中关于如何优化Lambda函数性能的部分,比如内存分配、冷启动处理、以及如何选择合适的运行时。书中还提供了一些非常实用的案例,比如构建一个简单的Web API、处理S3对象上传事件、以及实现一个消息队列驱动的后台处理系统。这些案例不仅让我学到了技术,更让我看到了无服务器架构在实际业务场景中的巨大潜力。而且,作者的语言风格很清晰,不会让人感到枯燥,即使是复杂的概念,也能被解释得明明白白。这本书对于任何想要深入了解AWS Lambda,或者希望利用无服务器技术提升开发效率和降低运维成本的开发者来说,都是一本不可多得的宝藏。我强烈推荐给我的同事们!

评分

这本书给我带来的最大惊喜,是它对于无服务器安全性的细致讲解。以往我总觉得无服务器就是“扔掉服务器”,安全性就自然而然地解决了,但看完这本书我才意识到,安全性是一个需要主动设计和投入的环节。作者从IAM权限管理、VPC配置,到日志审计和监控,都做了非常详尽的介绍。尤其是关于如何最小化Lambda函数的权限,以及如何利用AWS Secrets Manager和Parameter Store安全地管理敏感信息,这些内容对我来说是全新的,也是极其宝贵的。书中还讨论了如何处理不同触发器的安全问题,例如API Gateway的认证授权、Kinesis/SQS的数据安全等。此外,作者还分享了一些关于如何构建健壮的无服务器应用程序的架构模式,比如幂等性设计、重试机制、死信队列等,这些都极大地提升了我对整个系统可靠性和安全性的信心。我以前总担心无服务器应用不好管理,现在看来,只要掌握了正确的方法和工具,无服务器应用的反而是可以做到非常安全的。这本书的实操性很强,书中的代码示例也很有参考价值,让我学到了很多可以直接应用到实际项目中的技巧。

评分

读完这本书,我对无服务器的未来充满了信心。作者不仅详尽地介绍了AWS Lambda的各项功能,还放眼未来,探讨了无服务器架构在不同行业和场景下的应用前景,以及它将如何改变软件开发的模式。书中提到了一些前沿的无服务器应用,例如利用Lambda实现AI/ML推理、构建实时数据处理管道、以及开发Serverless-first的游戏后端等等,这些都让我看到了无服务器技术无穷的潜力。作者在书的结尾部分,还分享了一些关于如何持续学习和跟进无服务器技术发展的建议,这对于希望在这个快速变化的领域保持领先地位的开发者来说,是非常有价值的。这本书的视野非常开阔,不仅仅局限于AWS Lambda本身,而是将其融入到整个云原生生态系统中进行讲解,这让读者能够更全面地理解无服务器的价值和意义。这本书的语言风格非常自信而富有启发性,读起来让人感到振奋,也激发了我对无服务器开发的更多探索欲望。我非常看好无服务器的未来,而这本书无疑是我通往这个未来道路上的重要指南。

评分

寄件非常快,书内容很详实

评分

此用户未填写评价内容

评分

好,质量很好。作者很用心

评分

好,质量很好。作者很用心

评分

东西不错,速度很快。这是正好是目前我需要的。

评分

寄件非常快,书内容很详实

评分

写的?

评分

东西不错,速度很快。这是正好是目前我需要的。

评分

寄件非常快,书内容很详实

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有