书籍详情
Amazon Web Services云计算实战(第2版)
作者:[德] 迈克尔·威蒂格(Michael Wittig),[德]安德烈亚斯·威蒂格
出版社:人民邮电出版社
出版时间:2023-05-01
ISBN:9787115609298
定价:¥129.80
购买这本书可以去
内容简介
Amazon Web Services(AWS)是Amazon公司的云计算平台,它提供了一整套基础设施和应用服务,可以帮助用户在云中运行几乎一切应用。本书介绍AWS云平台的核心服务,如计算、存储网络等内容。读者可以从本书了解在云上实现自动化,保证安全,实现高可用、容错和海量扩展的系统架构的best实践。本书分为4部分,共17章。本书从介绍AWS的基本概念开始,引入具体的应用示例,让读者对云计算和AWS平台有整体的了解;然后讲解如何搭建包含虚拟机和网络的基础设施;在此基础上,深入介绍如何在云上存取数据,让读者熟悉存储数据的方法和技术;后展开讨论在AWS上如何设计架构,让读者了解实现高可用性、高容错和高扩展性的best实践。本书第2版全面修订了第1版中的各章内容,并涵盖AWS的新添加的服务,包括使用AWS Lambda的无服务器基础设施,与EFS共享数据以及使用Amazon ElastiCache的内存数据存储等。
作者简介
迈克尔·威蒂格(Michael Wittig)和安德烈亚斯·威蒂格(Andreas Wittig)是专注于Amazon Web Services(AWS)的软件工程师和DevOps工程师。2013年,这对兄弟将一家德国银行的整个IT基础设施迁移到了AWS上。这在德国银行界算是首例。自2015年以来,他们一直担任顾问,帮助客户在AWS上迁移和运行工作负载。他们专注于基础设施即代码、持续部署、无服务器、Docker和安全等领域,也在Amazon云上构建SaaS产品。两人都是AWS认证的专业级AWS解决方案架构师(AWS Certified Solutions Architect-Professional)以及AWS认证的专业级DevOps工程师(AWS Certified DevOps Engineer-Professional)。此外,他们还喜欢通过本书、博客以及在线和现场培训(如AWS in Motion)与他人分享知识,教授他人如何使用AWS。
目录
第 一部分 AWS 云计算起步
第 1 章 什么是 AWS 3
1.1 什么是云计算 4
1.2 AWS 可以做什么 4
1.2.1 托管一家网店 5
1.2.2 在专用网络内运行 Java EE 应用 6
1.2.3 实施高可用的系统 7
1.2.4 从批量处理基础设施的低成本中获益 8
1.3 如何从使用 AWS 上获益 9
1.3.1 创新和快速发展的平台 9
1.3.2 解决常见问题的服务 9
1.3.3 启用自动化 9
1.3.4 灵活的容量(可扩展性) 10
1.3.5 为失效而构建(可靠性) 10
1.3.6 缩短上市的时间 10
1.3.7 从规模经济中受益 11
1.3.8 全球基础设施 11
1.3.9 专业的合作伙伴 11
1.4 费用是多少 11
1.4.1 免费套餐 12
1.4.2 账单样例 12
1.4.3 按使用付费的机遇 13
1.5 同类对比 14
1.6 探索 AWS 服务 14
1.7 与 AWS 交互 17
1.7.1 管理控制台 18
1.7.2 CLI 18
1.7.3 SDK 19
1.7.4 蓝图 20
1.8 创建一个 AWS 账户 20
1.8.1 注册 21
1.8.2 登录 25
1.8.3 创建一个密钥对 26
1.9 创建账单警报跟踪 AWS 账单 29
1.10 小结 32
第 2 章 一个简单示例:5 分钟搭建WordPress 站点 33
2.1 创建基础设施 34
2.2 探索基础设施 40
2.2.1 资源组 40
2.2.2 虚拟机 41
2.2.3 负载均衡器 43
2.2.4 MySQL 数据库 44
2.2.5 网络文件系统 46
2.3 成本是多少 47
2.4 删除基础设施 48
2.5 小结 49
第二部分 搭建由计算机和网络组成的虚拟基础设施
第 3 章 使用虚拟机:EC2 53
3.1 探索虚拟机 53
3.1.1 启动虚拟机 54
3.1.2 连接到虚拟机 65
3.1.3 手动安装和运行软件 68
3.2 监控和调试虚拟机 69
3.2.1 显示虚拟机的日志 69
3.2.2 监控虚拟机的负载 70
3.3 关闭虚拟机 71
3.4 更改虚拟机的大小 72
3.5 在另一个数据中心启动虚拟机 75
3.6 分配一个公有 IP 地址 78
3.7 向虚拟机添加额外的网络接口 80
3.8 优化虚拟机的开销 84
3.8.1 预留虚拟机 85
3.8.2 对未用虚拟机出价 87
3.9 小结 91
第 4 章 编写基础设施: 命令行、SDK 和 CloudFormation 92
4.1 基础设施即代码 94
4.1.1 自动化和 DevOps 迁移 94
4.1.2 开发一种基础设施语言:JIML 94
4.2 使用 CLI 98
4.2.1 为什么要自动化 98
4.2.2 安装 CLI 98
4.2.3 配置 CLI 99
4.2.4 使用 CLI 102
4.3 使用 SDK 编程 106
4.3.1 使用 SDK 控制虚拟机:nodecc 106
4.3.2 nodecc 如何创建一台虚拟机 107
4.3.3 nodecc 如何列出虚拟机并显示虚拟机的详细信息 108
4.3.4 nodecc 如何终止一台虚拟机 109
4.4 使用蓝图来启动一台虚拟机 110
4.4.1 CloudFormation 模板解析 111
4.4.2 创建第 一个模板 114
4.5 小结 120
第 5 章 自动化部署: CloudFormation、 Elastic Beanstalk 和 OpsWorks 121
5.1 在灵活的云环境中部署应用 122
5.2 比较部署工具 123
5.2.1 对部署工具进行分类 123
5.2.2 比较部署服务 123
5.3 使用 AWS CloudFormation 创建虚拟机并在启动时运行部署脚本 124
5.3.1 在服务器启动时用用户数据来运行脚本 125
5.3.2 将 VPN 服务器 OpenSwan 部署到虚拟机 125
5.3.3 从零开始而不是更新 129
5.4 使用 AWS Elastic Beanstalk 部署简单的 Web 应用 130
5.4.1 Elastic Beanstalk 组件 130
5.4.2 使用 Elastic Beanstalk 部署一个 Node.js 应用Etherpad 131
5.5 使用 AWS OpsWorks Stacks 部署多层应用 135
5.5.1 AWS OpsWorks Stacks 的组件 136
5.5.2 使用 AWS OpsWorks Stacks 部署 IRC 聊天应用 138
5.6 小结 147
第 6 章 保护系统安全:IAM、 安全组和 VPC 148
6.1 谁该对安全负责 149
6.2 使软件保持 150
6.2.1 检查安全更新 150
6.2.2 在虚拟机启动时安装安全更新 151
6.2.3 在正在运行的虚拟机上安装安全更新 152
6.3 保护 AWS 账户安全 153
6.3.1 保护 AWS 账户的 root 用户安全 154
6.3.2 AWS 身份和访问管理 155
6.3.3 使用 IAM 策略定义权限 156
6.3.4 用户用于身份认证,组用于组织用户 158
6.3.5 使用角色认证AWS资源 159
6.4 控制进出虚拟机的网络流量 161
6.4.1 使用安全组控制虚拟机的流量 162
6.4.2 允许 ICMP 流量 163
6.4.3 允许 SSH 流量 164
6.4.4 允许来自源 IP 地址的SSH 流量 165
6.4.5 允许来自源安全组的SSH 流量 166
6.5 在云中创建一个专用网络:亚马逊虚拟私有云 170
6.5.1 创建VPC和互联网网关 171
6.5.2 定义公有堡垒主机子网 172
6.5.3 添加私有 Apache Web 服务器子网 174
6.5.4 在子网中启动虚拟机 175
6.5.5 通过 NAT 网关从私有子网访问互联网 176
6.6 小结 178
第 7 章 用 Lambda 自动化 操作任务 179
7.1 用 AWS Lambda 运行代码 180
7.1.1 什么是无服务器 180
7.1.2 在 AWS Lambda 上运行代码 180
7.1.3 比较 AWS Lambda 与虚拟机(Amazon EC2) 181
7.2 用 AWS Lambda 构建网站健康状况检查 182
7.2.1 创建 Lambda 函数 183
7.2.2 用 CloudWatch 搜索 Lambda 函数的日志 188
7.2.3 用 CloudWatch 指标和警报监视 Lambda 函数 190
7.2.4 访问 VPC 中的端点 194
7.3 自动添加包含 EC2 实例所有者的标签 196
7.3.1 事件驱动:订阅 CloudWatch 事件 196
7.3.2 在 Python 中实现 Lambda 函数 199
7.3.3 用无服务器应用模型设置Lambda 函数 200
7.3.4 授权 Lambda 函数用具有IAM 角色的其他 AWS 服务 201
7.3.5 用 SAM 部署 Lambda 函数 202
7.4 用 AWS Lambda 还能做什么 203
7.4.1 AWS Lambda 有哪些限制 203
7.4.2 无服务器定价模式的影响 203
7.4.3 使用场景:Web 应用 204
7.4.4 使用场景:数据处理 205
7.4.5 使用场景:物联网后端 206
7.5 小结 206
第三部分 在云中存储数据
第 8 章 存储对象:S3 和 Glacier 211
8.1 什么是对象存储 212
8.2 Amazon S3 212
8.3 使用 AWS CLI 在 S3 上备份数据 214
8.4 归档对象以优化成本 216
8.4.1 创建 S3 存储桶来配合Glacier 使用 217
8.4.2 添加生命周期规则到存储桶 218
8.4.3 实验 Glacier 和生命周期规则 220
8.5 以编程的方式存储对象 222
8.5.1 设置 S3 存储桶 224
8.5.2 安装使用 S3 的Web 应用 224
8.5.3 检查使用 SDK 访问 S3 的代码 224
8.6 使用 S3 来实现静态网站托管 226
8.6.1 创建存储桶并上传一个静态网站 227
8.6.2 配置存储桶来实现静态网站托管 227
8.6.3 访问 S3 上托管的网站 228
8.7 使用 S3 的实践 229
8.7.1 确保数据一致性 229
8.7.2 选择正确的键 230
8.8 小结 231
第 9 章 在硬盘上存储数据: EBS 和实例存储 232
9.1 弹性块存储:通过网络附加的持久的块级别存储 233
9.1.1 创建 EBS 卷并将其附加到EC2 实例 234
9.1.2 使用 EBS 234
9.1.3 调整性能 236
9.1.4 使用 EBS 快照备份数据 238
9.2 实例存储:临时块存储 240
9.2.1 使用实例存储 243
9.2.2 测试性能 244
9.2.3 备份数据 244
9.3 小结 245
第 10 章 在机器之间共享数据卷:EFS 246
10.1 创建文件系统 248
10.1.1 用 CloudFormation 描述文件系统 248
10.1.2 定价 249
10.2 创建安装目标 249
10.3 在 EC2 实例上安装EFS 共享 251
10.4 在 EC2 实例之间共享文件 254
10.5 调整性能 255
10.5.1 性能模式 255
10.5.2 预期吞吐量 256
10.6 监视文件系统 256
10.6.1 是否应使用 I/O 性能模式 257
10.6.2 监控你的允许吞吐量 258
10.6.3 监控你的使用情况 259
10.7 备份数据 259
10.7.1 使用 CloudFormation 描述EBS 卷 260
10.7.2 使用 EBS 卷 260
10.8 小结 262
第 11 章 使用关系数据库服务: RDS 263
11.1 开始使用 MySQL 数据库 265
11.1.1 用 RDS 数据库启动WordPress 平台 265
11.1.2 探索带有 MySQL 引擎的RDS 数据库实例 268
11.1.3 Amazon RDS 的定价 268
11.2 将数据导入数据库 268
11.3 备份和还原数据库 271
11.3.1 配置自动快照 271
11.3.2 手动创建快照 272
11.3.3 还原数据库 273
11.3.4 复制数据库到另一个区域 274
11.3.5 计算快照费用 275
11.4 控制对数据库的访问 275
11.4.1 控制对 RDS 数据库配置的访问 276
11.4.2 控制对 RDS 数据库的网络访问 277
11.4.3 控制对数据的访问 277
11.5 依赖高可用数据库 278
11.6 调整数据库的性能 280
11.6.1 增加数据库资源 281
11.6.2 使用读复制来提高读性能 282
11.7 监控数据库 284
11.8 小结 286
第 12 章 使用内存缓存数据:Amazon ElastiCache 287
12.1 创建缓存集群 291
12.1.1 小 CloudFormation 模板 292
12.1.2 测试 Redis 集群 293
12.2 缓存部署选项 294
12.2.1 Memcached 集群 295
12.2.2 Redis 单节点集群 295
12.2.3 Redis 禁用集群模式的集群 296
12.2.4 Redis 启用集群模式的集群 297
12.3 控制缓存访问 298
12.3.1 控制访问配置选项 298
12.3.2 控制网络访问 299
12.3.3 控制集群和数据访问 299
12.4 使用 CloudFormation 安装示例 Discourse 应用 300
12.4.1 VPC—网络配置 301
12.4.2 缓存—安全组、子网组、缓存集群 302
12.4.3 数据库—安全组、子网组、数据库实例 303
12.4.4 虚拟机—安全组、EC2 实例 304
12.4.5 测试 Discourse 的CloudFormation 模板 306
12.5 监控缓存 307
12.5.1 监控主机相关指标 308
12.5.2 内存是否足够? 309
12.5.3 Redis 只读副本是否保持 309
12.6 优化缓存性能 309
12.6.1 选择合适的节点类型 310
12.6.2 选择正确的部署选项 311
12.6.3 压缩数据 311
12.7 小结 311
第 13章 面向NoSQL数据库服务的编程:DynamoDB 312
13.1 操作 DynamoDB 314
13.1.1 管理 314
13.1.2 定价 314
13.1.3 网络 315
13.1.4 与 RDS 对比 315
13.1.5 与其他 NoSQL 数据库对比 316
13.2 开发人员需要了解的DynamoDB 316
13.2.1 表、项目和属性 316
13.2.2 主键 317
13.2.3 本地 DynamoDB 318
13.3 编写待办事项应用 318
13.4 创建表 320
13.4.1 通过分区键标识用户 320
13.4.2 通过分区键和排序键标识任务 321
13.5 添加数据 323
13.5.1 添加用户 324
13.5.2 添加任务 325
13.6 检索数据 325
13.6.1 通过键来获取项目 326
13.6.2 通过键和过滤器查询项目 327
13.6.3 使用全局辅助索引进行更灵活的查询 329
13.6.4 扫描和过滤表中的所有数据 332
13.6.5 终一致的数据检索 333
13.7 删除数据 333
13.8 修改数据 334
13.9 扩展容量 335
13.9.1 容量单元 336
13.9.2 自动扩展 337
13.10 小结 339
第四部分 在 AWS 上搭架构
第 14 章 实现高可用性: 可用区、自动扩展以及 CloudWatch 343
14.1 用CloudWatch从EC2实例故障中恢复 344
14.1.1 创建 CloudWatch 警报来在状态检查失败时触发恢复 345
14.1.2 根据CloudWatch警报监控和恢复虚拟机 347
14.2 从数据中心中断中恢复 350
14.2.1 可用区:一组独立的数据中心 351
14.2.2 用自动扩展确保 EC2 实例一直运行 354
14.2.3 借助自动扩展将出现故障的虚拟机恢复到另一个可用区 356
14.2.4 隐患:网络附加存储恢复 359
14.2.5 隐患:网络接口恢复 363
14.3 分析灾难恢复的必要条件 367
14.4 小结 368
第 15 章 基础设施解耦: ELB 与 SQS 369
15.1 利用负载均衡器进行同步解耦 370
15.2 利用消息队列进行异步解耦 375
15.2.1 将同步过程转换成异步过程 376
15.2.2 URL2PNG 应用的架构 377
15.2.3 创建消息队列 377
15.2.4 以编程方式生产消息 378
15.2.5 以编程方式消费消息 379
15.2.6 使用 SQS 传递消息的局限性 383
15.3 小结 384
第 16 章 容错设计 385
16.1 使用冗余 EC2 实例提高可用性 387
16.1.1 冗余可以消除单点故障 387
16.1.2 冗余需要解耦 389
16.2 使代码容错的注意事项 390
16.2.1 让其崩溃,而且重试 390
16.2.2 幂等重试使容错成为可能 391
16.3 构建容错 Web 应用:Imagery 393
16.3.1 幂等状态机 396
16.3.2 实现容错的 Web 服务 397
16.3.3 实现容错的工作进程来消费 SQS 消息 404
16.3.4 部署应用 407
16.4 小结 413
第 17 章 向上或向下扩展:自动扩展和CloudWatch 414
17.1 管理动态EC2实例池 416
17.2 使用指标或计划触发扩展 419
17.2.1 根据计划进行扩展 420
17.2.2 根据 CloudWatch 指标进行扩展 421
17.3 解耦动态EC2实例池 423
17.3.1 通过负载均衡器同步解耦扩展动态 EC2 实例池 424
17.3.2 通过队列异步解耦扩展动态EC2 实例池 428
17.4 小结 432
附录 A 术语及缩写 433
第 1 章 什么是 AWS 3
1.1 什么是云计算 4
1.2 AWS 可以做什么 4
1.2.1 托管一家网店 5
1.2.2 在专用网络内运行 Java EE 应用 6
1.2.3 实施高可用的系统 7
1.2.4 从批量处理基础设施的低成本中获益 8
1.3 如何从使用 AWS 上获益 9
1.3.1 创新和快速发展的平台 9
1.3.2 解决常见问题的服务 9
1.3.3 启用自动化 9
1.3.4 灵活的容量(可扩展性) 10
1.3.5 为失效而构建(可靠性) 10
1.3.6 缩短上市的时间 10
1.3.7 从规模经济中受益 11
1.3.8 全球基础设施 11
1.3.9 专业的合作伙伴 11
1.4 费用是多少 11
1.4.1 免费套餐 12
1.4.2 账单样例 12
1.4.3 按使用付费的机遇 13
1.5 同类对比 14
1.6 探索 AWS 服务 14
1.7 与 AWS 交互 17
1.7.1 管理控制台 18
1.7.2 CLI 18
1.7.3 SDK 19
1.7.4 蓝图 20
1.8 创建一个 AWS 账户 20
1.8.1 注册 21
1.8.2 登录 25
1.8.3 创建一个密钥对 26
1.9 创建账单警报跟踪 AWS 账单 29
1.10 小结 32
第 2 章 一个简单示例:5 分钟搭建WordPress 站点 33
2.1 创建基础设施 34
2.2 探索基础设施 40
2.2.1 资源组 40
2.2.2 虚拟机 41
2.2.3 负载均衡器 43
2.2.4 MySQL 数据库 44
2.2.5 网络文件系统 46
2.3 成本是多少 47
2.4 删除基础设施 48
2.5 小结 49
第二部分 搭建由计算机和网络组成的虚拟基础设施
第 3 章 使用虚拟机:EC2 53
3.1 探索虚拟机 53
3.1.1 启动虚拟机 54
3.1.2 连接到虚拟机 65
3.1.3 手动安装和运行软件 68
3.2 监控和调试虚拟机 69
3.2.1 显示虚拟机的日志 69
3.2.2 监控虚拟机的负载 70
3.3 关闭虚拟机 71
3.4 更改虚拟机的大小 72
3.5 在另一个数据中心启动虚拟机 75
3.6 分配一个公有 IP 地址 78
3.7 向虚拟机添加额外的网络接口 80
3.8 优化虚拟机的开销 84
3.8.1 预留虚拟机 85
3.8.2 对未用虚拟机出价 87
3.9 小结 91
第 4 章 编写基础设施: 命令行、SDK 和 CloudFormation 92
4.1 基础设施即代码 94
4.1.1 自动化和 DevOps 迁移 94
4.1.2 开发一种基础设施语言:JIML 94
4.2 使用 CLI 98
4.2.1 为什么要自动化 98
4.2.2 安装 CLI 98
4.2.3 配置 CLI 99
4.2.4 使用 CLI 102
4.3 使用 SDK 编程 106
4.3.1 使用 SDK 控制虚拟机:nodecc 106
4.3.2 nodecc 如何创建一台虚拟机 107
4.3.3 nodecc 如何列出虚拟机并显示虚拟机的详细信息 108
4.3.4 nodecc 如何终止一台虚拟机 109
4.4 使用蓝图来启动一台虚拟机 110
4.4.1 CloudFormation 模板解析 111
4.4.2 创建第 一个模板 114
4.5 小结 120
第 5 章 自动化部署: CloudFormation、 Elastic Beanstalk 和 OpsWorks 121
5.1 在灵活的云环境中部署应用 122
5.2 比较部署工具 123
5.2.1 对部署工具进行分类 123
5.2.2 比较部署服务 123
5.3 使用 AWS CloudFormation 创建虚拟机并在启动时运行部署脚本 124
5.3.1 在服务器启动时用用户数据来运行脚本 125
5.3.2 将 VPN 服务器 OpenSwan 部署到虚拟机 125
5.3.3 从零开始而不是更新 129
5.4 使用 AWS Elastic Beanstalk 部署简单的 Web 应用 130
5.4.1 Elastic Beanstalk 组件 130
5.4.2 使用 Elastic Beanstalk 部署一个 Node.js 应用Etherpad 131
5.5 使用 AWS OpsWorks Stacks 部署多层应用 135
5.5.1 AWS OpsWorks Stacks 的组件 136
5.5.2 使用 AWS OpsWorks Stacks 部署 IRC 聊天应用 138
5.6 小结 147
第 6 章 保护系统安全:IAM、 安全组和 VPC 148
6.1 谁该对安全负责 149
6.2 使软件保持 150
6.2.1 检查安全更新 150
6.2.2 在虚拟机启动时安装安全更新 151
6.2.3 在正在运行的虚拟机上安装安全更新 152
6.3 保护 AWS 账户安全 153
6.3.1 保护 AWS 账户的 root 用户安全 154
6.3.2 AWS 身份和访问管理 155
6.3.3 使用 IAM 策略定义权限 156
6.3.4 用户用于身份认证,组用于组织用户 158
6.3.5 使用角色认证AWS资源 159
6.4 控制进出虚拟机的网络流量 161
6.4.1 使用安全组控制虚拟机的流量 162
6.4.2 允许 ICMP 流量 163
6.4.3 允许 SSH 流量 164
6.4.4 允许来自源 IP 地址的SSH 流量 165
6.4.5 允许来自源安全组的SSH 流量 166
6.5 在云中创建一个专用网络:亚马逊虚拟私有云 170
6.5.1 创建VPC和互联网网关 171
6.5.2 定义公有堡垒主机子网 172
6.5.3 添加私有 Apache Web 服务器子网 174
6.5.4 在子网中启动虚拟机 175
6.5.5 通过 NAT 网关从私有子网访问互联网 176
6.6 小结 178
第 7 章 用 Lambda 自动化 操作任务 179
7.1 用 AWS Lambda 运行代码 180
7.1.1 什么是无服务器 180
7.1.2 在 AWS Lambda 上运行代码 180
7.1.3 比较 AWS Lambda 与虚拟机(Amazon EC2) 181
7.2 用 AWS Lambda 构建网站健康状况检查 182
7.2.1 创建 Lambda 函数 183
7.2.2 用 CloudWatch 搜索 Lambda 函数的日志 188
7.2.3 用 CloudWatch 指标和警报监视 Lambda 函数 190
7.2.4 访问 VPC 中的端点 194
7.3 自动添加包含 EC2 实例所有者的标签 196
7.3.1 事件驱动:订阅 CloudWatch 事件 196
7.3.2 在 Python 中实现 Lambda 函数 199
7.3.3 用无服务器应用模型设置Lambda 函数 200
7.3.4 授权 Lambda 函数用具有IAM 角色的其他 AWS 服务 201
7.3.5 用 SAM 部署 Lambda 函数 202
7.4 用 AWS Lambda 还能做什么 203
7.4.1 AWS Lambda 有哪些限制 203
7.4.2 无服务器定价模式的影响 203
7.4.3 使用场景:Web 应用 204
7.4.4 使用场景:数据处理 205
7.4.5 使用场景:物联网后端 206
7.5 小结 206
第三部分 在云中存储数据
第 8 章 存储对象:S3 和 Glacier 211
8.1 什么是对象存储 212
8.2 Amazon S3 212
8.3 使用 AWS CLI 在 S3 上备份数据 214
8.4 归档对象以优化成本 216
8.4.1 创建 S3 存储桶来配合Glacier 使用 217
8.4.2 添加生命周期规则到存储桶 218
8.4.3 实验 Glacier 和生命周期规则 220
8.5 以编程的方式存储对象 222
8.5.1 设置 S3 存储桶 224
8.5.2 安装使用 S3 的Web 应用 224
8.5.3 检查使用 SDK 访问 S3 的代码 224
8.6 使用 S3 来实现静态网站托管 226
8.6.1 创建存储桶并上传一个静态网站 227
8.6.2 配置存储桶来实现静态网站托管 227
8.6.3 访问 S3 上托管的网站 228
8.7 使用 S3 的实践 229
8.7.1 确保数据一致性 229
8.7.2 选择正确的键 230
8.8 小结 231
第 9 章 在硬盘上存储数据: EBS 和实例存储 232
9.1 弹性块存储:通过网络附加的持久的块级别存储 233
9.1.1 创建 EBS 卷并将其附加到EC2 实例 234
9.1.2 使用 EBS 234
9.1.3 调整性能 236
9.1.4 使用 EBS 快照备份数据 238
9.2 实例存储:临时块存储 240
9.2.1 使用实例存储 243
9.2.2 测试性能 244
9.2.3 备份数据 244
9.3 小结 245
第 10 章 在机器之间共享数据卷:EFS 246
10.1 创建文件系统 248
10.1.1 用 CloudFormation 描述文件系统 248
10.1.2 定价 249
10.2 创建安装目标 249
10.3 在 EC2 实例上安装EFS 共享 251
10.4 在 EC2 实例之间共享文件 254
10.5 调整性能 255
10.5.1 性能模式 255
10.5.2 预期吞吐量 256
10.6 监视文件系统 256
10.6.1 是否应使用 I/O 性能模式 257
10.6.2 监控你的允许吞吐量 258
10.6.3 监控你的使用情况 259
10.7 备份数据 259
10.7.1 使用 CloudFormation 描述EBS 卷 260
10.7.2 使用 EBS 卷 260
10.8 小结 262
第 11 章 使用关系数据库服务: RDS 263
11.1 开始使用 MySQL 数据库 265
11.1.1 用 RDS 数据库启动WordPress 平台 265
11.1.2 探索带有 MySQL 引擎的RDS 数据库实例 268
11.1.3 Amazon RDS 的定价 268
11.2 将数据导入数据库 268
11.3 备份和还原数据库 271
11.3.1 配置自动快照 271
11.3.2 手动创建快照 272
11.3.3 还原数据库 273
11.3.4 复制数据库到另一个区域 274
11.3.5 计算快照费用 275
11.4 控制对数据库的访问 275
11.4.1 控制对 RDS 数据库配置的访问 276
11.4.2 控制对 RDS 数据库的网络访问 277
11.4.3 控制对数据的访问 277
11.5 依赖高可用数据库 278
11.6 调整数据库的性能 280
11.6.1 增加数据库资源 281
11.6.2 使用读复制来提高读性能 282
11.7 监控数据库 284
11.8 小结 286
第 12 章 使用内存缓存数据:Amazon ElastiCache 287
12.1 创建缓存集群 291
12.1.1 小 CloudFormation 模板 292
12.1.2 测试 Redis 集群 293
12.2 缓存部署选项 294
12.2.1 Memcached 集群 295
12.2.2 Redis 单节点集群 295
12.2.3 Redis 禁用集群模式的集群 296
12.2.4 Redis 启用集群模式的集群 297
12.3 控制缓存访问 298
12.3.1 控制访问配置选项 298
12.3.2 控制网络访问 299
12.3.3 控制集群和数据访问 299
12.4 使用 CloudFormation 安装示例 Discourse 应用 300
12.4.1 VPC—网络配置 301
12.4.2 缓存—安全组、子网组、缓存集群 302
12.4.3 数据库—安全组、子网组、数据库实例 303
12.4.4 虚拟机—安全组、EC2 实例 304
12.4.5 测试 Discourse 的CloudFormation 模板 306
12.5 监控缓存 307
12.5.1 监控主机相关指标 308
12.5.2 内存是否足够? 309
12.5.3 Redis 只读副本是否保持 309
12.6 优化缓存性能 309
12.6.1 选择合适的节点类型 310
12.6.2 选择正确的部署选项 311
12.6.3 压缩数据 311
12.7 小结 311
第 13章 面向NoSQL数据库服务的编程:DynamoDB 312
13.1 操作 DynamoDB 314
13.1.1 管理 314
13.1.2 定价 314
13.1.3 网络 315
13.1.4 与 RDS 对比 315
13.1.5 与其他 NoSQL 数据库对比 316
13.2 开发人员需要了解的DynamoDB 316
13.2.1 表、项目和属性 316
13.2.2 主键 317
13.2.3 本地 DynamoDB 318
13.3 编写待办事项应用 318
13.4 创建表 320
13.4.1 通过分区键标识用户 320
13.4.2 通过分区键和排序键标识任务 321
13.5 添加数据 323
13.5.1 添加用户 324
13.5.2 添加任务 325
13.6 检索数据 325
13.6.1 通过键来获取项目 326
13.6.2 通过键和过滤器查询项目 327
13.6.3 使用全局辅助索引进行更灵活的查询 329
13.6.4 扫描和过滤表中的所有数据 332
13.6.5 终一致的数据检索 333
13.7 删除数据 333
13.8 修改数据 334
13.9 扩展容量 335
13.9.1 容量单元 336
13.9.2 自动扩展 337
13.10 小结 339
第四部分 在 AWS 上搭架构
第 14 章 实现高可用性: 可用区、自动扩展以及 CloudWatch 343
14.1 用CloudWatch从EC2实例故障中恢复 344
14.1.1 创建 CloudWatch 警报来在状态检查失败时触发恢复 345
14.1.2 根据CloudWatch警报监控和恢复虚拟机 347
14.2 从数据中心中断中恢复 350
14.2.1 可用区:一组独立的数据中心 351
14.2.2 用自动扩展确保 EC2 实例一直运行 354
14.2.3 借助自动扩展将出现故障的虚拟机恢复到另一个可用区 356
14.2.4 隐患:网络附加存储恢复 359
14.2.5 隐患:网络接口恢复 363
14.3 分析灾难恢复的必要条件 367
14.4 小结 368
第 15 章 基础设施解耦: ELB 与 SQS 369
15.1 利用负载均衡器进行同步解耦 370
15.2 利用消息队列进行异步解耦 375
15.2.1 将同步过程转换成异步过程 376
15.2.2 URL2PNG 应用的架构 377
15.2.3 创建消息队列 377
15.2.4 以编程方式生产消息 378
15.2.5 以编程方式消费消息 379
15.2.6 使用 SQS 传递消息的局限性 383
15.3 小结 384
第 16 章 容错设计 385
16.1 使用冗余 EC2 实例提高可用性 387
16.1.1 冗余可以消除单点故障 387
16.1.2 冗余需要解耦 389
16.2 使代码容错的注意事项 390
16.2.1 让其崩溃,而且重试 390
16.2.2 幂等重试使容错成为可能 391
16.3 构建容错 Web 应用:Imagery 393
16.3.1 幂等状态机 396
16.3.2 实现容错的 Web 服务 397
16.3.3 实现容错的工作进程来消费 SQS 消息 404
16.3.4 部署应用 407
16.4 小结 413
第 17 章 向上或向下扩展:自动扩展和CloudWatch 414
17.1 管理动态EC2实例池 416
17.2 使用指标或计划触发扩展 419
17.2.1 根据计划进行扩展 420
17.2.2 根据 CloudWatch 指标进行扩展 421
17.3 解耦动态EC2实例池 423
17.3.1 通过负载均衡器同步解耦扩展动态 EC2 实例池 424
17.3.2 通过队列异步解耦扩展动态EC2 实例池 428
17.4 小结 432
附录 A 术语及缩写 433
猜您喜欢