目 录
第Ⅰ部分 基础知识
第1章 两种技术 3
1.1 云端环境 4
1.2 什么是无服务器 6
1.3 对速度的需求 7
1.3.1 早期情况 8
1.3.2 UNIX哲学 8
1.3.3 面向对象和模式 9
1.3.4 Java、J2EE和.NET 10
1.3.5 XML和SOAXML以及SOA 11
1.3.6 Web speed 11
1.3.7 云计算 12
1.3.8 微服务(重新认识) 12
1.3.9 云原生服务 13
1.3.10 发展趋势:速度 14
1.4 什么是AI 16
1.4.1 AI的历史 17
1.4.2 真实的AI世界 18
1.4.3 AI服务 20
1.4.4 人工智能和机器学习 21
1.4.5 深度学习 23
1.4.6 人工智能面临的挑战 24
1.5 计算能力和人工智能的普及 24
1.6 规范的AI即服务架构 25
1.6.1 Web应用程序 26
1.6.2 实时服务 26
1.6.3 批处理服务 26
1.6.4 通信服务 26
1.6.5 基础事务服务 26
1.6.6 AI服务 26
1.6.7 数据服务 27
1.6.8 运营支持 27
1.6.9 开发支持 27
1.6.10 平台之外 27
1.7 在Amazon Web Services
上实现 27
1.8 本章小结 29
第2章 构建无服务器图像识别系统,第1部分 31
2.1 我们的第一个系统 32
2.2 体系结构 32
2.2.1 Web应用程序 34
2.2.2 同步服务 35
2.2.3 异步服务 36
2.2.4 通信服务 37
2.2.5 AI服务 39
2.2.6 数据服务 39
2.2.7 开发支持和运营支持 39
2.3 一切就绪 39
2.3.1 DNS域和SSL/TLS证书 39
2.3.2 设置清单 41
2.3.3 获取代码 41
2.3.4 设置云端资源 42
2.4 实现异步服务 44
2.5 本章小结 52
第3章 构建无服务器图像识别系统,第2部分 55
3.1 部署异步服务 55
3.2 实现同步服务 59
3.2.1 UI服务 60
3.2.2 前端服务 65
3.3 运行系统 68
3.4 清理环境 71
3.5 本章小结 71
第Ⅱ部分 行业工具
第4章 以无服务器方式构建和
保护Web应用程序 75
4.1 待办事项清单程序 75
4.2 体系结构 76
4.2.1 Web应用程序 77
4.2.2 同步服务 78
4.2.3 异步服务 79
4.2.4 通信结构 80
4.2.5 身份认证服务 81
4.2.6 AI服务 81
4.2.7 数据服务 82
4.2.8 开发支持和运营支持 82
4.3 准备就绪 82
4.4 第1步:创建基本应用程序 83
4.4.1 资源 85
4.4.2 待办事项服务 85
4.4.3 前端 89
4.4.4 部署“第1步”应用程序 94
4.5 第2步:启用Cognito保护 97
4.5.1 获取代码 99
4.5.2 用户服务 99
4.5.3 待办事项服务 102
4.5.4 前端服务 103
4.5.5 部署系统的“第2步” 105
4.6 本章小结 109
第5章 为Web应用添加人工智能接口 111
5.1 第3步:添加语音转文字功能 111
5.1.1 获取代码 112
5.1.2 便笺服务 113
5.1.3 前端更新 114
5.1.4 部署“第3步” 117
5.1.5 测试“第3步” 117
5.2 “第4步”:添加文字转语音服务 118
5.2.1 获取代码 119
5.2.2 日程服务 119
5.2.3 前端更新 121
5.2.4 部署“第4步” 122
5.2.5 测试“第4步” 122
5.3 “第5步”:添加聊天机器人对话界面 123
5.3.1 获取代码 124
5.3.2 创建聊天机器人 124
5.3.3 前端更新 127
5.3.4 部署“第5步” 129
5.3.5 测试“第5步” 130
5.4 清理环境 130
5.5 本章小结 131
第6章 如何有效地使用AI即服务 133
6.1 解决无服务器的新挑战 134
6.1.1 无服务器的优势和挑战 134
6.1.2 生产级的无服务器模板 135
6.2 建立项目结构 137
6.2.1 源存储库:monorepo或polyrepo 137
6.2.2 项目文件夹结构 138
6.2.3 获取代码 139
6.3 持续部署 139
6.3.1 持续部署设计 140
6.3.2 使用AWS服务实现持续部署 141
6.4 可观察性和监控 145
6.5 日志 146
6.5.1 生成结构化日志 147
6.5.2 检查日志输出 148
6.5.3 使用CloudWatch Logs Insights搜索日志 151
6.6 监控服务和应用程序指标 153
6.6.1 服务指标 154
6.6.2 应用程序指标 154
6.6.3 使用指标创建告警 159
6.7 使用跟踪理解分布式应用程序 160
6.7.1 启用X-Ray跟踪 160
6.7.2 探索跟踪和映射 162
6.7.3 带有注释和自定义指标的高级跟踪 163
6.8 本章小结 164
第7章 将AI应用于现有系统 165
7.1 无服务器AI的集成模式 165
7.1.1 模式1:同步API 168
7.1.2 模式2:异步API 169
7.1.3 模式3:VPN流输入 170
7.1.4 模式4:VPN完全连接流 171
7.1.5 选择哪种模式 172
7.2 使用Textract改进身份验证 173
7.2.1 获取代码 174
7.2.2 文本分析API 174
7.2.3 客户端代码 176
7.2.4 部署API 177
7.2.5 测试API 177
7.2.6 删除API 179
7.3 带有Kinesis支持的AI数据处理pipeline 179
7.3.1 获取代码 181
7.3.2 部署API 182
7.4 使用Translate即时翻译 183
7.5 测试pipeline 185
7.6 使用Comprehend分析情绪 187
7.7 训练自定义文档分类器 189
7.7.1 创建训练存储桶 190
7.7.2 上传训练数据 191
7.7.3 创建IAM角色 191
7.7.4 训练分类器 192
7.8 使用自定义分类器 192
7.9 pipeline的端到端测试 194
7.10 删除pipeline 195
7.11 使用自动化的优势 195
7.12 本章小结 196
第Ⅲ部分 将所学知识整合起来
第8章 为AI应用大规模收集数据 199
8.1 场景:寻找会议和演讲者 200
8.1.1 识别所需数据 200
8.1.2 数据来源 202
8.1.3 为模型训练准备数据 202
8.2 从网络收集数据 203
8.3 网络爬虫简介 204
8.3.1 典型的网络爬虫过程 204
8.3.2 网络爬虫架构 205
8.3.3 无服务器网络爬虫架构 208
8.4 实现条目存储 210
8.4.1 获取代码 210
8.4.2 条目存储桶 210
8.4.3 部署条目存储 210
8.5 创建frontier来存储和管理URL 211
8.5.1 获取代码 211
8.5.2 frontier URL数据库 211
8.5.3 创建frontier API 213
8.5.4 部署和测试frontier 214
8.6 构建fetcher来检索和解析网页 215
8.6.1 配置和控制headless浏览器 216
8.6.2 捕获页面输出 216
8.6.3 获取多个页面 217
8.6.4 部署并测试fetcher 219
8.7 确定strategy服务中的爬取空间 219
8.8 使用调度程序编排爬虫 222
8.8.1 获取代码 222
8.8.2 使用Step Function 222
8.8.3 部署和测试调度器 224
8.9 本章小结 227
第9章 使用AI从大数据集中提取有价数据 229
9.1 使用AI从网页中提取重要信息 229
9.1.1 了解需求 230
9.1.2 扩展体系结构 230
9.2 了解Comprehend的实体识别API 231
9.3 为信息提取准备数据 234
9.3.1 获取代码 234
9.3.2 创建S3事件通知 234
9.3.3 实现preparation处理程序 236
9.3.4 使用死信队列(DLQ)增加弹性 236
9.3.5 创建DLQ和重试处理程序 237
9.3.6 部署和测试preparation服务 239
9.4 使用文本批处理管理吞吐量 242
9.4.1 获取代码 242
9.4.2 检索批量文本从而进行提取 242
9.5 异步命名实体抽象 243
9.5.1 获取代码 243
9.5.2 开始实体识别任务 244
9.6 查看实体识别进度 245
9.7 部署和测试批量实体识别 246
9.8 对识别结果进行持久化 247
9.9 整合所有功能 248
9.9.1 编排实体提取 248
9.9.2 端到端数据提取测试 251
9.9.3 查看会议数据提取结果 251
9.10 工作总结 253
9.11 本章小结 253
附录A 设置AWS账户 255
附录B AWS托管AI服务的数据需求 265
附录C AI应用的数据源 267
附录D 设置DNS域和证书 269
附录E 底层的无服务器框架 275