| 作者 |
| (英)Peter Sbarski?(彼得·萨巴斯基) (澳)Sam Kroonenburg(萨姆·克鲁内伯格) |
| 丛书名 |
| 出版社 |
| 电子工业出版社 |
| ISBN |
| 9787121342684 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 无服务器是软件架构世界中的热门新话题,它充分利用大量的云平台服务,让开发者只需关注核心业务逻辑的实现。同时,它按需分配和使用资源的运行方式,在降低基础设施成本的同时还能获得强大的弹性。 《Serverless架构:无服务器应用与AWS Lambda》的作者Peter Sbarski 是最早完全拥抱无服务器架构的开发者之一,他将自己在应用无服务器架构中获得的宝贵经验总结成本书,呈现给广大的读者。更难能可贵的是,全书贯穿了AWS Lambda 实例和大量相关的练习。读者一边阅读,一边动手完成练习,就可以循序渐进地掌握无服务器架构的核心技术。无论你是软件开发新手,还是架构师老兵,《Serverless架构:无服务器应用与AWS Lambda》都是不可多得的了解无服务器架构的绝佳读物。 |
| 目录 |
| 序一.........................................................................................XIII 序二..........................................................................................XV 前言........................................................................................XVII 致谢.........................................................................................XIX 关于本书...................................................................................XXI 关于作者................................................................................XXIII 关于封面................................................................................XXIV 第 1 部分..踏上征途 ......................................................................................... 1 1 ..无服务器初探 ........................................................................................................... 3 1.1 来龙去脉 ..........................................................................................................4 1.1.1 面向服务的架构与微服务 ..................................................................5 1.1.2 软件设计 ..............................................................................................6 1.2 无服务器架构原则 ..........................................................................................9 1.2.1 根据需要使用计算服务执行代码 ......................................................9 1.2.2 编写单一用途的无状态函数 ............................................................10 1.2.3 设计基于推送的、事件驱动的管道 ................................................10 1.2.4 创建更厚、更强大的前端 ................................................................ 11 1.2.5 拥抱第三方服务 ................................................................................12 1.3 从服务器过渡到服务 ....................................................................................12 1.4 无服务器的利与弊 ........................................................................................13 1.4.1 决策驱动因素 ....................................................................................13 1.4.2 什么时候使用无服务器 ....................................................................14 1.5 本章小结 ........................................................................................................15 2 ...架构与模式 ........................................................................................................... 17 2.1 使用场景 ........................................................................................................17 2.1.1 应用程序后端 ....................................................................................18 2.1.2 数据处理与操作 ................................................................................18 2.1.3 实时分析 ............................................................................................19 2.1.4 遗留 API 代理 ....................................................................................19 2.1.5 计划服务 ............................................................................................19 2.1.6 机器人(Bot)和技能(Skill) .........................................................20 2.2 架构 ................................................................................................................20 2.2.1 计算即后端 ........................................................................................20 2.2.2 遗留 API 代理 ....................................................................................25 2.2.3 混合 ....................................................................................................26 2.2.4 GraphQL .............................................................................................28 2.2.5 计算即胶水 ........................................................................................29 2.2.6 实时处理 ............................................................................................31 2.3 模式 ................................................................................................................32 2.3.1 命令模式 ............................................................................................32 2.3.2 消息传输模式 ....................................................................................33 2.3.3 优先级队列模式 ................................................................................35 2.3.4 扇出模式 ............................................................................................36 2.3.5 管道和过滤器模式 ............................................................................37 2.4 本章小结 ........................................................................................................38 3 ..建立无服务器应用程序 ...................................................................................... 39 3.1 24 小时视频 ...................................................................................................40 3.1.1 总体需求 ............................................................................................41 3.1.2 Amazon Web Services(AWS) .........................................................42 3.1.3 创建第一个 Lambda 函数 .................................................................44 3.1.4 命名你的 Lambda ..............................................................................46 3.1.5 本地测试 ............................................................................................47 3.1.6 部署到 AWS.......................................................................................48 3.1.7 连接 S3 和 Lambda ............................................................................50 3.1.8 在 AWS 中测试..................................................................................51 3.1.9 观察日志 ............................................................................................53 3.2 配置 Simple Notification Service ...................................................................54 3.2.1 连接 SNS 和 S3..................................................................................55 3.2.2 从 SNS 接收电子邮件 .......................................................................58 3.2.3 测试 SNS ............................................................................................58 3.3 设置视频权限 ................................................................................................58 3.3.1 创建第二个函数 ................................................................................58 3.3.2 配置与安全 ........................................................................................59 3.3.3 测试第二个函数 ................................................................................60 3.4 生成元数据 ....................................................................................................61 创建第三个函数和 FFprobe ..........................................................................61 3.5 收尾 ................................................................................................................64 3.6 练习 ................................................................................................................66 3.7 本章小结 ........................................................................................................67 4 ..设置你的云服务 ................................................................................................... 69 4.1 安全模型和身份管理 ....................................................................................70 4.1.1 创建和管理 IAM 用户 ......................................................................70 4.1.2 创建 IAM 组 ......................................................................................73 4.1.3 创建角色 ............................................................................................76 4.1.4 资源 ....................................................................................................77 4.1.5 权限和策略 ........................................................................................77 4.2 日志与警报 ....................................................................................................79 4.2.1 设置日志 ............................................................................................80 4.2.2 日志保留期 ........................................................................................81 4.2.3 筛选器、指标和警报 ........................................................................81 4.2.4 搜索日志数据 ....................................................................................83 4.2.5 S3 和日志 ...........................................................................................83 4.2.6 关于警报的更多操作 ........................................................................84 4.2.7 CloudTrail ...........................................................................................88 4.3 成本 ................................................................................................................90 4.3.1 创建账单提醒 ....................................................................................91 4.3.2 监控和优化成本 ................................................................................92 4.3.3 使用 Simple Monthly Calculator .......................................................93 4.3.4 计算 Lambda 和 API Gateway 的成本 .............................................94 4.4 练习 ................................................................................................................96 4.5 本章小结 ........................................................................................................97 第 2 部分..深入核心 ...................................................................................... 99 5 ..身份认证和授权 ................................................................................................ 101 5.1 无服务器环境中的身份认证 ......................................................................101 5.1.1 无服务器方法 ..................................................................................102 5.1.2 Amazon Cognito ...............................................................................104 5.1.3 Auth0 ................................................................................................105 5.2 为 24 小时视频增加身份认证 ....................................................................106 5.2.1 计划 ..................................................................................................106 5.2.2 直接调用 Lambda ............................................................................107 5.2.3 24 小时视频网站 .............................................................................108 5.2.4 Auth0 配置 ....................................................................................... 110 5.2.5 在网站中加入 Auth0 ....................................................................... 113 5.2.6 测试 Auth0 的集成 .......................................................................... 118 5.3 与 AWS 集成 ................................................................................................ 119 5.3.1 用户信息 Lambda ............................................................................120 5.3.2 API Gateway ....................................................................................124 5.3.3 映射 ..................................................................................................126 5.3.4 通过 API Gateway 调用 Lambda ....................................................130 5.3.5 自定义授权方 ..................................................................................130 5.4 委托令牌 ......................................................................................................135 5.4.1 真实案例 ..........................................................................................136 5.4.2 开通委托令牌 ..................................................................................136 5.5 练习 ..............................................................................................................137 5.6 本章小结 ......................................................................................................137 6 ..编排者 Lambda ................................................................................................. 139 6.1 Lambda 内幕 ................................................................................................139 6.1.1 事件模型和源 ..................................................................................140 6.1.2 推送和拉取事件模型 ......................................................................141 6.1.3 并发执行 ..........................................................................................142 6.1.4 容器重用 ..........................................................................................143 6.1.5 冷 Lambda 和暖 Lambda .................................................................143 6.2 编程模型 ......................................................................................................145 6.2.1 函数处理程序 ..................................................................................145 6.2.2 事件对象 ..........................................................................................145 6.2.3 上下文对象 ......................................................................................147 6.2.4 回调函数 ..........................................................................................147 6.2.5 日志 ..................................................................................................148 6.3 版本管理、别名和环境变量 ......................................................................148 6.3.1 版本管理 ..........................................................................................148 6.3.2 别名 ..................................................................................................150 6.3.3 环境变量 ..........................................................................................152 6.4 使用命令行界面(CLI) ..............................................................................154 6.4.1 调用命令 ..........................................................................................155 6.4.2 创建和部署函数 ..............................................................................155 6.5 Lambda 模式 ................................................................................................157 6.5.1 异步瀑布 ..........................................................................................158 6.5.2 序列与并行 ......................................................................................163 6.5.3 使用库 ..............................................................................................164 6.5.4 把逻辑移到另一个文件中 ..............................................................167 6.6 测试 Lambda 函数 .......................................................................................167 6.6.1 在本地测试 ......................................................................................167 6.6.2 编写测试 ..........................................................................................168 6.6.3 在 AWS 中测试................................................................................171 6.7 练习 ..............................................................................................................173 6.8 本章小结 ......................................................................................................173 7 ..API.Gateway ..................................................................................................... 175 7.1 作为接口的 API Gateway ............................................................................176 7.1.1 和 AWS 服务集成............................................................................177 7.1.2 缓存、限制与日志 ..........................................................................177 7.1.3 阶段和版本管理 ..............................................................................178 7.1.4 脚本 ..................................................................................................178 7.2 使用 API Gateway ........................................................................................178 7.2.1 计划 ..................................................................................................180 7.2.2 创建资源和方法 ..............................................................................181 7.2.3 配置方法执行 ..................................................................................185 7.2.4 Lambda 函数 ....................................................................................187 7.2.5 更新网站 ..........................................................................................191 7.3 优化网关 ......................................................................................................194 7.3.1 限制 ..................................................................................................194 7.3.2 日志 ..................................................................................................197 7.3.3 缓存 ..................................................................................................199 7.4 阶段和版本管理 ..........................................................................................202 7.4.1 创建阶段变量 ..................................................................................202 7.4.2 使用阶段变量 ..................................................................................203 7.4.3 版本管理 ..........................................................................................205 7.5 练习 ..............................................................................................................205 7.6 本章小结 ......................................................................................................206 第 3 部分..拓展架构 ................................................................................... 207 8 ..存储 ....................................................................................................................... 209 8.1 更智能的存储 ..............................................................................................209 8.1.1 版本控制 ..........................................................................................210 8.1.2 托管静态网站 ..................................................................................212 8.1.3 存储类别 ..........................................................................................214 8.1.4 对象生命周期管理 ..........................................................................216 8.1.5 转移加速 ..........................................................................................217 8.1.6 事件通知 ..........................................................................................219 8.2 安全上传 ......................................................................................................220 8.2.1 架构 ..................................................................................................221 8.2.2 上传策略 Lambda ............................................................................222 8.2.3 S3 CORS 配置 .................................................................................228 8.2.4 在网站中上传 ..................................................................................228 8.3 限制对文件的访问 ......................................................................................233 8.3.1 禁止公开访问 ..................................................................................233 8.3.2 生成预签名 URL .............................................................................233 8.4 练习 ..............................................................................................................234 8.5 本章小结 ......................................................................................................235 9 ..数据库 ................................................................................................................... 237 9.1 Firebase 简介 ................................................................................................238 9.1.1 数据结构 ..........................................................................................238 9.1.2 安全规则 ..........................................................................................240 9.2 为 24 小时视频添加 Firebase ......................................................................241 9.2.1 架构 ..................................................................................................242 9.2.2 设置 Firebase ....................................................................................243 9.2.3 修改转码视频 Lambda ....................................................................245 9.2.4 Transcode Video Firebase Update 函数 ...........................................250 9.2.5 连接 Lambda ....................................................................................251 9.2.6 网站 ..................................................................................................253 9.2.7 端到端测试 ......................................................................................258 9.3 安全访问文件 ..............................................................................................259 9.3.1 签名 URL Lambda ...........................................................................260 9.3.2 API Gateway 设置 ...........................................................................261 9.3.3 再次更新网站 ..................................................................................262 9.3.4 提升性能 ..........................................................................................262 9.3.5 提升 Firebase 安全性 .......................................................................265 9.4 练习 ..............................................................................................................270 9.5 本章小结 ......................................................................................................270 10 ..最后一英里 ..................................................................................................... 271 10.1 部署与框架 ................................................................................................271 10.2 迈向更好的微服务 ....................................................................................272 10.3 Step Functions ............................................................................................277 10.4 AWS Marketplace .......................................................................................283 10.5 未来之路 ....................................................................................................285 A ..为无服务器架构而生的服务 ........................................................................ 287 B ..安装和设置 ........................................................................................................ 293 C ..身份认证和授权的更多信息 ......................................................................... 305 D ..再探 Lambda 内幕 .......................................................................................... 311 E ..模型和映射 ........................................................................................................ 317 F ..S3 事件消息结构 .............................................................................................. 335 G ..Serverless.Framework 和 SAM ................................................................. 337 |