第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
7API 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
处理错误 275
10.3 Step Functions 277
图像处理案例 278
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