AWS技术知识综合解析
1. 核心数据库服务
-
数据库类型
- 关系型数据库 :以列(属性)和行(记录)的形式存储数据。例如,在一个员工信息表中,每一列可以代表员工的一个属性,如姓名、年龄、职位等,每一行则代表一个员工的具体信息。
- 非关系型数据库 :包括键值存储和文档存储等,以集合或项的形式存储数据,不使用列和行。比如,在一个存储用户偏好设置的非关系型数据库中,每个用户的偏好设置可以作为一个项存储,项中包含不同的属性。
-
SQL操作
- INSERT :用于向关系型数据库中添加数据。例如,要向员工信息表中添加一条新员工记录,可以使用以下SQL语句:
INSERT INTO employees (name, age, position) VALUES ('John Doe', 30, 'Developer');
- **QUERY**:用于读取数据。例如,查询所有年龄大于25岁的员工信息:
SELECT * FROM employees WHERE age > 25;
- **CREATE**:用于创建表,但不能直接用于添加数据。例如,创建一个新的员工信息表:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
position VARCHAR(50)
);
-
非关系型数据库特点
- 无模式 :不需要预先定义表中要存储的所有数据类型。这使得数据存储更加灵活,可以根据实际需求随时添加或修改数据的属性。
- 主键 :每个表中的项需要有唯一的主键来标识。例如,在一个存储用户信息的非关系型数据库中,可以使用用户ID作为主键。
- 表的使用 :虽然允许创建多个表,但大多数使用非关系型数据库的应用程序通常只使用一个表。
- RDS实例存储 :RDS实例使用EBS卷进行存储,不再支持磁存储。实例卷用于临时存储,而不是数据库存储。可以对数据库实例进行快照,并将其恢复到具有新EBS卷的新实例,但RDS实例不能直接使用快照进行数据库存储。
- RDS数据库引擎选项 :PostgreSQL和Amazon Aurora是RDS数据库引擎的选项,而IBM dBase以及非关系型数据库DynamoDB和Redis不能作为RDS数据库引擎使用。
- Aurora数据库引擎 :Aurora是亚马逊的专有数据库引擎,可与现有的PostgreSQL和MySQL数据库配合使用,但不支持MariaDB、Oracle或Microsoft SQL Server。
-
数据保护
- Multi - AZ :可以保护数据免受可用区故障的影响,即使整个可用区发生故障,数据库也能继续正常运行。
- 快照 :可以在需要时恢复数据库到某个时间点。
- 读副本 :用于实现水平扩展,提高数据库读取性能,但不增加可用性,因为读副本不使用同步复制,可能会丢失一些数据。
- IOPS :是存储吞吐量的度量,与防止数据丢失无关。
- 垂直扩展 :指更改实例类,但与防止数据丢失无关。
-
DynamoDB相关特性
- 可用性 :在单个区域中,DynamoDB的最低月可用性为99.99%。
- 表项属性 :DynamoDB表中的项可以具有不同的属性,一个表可以存储包含多种数据类型的项,且不需要预先定义表中的项数,但表中的项不能有重复的主键。
- 性能优化 :增加WCU(写入容量单位)或启用自动扩展可以提高表的写入性能,而增加或减少RCU(读取容量单位)对写入性能没有影响,减少WCU会使写入性能变差。
- 查询操作 :扫描需要读取表存储的每个分区,而查询是针对主键进行的,DynamoDB可以只读取匹配项所在的分区。
- 主键选择 :主键在表中必须唯一,如随机生成的客户ID号适合作为主键,而全名、电话号码或城市可能不唯一。
-
Redshift相关特性
- Redshift Spectrum :可以分析存储在S3中的结构化数据。
- 数据仓库 :用于存储来自其他关系型数据库的大量结构化数据。
- 节点类型 :密集存储节点可用于集群中存储多达2PB的数据,密集计算节点可用于存储多达326TB的数据。
以下是一个简单的表格总结数据库相关特性:
| 数据库类型 | 存储方式 | 特点 |
| ---- | ---- | ---- |
| 关系型数据库 | 列和行 | 结构固定,需要预先定义表结构 |
| 非关系型数据库 | 集合或项 | 无模式,存储灵活 |
2. 核心网络服务
-
VPC相关
- 默认VPC :每个AWS账户在每个区域都会创建一个默认VPC,VPC跨越该区域内的所有可用区,但不跨越区域。
- CIDR范围 :VPC或子网的CIDR大小可以在/16到/28之间(包括/16和/28),例如10.0.0.0/28是有效的CIDR。
- 子网 :子网只存在于一个可用区,其CIDR必须是所在VPC的CIDR的子集。一个VPC至少需要有一个子网,但不要求必须有两个子网。
-
安全组和网络访问控制列表
- 安全组 :作为防火墙在实例级别操作。创建安全组时,默认包含一个允许访问任何IP地址的出站规则,不包含入站规则,且安全组规则只能允许访问,不能拒绝访问,未明确允许的流量将被拒绝。
- 网络访问控制列表 :作为防火墙在子网级别操作。
- VPC对等连接 :是两个VPC之间的私有连接,使用AWS私有网络,而不是公共互联网,与VPN连接不同。
-
Direct Connect和VPN连接
- Direct Connect :使用专用链路而不是互联网,提供可预测的延迟,不使用加密,但通过专用链路提供一定的安全性。
- VPN连接 :使用互联网进行传输,使用AES 128位或256位加密对数据进行加密,不需要专用硬件。
-
域名注册和Route 53
- 域名注册 :注册域名时,可以选择1年到10年的期限。如果使用Route 53,它会自动为该域名创建一个公共托管区域。注册商和DNS托管提供商不一定是同一个实体,但通常是。
-
Route 53路由策略
- 多值答案路由策略 :可以返回一组随机排序的多个值。
- 简单记录 :返回单个值。
- 故障转移路由策略 :默认将用户路由到主资源,除非主资源不可用,此时将用户路由到辅助资源。
- 延迟路由策略 :将用户发送到提供最低延迟的AWS区域的资源。
-
健康检查
:除简单路由策略外,所有Route 53路由策略都可以使用健康检查。
- 端点健康检查 :通过HTTP、HTTPS或TCP连接到受监控的端点。
- CloudWatch警报健康检查 :反映CloudWatch警报的状态。
- 计算健康检查 :从多个其他健康检查中得出其状态。
-
CloudFront相关
- 边缘位置 :CloudFront在六大洲都有边缘位置(南极洲较难到达),全球有超过150个边缘位置。使用的边缘位置越多,费用越高,选择最少的位置最具成本效益。
-
分发类型
- RTMP分发类型 :用于交付流媒体内容,需要提供媒体播放器。
- Web分发类型 :也可以流式传输音频或视频内容,但不需要提供媒体播放器。
- 源 :可以是EC2实例或公共S3存储桶,不能使用私有S3存储桶作为源。
以下是一个mermaid格式的流程图,展示VPC、子网和安全组的关系:
graph LR
A[VPC] --> B[子网1]
A --> C[子网2]
B --> D[安全组1]
C --> E[安全组2]
D --> F[实例1]
E --> G[实例2]
3. 自动化AWS工作负载
-
CloudFormation
- 功能 :可以创建AWS资源,并将它们作为一个堆栈进行集体管理。模板使用CloudFormation语言编写,不能创建AWS以外的资源,也不能防止对堆栈中的资源进行手动更改。
- 模板格式 :CloudFormation模板以YAML或JSON格式编写。
- 参数 :在创建CloudFormation堆栈时,参数允许用户输入自定义设置,而无需修改底层模板。参数不会阻止堆栈更新或未经授权的更改,无论模板是否使用参数,都可以使用它创建多个堆栈。
- 资源管理 :CloudFormation创建的资源被组织成堆栈。更新堆栈时,CloudFormation会分析堆栈中资源之间的关系,并在必要时更新依赖资源,但这并不意味着使用CloudFormation创建的任何资源都能按预期工作,并且使用CloudFormation配置资源不一定比使用AWS CLI更快。
- CodeCommit :是一个私有Git存储库,提供版本控制和差异比较功能,但不执行部署操作。差异比较功能可以让用户查看文件两个版本之间的差异,有助于找出引入错误的更改。版本控制允许用户恢复到文件的旧版本,差异比较功能不会识别重复的代码行或告知应用程序的部署时间。
-
持续集成和交付
- 持续集成 :是将代码签入存储库后立即通过构建或测试过程的实践。
- 持续交付和持续部署 :包括持续集成,并在过程中增加了部署环节。
-
CodeBuild
- 构建环境 :CodeBuild构建环境始终包含一个操作系统和一个Docker镜像,可能包含其他组件,但不是必需的。
- 支持的操作系统 :Build.general1.medium和Build.general1.large支持Windows和Linux操作系统,Build.general1.small仅支持Linux操作系统。
- CodeDeploy :可以将应用程序文件部署到Linux或Windows EC2实例,并将Docker容器部署到ECS,但不能将应用程序部署到智能手机,也不能将文件部署到S3存储桶。
- CodePipeline :至少由一个源阶段和一个部署阶段组成。
-
启动模板和Auto Scaling
- 启动模板 :可用于手动启动实例和与EC2 Auto Scaling一起使用,而启动配置不能用于手动启动实例。
-
Auto Scaling
- 组大小限制 :最大和最小组大小值限制了Auto Scaling组中的实例数量,期望容量(也称为组大小)是Auto Scaling通常会维持的实例数量,但如果动态扩展需要,Auto Scaling可以启动或终止实例。
- 自我修复 :当实例发生故障时,Auto Scaling会使用自我修复功能替换故障实例,以维持期望容量。
- 预测性扩展 :根据过去的使用模式创建计划扩展操作。
-
文档类型
- 命令文档 :可以在EC2实例上执行命令。
- 自动化文档 :可以在AWS上执行管理任务,如启动或停止实例。
-
OpsWorks
- 配置管理平台 :支持Puppet Enterprise和Chef配置管理平台,不支持SaltStack、Ansible或CFEngine。
- 层 :只有OpsWorks层至少包含一个EC2实例。
以下是一个表格总结自动化工具的功能:
| 工具名称 | 主要功能 |
| ---- | ---- |
| CloudFormation | 创建和管理AWS资源堆栈 |
| CodeCommit | 私有Git存储库,版本控制和差异比较 |
| CodeBuild | 构建代码 |
| CodeDeploy | 部署应用程序 |
| CodePipeline | 自动化部署流程 |
| Auto Scaling | 自动调整实例数量 |
4. 常见用例场景
- Well - Architected框架 :其五个支柱是可靠性、性能效率、安全性、成本优化和运营卓越,弹性不是其中之一。
-
安全操作
- 数据保护 :安全涉及保护数据的机密性、完整性和可用性。为每个AWS用户分配自己的IAM用户名和密码可以确保数据的机密性,启用S3版本控制可以通过维护对象的备份来保护数据的完整性。
- 访问控制 :应用程序负载均衡器监听器使用安全组来控制入站访问,需要应用一个具有允许HTTP访问的入站规则的安全组。不能将安全组应用于子网,只能应用网络访问控制列表。
-
性能优化
- 实例保护 :防止Auto Scaling组中的EC2实例意外终止,可以避免使其余实例负担过重并导致性能问题。
- 内容缓存 :使用CloudFront可以通过在靠近用户的边缘位置缓存内容来帮助提高最终用户的性能。
- 成本优化 :删除未使用的S3对象和未使用的应用程序负载均衡器可以降低成本,因为会对这两者收费,而删除未使用的VPC和空的S3存储桶不会降低成本,因为它们不产生费用。
- 运营卓越 :运营卓越关注加强可靠性、性能效率、安全性和成本优化这四个支柱,自动化是实现这些目标的关键。
-
静态网站托管
- S3托管 :要让S3托管静态网站,需要在S3服务控制台中启用存储桶托管,不需要禁用或启用默认加密或对象版本控制,不需要将存储桶中的所有对象公开,只需要公开希望S3提供服务的对象。
- 域名选择 :购买和使用自定义域名是获得友好URL的最佳选择,需要将存储桶命名为与域名相同。存储桶名称必须全局唯一,不能以数字开头。
- URL格式 :S3托管网站的URL格式是存储桶名称,后跟s3 - website -,然后是区域标识符,最后是amazonaws.com。
-
可靠性和健康检查
- 可靠性影响因素 :应用程序的可靠性可能会受到其依赖资源故障的影响,资源故障的一种方式是配置错误。
- 健康检查 :Auto Scaling组可以使用ELB健康检查来确定实例是否健康。
以下是一个mermaid格式的流程图,展示静态网站托管在S3的步骤:
graph LR
A[创建S3存储桶] --> B[启用存储桶托管]
B --> C[上传静态网站文件]
C --> D[配置域名(可选)]
D --> E[网站上线]
综上所述,AWS提供了丰富的数据库、网络、自动化和用例场景解决方案,通过合理使用这些服务和工具,可以构建出高效、安全、可靠且成本优化的应用系统。在实际应用中,需要根据具体需求选择合适的服务和配置,以达到最佳的效果。
超级会员免费看
1087

被折叠的 条评论
为什么被折叠?



