跳到正文Seminar Week 7 Summary · Jimmy Huang's Blog本周可以理解为 AWS 核心服务的系统梳理,重点不是背下所有 AWS 服务名称,而是理解:
课堂中特别强调:Applied Session 会开始使用 AWS 账号进行操作,因此需要确保 AWS 账号已经准备好。同时,学生账号通常受到预设 IAM 权限限制,不一定能访问所有 AWS 服务。
AWS 概览
AWS 是什么
亚马逊云服务(Amazon Web Services, AWS)是一个云端基础设施平台,提供高度可靠、可扩展、按需使用、按量计费的云服务。
AWS 不只是“租几台云服务器”,而是一个完整的云服务生态。
AWS 服务数量的变化
课件中用 2012、2019、2025 的 AWS 服务列表对比说明:AWS 服务数量增长非常快,服务分类也越来越细。
学习时不需要逐个死记所有服务,而应该抓住几个核心类别:
AWS Global Infrastructure
Region、Availability Zone 和 Edge Location
Region(区域)
区域(Region)是 AWS 在全球不同地理位置建立的独立基础设施区域。
用户在哪里,选择靠近用户的 Region 可以降低延迟。
数据合规要求,例如数据是否必须留在某个国家或地区。
服务可用性,不是所有 AWS 服务都在每个 Region 提供。
成本,不同 Region 的价格可能不同。
Availability Zone(可用区)
可用区(Availability Zone, AZ)可以理解为一个 Region 内相互隔离的数据中心集合
Edge Location(边缘节点)
边缘节点(Edge Location)主要用于缓存内容,典型服务是 CloudFront。
用户距离源站太远,访问静态内容或媒体内容延迟高。
全球用户访问同一批资源时,源站压力大。
希望把内容缓存到更靠近用户的位置。
课件提到,边缘节点数量远多于 Region。可以这样理解:
Region / AZ 主要负责“运行服务和存放数据”;
Identity Access Management(IAM)
IAM 是什么
身份与访问管理(Identity Access Management, IAM)用于管理 AWS 用户、服务和资源之间的访问权限。
谁可以登录 AWS Console。
谁可以访问某个 AWS 服务。
某个服务是否可以调用另一个服务。
某个用户或服务能执行哪些操作。
课堂中强调,IAM 不只是管理“人”的权限,也管理 AWS 服务之间的访问关系。例如:
EC2 实例需要访问 S3。
某个数据库服务需要读取存储服务。
某个应用需要调用另一个 AWS 服务。
IAM 的核心功能
集中控制 AWS 账号访问。
支持共享访问。
支持细粒度权限(Granular Permissions)。
支持身份联合(Identity Federation),例如 Active Directory、Facebook、LinkedIn 等。
支持多因素认证(Multi-Factor Authentication, MFA)。
支持临时访问权限。
支持密码轮换策略。
能与大量 AWS 服务集成。
支持 PCI DSS 合规相关需求。
IAM 关键术语
Role 为什么重要
不推荐把 Access Key 和 Secret Key 直接存放在每台 EC2 实例上。
可以给 EC2 实例分配一个 Role,让实例通过角色获得访问其他服务的权限。
如果凭证发生变化,使用 Role 会更容易统一管理。
Role 是全局性的,可以在任意 Region 使用。
Role 可以在 EC2 创建后再分配。
Storage Services
简单存储服务(Amazon Simple Storage Service, Amazon S3)
存储网关(AWS Storage Gateway)
弹性块存储(Amazon Elastic Block Store, Amazon EBS)
弹性文件系统(Amazon Elastic File System, Amazon EFS)
Amazon S3
S3 是什么
简单存储服务(Simple Storage Service, S3)是 AWS 的对象存储服务。
S3 不是传统意义上的“硬盘目录”,而是一个面向对象的云端文件存储系统。
Bucket 和 Object
Bucket 类似一个顶层容器或文件夹。
Object 是存储在 Bucket 中的文件或对象。
Bucket 名称需要全局唯一,因为它会参与 URL 解析。
Object 名称不需要在全球唯一,只需要在对应 Bucket 或路径上下文中可区分。
S3 一致性
S3 的可用性和持久性
高持久性不等于永远不会访问失败;高可用性也不等于数据一定不会丢。
S3 的核心功能
分层存储(Tiered Storage)
版本控制(Versioning)
生命周期管理(Lifecycle Management)
传输中加密(Encryption in Transit),例如 SSL/TLS
静态数据加密(Encryption at Rest),例如 SSE-S3、SSE-KMS、SSE-C
MFA 删除(MFA Delete)
访问控制列表(Access Control Lists, ACL)
Bucket Policy
S3 Storage Classes
不同 S3 存储层解决的是成本、访问频率、可用性和恢复速度之间的取舍。
如何选择 S3 存储层
如果数据频繁访问,并且访问速度很重要:选择 S3 Standard。
如果数据不常访问,但一旦访问需要较快拿到:选择 S3-IA。
如果数据不关键,可以接受单可用区风险,并且想降低成本:选择 S3 One Zone-IA。
如果数据访问频率不确定:选择 S3 Intelligent-Tiering。
如果数据只是归档,短期内很少访问:选择 S3 Glacier。
如果数据是长期归档,几乎不访问:选择 S3 Glacier Deep Archive。
如果图片只是临时使用或不常访问,可以考虑 S3-IA。
如果图片会被频繁访问,可以考虑 S3 Standard。
如果不同书籍图片访问频率差异很大,可以考虑 S3 Intelligent-Tiering。
S3 成本与访问控制
S3 如何计费
Versioning 的优点和风险
版本控制(Versioning)可以让 S3 保留对象的多个版本。
可以回滚到旧版本。
可以避免误覆盖导致数据丢失。
类似 Git 的历史版本管理思想。
每个版本都可能占用存储空间。
如果大文件反复上传,成本可能明显增加。
配置不当可能导致账单上升。
ACL 和 Bucket Policy
不能只看 ACL,也不能只看 Bucket Policy,要结合判断。
访问权限不能过于开放,否则有安全风险。
访问权限也不能过于严格,否则别人无法访问你的服务或文件。
Assignment 中如果服务在自己账号里能运行,但老师或其他人无法访问,常见原因就是 S3 对象、ACL 或 Bucket Policy 没有正确配置。
CloudFront
CloudFront 是什么
CloudFront 是 AWS 的内容分发网络(Content Delivery Network, CDN)服务。
把内容缓存到靠近用户的位置。
降低用户访问延迟。
减轻源站压力。
提升全球用户访问体验。
CloudFront 工作流程
CloudFront 的基本流程是:
将对象放入 S3 Bucket,并根据需要设置为可公开读取。
创建 CloudFront Distribution。
获取 CloudFront 生成的域名。
使用以下格式构建对象 URL:
用户请求对象。
CloudFront 将请求路由到最合适的边缘节点。
如果边缘节点已经缓存对象,直接返回给用户。
如果没有缓存,则从源站获取对象。
对象被缓存到边缘节点,直到 TTL 到期。
用户获得数据。
为什么需要 TTL
TTL 的作用不是随便设置一个过期时间,而是解决缓存资源有限的问题。
近期频繁访问的数据。
靠近当前用户群体的数据。
对延迟敏感的数据。
如果某个对象长时间没有被访问,缓存就应该释放空间给更需要的数据。
S3 + CloudFront Case Study:网络书店图片
如何把网络书店的图片存入 S3?
如何降低全球用户访问图片的响应时间?
使用 S3 存储书籍图片,因为 S3 可靠、可扩展。
图片如果需要给用户访问,需要配置合适的公开访问或受控访问策略。
选择靠近主要用户的 Region,降低源站延迟。
使用 CloudFront 把图片分发到边缘节点,提高全球访问速度,并应对访问高峰。
Migration and Data Transfer
为什么需要物理数据迁移服务
当数据量非常大时,例如 TB、PB 甚至更高,仅通过网络传输可能耗时过长,也可能占用过多网络带宽。
AWS 提供一些物理迁移设备和服务,用于把大量数据迁入或迁出 AWS。
Snowball、Snowball Edge 和 Snowmobile
AWS Storage Gateway
Storage Gateway 是什么
存储网关(AWS Storage Gateway)用于连接本地环境(On-premises)和 AWS 云存储。
它可以让本地应用在不完全重构的情况下,使用 AWS 云端存储能力。
它连接本地软件设备与 AWS 云存储。
可以作为物理设备或虚拟设备存在。
可以把本地数据复制到云端。
它适合混合云存储场景。
Storage Gateway 类型
Storage Gateway 适合那些暂时不想完全迁移到云端,但又想使用 AWS 存储能力的组织。
Compute Services
EC2 是什么
弹性计算云(Amazon Elastic Compute Cloud, Amazon EC2)是 AWS 的虚拟机计算服务。
EC2 就是 AWS 中最典型的“云服务器”服务。
其他计算服务
EC2 Instance Types and Purchasing Options
EC2 购买方式
课堂中强调,选择 EC2 购买方式时要看工作负载特征:
如果只是短期实验或流量不确定,用 On-Demand 更灵活。
如果长期稳定运行,用 Reserved 更省钱。
如果任务可以中断,用 Spot 可以显著降低成本。
如果需要物理隔离或专用硬件,用 Dedicated。
EC2 实例类型
课件列出的 EC2 实例类别包括:
Micro instances
General Purpose
Compute Optimized
FPGA instances
GPU graphics
GPU instances
GPU compute
Memory Optimized
Storage Optimized
EC2 Lifecycle
Amazon Machine Image(AMI)
AMI 是什么
亚马逊机器镜像(Amazon Machine Image, AMI)是启动 EC2 实例时使用的模板。
从一个 AMI 可以启动不同类型的 EC2 实例。
Elastic Block Store(EBS)
EBS 是什么
弹性块存储(Elastic Block Store, EBS)为 EC2 实例提供持久化的块级存储。
EBS 类型
CloudWatch
CloudWatch 是什么
CloudWatch 是 AWS 的监控与可观测性服务。
指标(Metrics)
日志(Logs)
性能数据
操作数据
CloudWatch Alarms
CloudWatch Alarm 可以根据阈值触发动作。
账单告警(Billing Alarm)
EC2 实例监控
自动扩缩容
Elastic Load Balancer
Route 53 Health Checks
EBS Gateways
Storage Gateways
CloudFront
如果 EC2 成本超过某个金额,发送通知或停止实例。
如果 CPU 使用率超过 80% 或 90%,发送通知。
如果负载持续升高,触发 Auto Scaling 增加实例。
如果某个资源状态异常,触发健康检查或通知。
CloudWatch 是 AWS 系统的“监控仪表盘 + 告警系统”。
Bootstrapping
Bootstrapping 是什么
引导配置(Bootstrapping)是指在 AWS 资源启动时,自动执行软件安装和配置脚本。
当启动一个 EC2 实例时,它通常只有默认配置。你可能还需要:
更新系统。
安装 Python、pip 或其他运行环境。
安装应用依赖。
下载模型或数据。
配置应用服务。
启动应用。
Bootstrapping 可以把这些步骤写成脚本,在实例启动时自动执行。
User Data 和 Metadata
169.254.169.254 是 link-local 地址,只能从实例内部访问。
User Data 主要用于“告诉实例启动时要做什么”;
Amazon Elastic File System(EFS)
EFS 是什么
弹性文件系统(Amazon Elastic File System, EFS)为 EC2 实例提供简单、可扩展、全托管的 NFS 文件系统。
EBS 和 EFS 的区别
EC2 Placement Policy
EC2 Placement Policy 用于决定实例在底层物理基础设施中的放置方式。
Clustered Placement Group
集群放置组(Clustered Placement Group)适合:
低网络延迟。
高网络吞吐。
实例之间通信非常频繁的场景。
例如高性能计算或分布式计算中,需要让实例尽量靠近。
Spread Placement Group
分散放置组(Spread Placement Group)适合:
少量关键实例。
希望实例分散到不同硬件上。
避免单点硬件故障影响多个关键实例。
Partitioned Placement Group
分区放置组(Partitioned Placement Group)适合:
多实例分布式系统。
HBase、HDFS 等大规模分布式数据系统。
通过分区实现故障隔离。
Database Services
数据库类型
Relational Databases in AWS
Amazon Aurora
Amazon Aurora 是 AWS 开发的关系型数据库引擎,兼容 MySQL 和 PostgreSQL。
兼容 MySQL 和 PostgreSQL。
结合速度、可靠性、可扩展性和可用性。
相比标准 MySQL 可提供最高约 5 倍性能。
相比标准 PostgreSQL 可提供最高约 3 倍性能。
存储可从 10GB 自动扩展到 64TB。
支持最高 32 vCPU 和 224GB 内存的实例。
至少跨 3 个 AZ,每个 AZ 两份数据副本,总共至少 6 份。
支持自动备份。
Multi-AZ:灾难恢复
多可用区(Multi-AZ)主要用于高可用和灾难恢复。
应用通过一个 DNS 地址访问数据库。
主数据库运行在一个 AZ。
备用数据库运行在另一个 AZ。
当主库失败时,系统可以切换到备用库。
用户仍然通过同一个数据库 DNS 地址访问。
Multi-AZ 的重点是“故障恢复和高可用”,不是为了提升读取性能。
Read Replicas:读扩展
只读副本(Read Replicas)主要用于扩展读取能力。
Backups
Automated Backups
自动备份(Automated Backups)的特点:
默认启用。
存储在 S3。
免费容量通常等于数据库大小。
可以定义备份时间窗口。
备份过程中可能带来延迟,I/O 可能短暂停止。
Database Snapshots
数据库快照(Database Snapshots)的特点:
是数据库在某个时间点的快照。
需要手动创建。
删除数据库会删除自动备份,但不会删除手动快照。
Automated Backup 更像系统自动帮你保留恢复点;
NoSQL and DynamoDB
NoSQL 是什么
非关系型数据库(Non-relational Database / NoSQL)不使用传统关系型数据库中的行和列表结构。
灵活数据模型。
高并发访问。
大规模互联网应用。
不适合或不需要复杂 SQL Join 的场景。
DynamoDB
Amazon DynamoDB 是 AWS 的键值和文档数据库。
Redshift
全托管。
云端 PB 级数据仓库。
用于收集、存储和分析大量数据。
可以结合商业智能(Business Intelligence, BI)工具获得业务洞察。
适合在线分析处理(Online Analytical Processing, OLAP)。
支持大规模并行处理(Massively Parallel Processing, MPP)。
ElastiCache
ElastiCache 是什么
ElastiCache 是 AWS 的内存缓存服务。
提升 Web 应用性能。
提升数据库访问性能。
缓存最常查询的信息。
减少重复数据库查询。
Memcached 和 Redis 对比
Route 53 and DNS
DNS 是什么
域名系统(Domain Name System, DNS)是一个分层、去中心化的命名系统。
Route 53 是什么
Route 53 是 AWS 提供的高可用、可扩展 DNS Web 服务。
域名解析。
根据策略把用户请求路由到不同资源。
结合健康检查实现故障切换。
支持全球化应用的访问优化。
Route 53 Routing Policies
Virtual Private Cloud(VPC)
VPC 是什么
虚拟私有云(Virtual Private Cloud, VPC)是 AWS 云中一个逻辑隔离的私有网络区域。
你可以在其中启动 AWS 资源,并自定义网络配置。
IP 地址范围。
子网(Subnet)。
路由表(Route Table)。
网络网关(Network Gateway)。
网络拓扑结构。
VPC 是你在 AWS 里自己定义的一块“虚拟数据中心网络”。
Sample VPC 图示逻辑
一个 AWS Region 中的 VPC。
Public Subnet。
Private Subnet。
Public Subnet 中可以放 Bastion Host 或公开实例。
Private Subnet 中可以放不直接暴露到公网的实例。
Security Group 用于控制实例级访问。
Network ACL 用于控制子网级访问。
Route Table 决定流量转发路径。
Internet Gateway 让 Public Subnet 访问互联网。
NAT Gateway 允许 Private Subnet 中的资源访问外部网络,但不直接暴露入站访问。
Virtual Private Gateway 用于连接外部私有网络。
Simple Queue Service(SQS)
SQS 是什么
简单队列服务(Simple Queue Service, SQS)是 AWS 最早的服务之一。
SQS 是一种消息队列服务,用于在应用组件之间存储和传递消息。
消息队列就是把“现在必须完成的核心业务”和“可以稍后处理的附加任务”拆开,让系统更稳、更快、更抗高并发。
让不同组件解耦。
让生产者和消费者不需要同时在线。
避免请求高峰直接压垮后端。
提高系统容错能力。
Standard Queue 和 FIFO Queue
Simple Notification Service(SNS)
SNS 是什么
简单通知服务(Simple Notification Service, SNS)是 AWS 的云端通知服务。
它允许开发者从应用中发布消息,并立即把消息发送给订阅者或其他应用。
移动设备 Push Notification。
SMS。
Email。
SQS。
HTTP endpoint。
SQS 和 SNS 的区别
Streaming Data and Kinesis
Streaming Data 是什么
流数据(Streaming Data)是由不同数据源持续生成的数据。
持续产生。
通常由多个数据源同时发送。
单条数据通常较小,例如 KB 级。
需要增量处理,而不是等全部数据收集完再处理。
IoT 传感器数据。
股票价格。
网站和电商平台在线数据。
太阳能公司监控数据。
地理空间数据。
社交网络数据。
在线游戏数据。
Kinesis
Kinesis 是 AWS 用于接收、处理和分析流数据的平台。
How to Access AWS
本周的设计思维重点
本周反复强调的不是“知道一个服务名字”,而是要能根据场景做配置选择。
场景 1:全球用户访问图片慢
图片存 S3。
选择合适 S3 存储层。
设置合适访问权限。
使用 CloudFront 缓存到边缘节点。
选择靠近用户的 Region。
用 TTL 管理缓存生命周期。
场景 2:EC2 成本可能失控
使用 CloudWatch 监控费用或资源指标。
设置 Billing Alarm。
超过阈值时发送 SNS 通知。
必要时触发自动停止或扩缩容策略。
场景 3:应用需要访问 S3
不在 EC2 中硬编码 Access Key。
给 EC2 分配 IAM Role。
Role 绑定合适 Policy。
按最小权限原则授权访问目标 Bucket。
场景 4:数据库需要高可用和读扩展
Summary
AWS 全球基础设施由 Region、Availability Zone 和 Edge Location 组成。
IAM 用于管理用户、服务和资源之间的访问权限,是 AWS 安全的基础。
S3 是对象存储,重点要理解 Bucket、Object、存储层、访问控制、版本控制和成本。
CloudFront 是 CDN 服务,用于通过边缘节点降低全球访问延迟。
Snowball、Snowball Edge、Snowmobile 用于大规模数据迁移。
Storage Gateway 用于连接本地环境和 AWS 云存储。
EC2 是核心计算服务,需要理解实例类型、购买方式、生命周期、AMI、EBS、EFS 和 Placement Policy。
CloudWatch 用于监控、日志、指标和告警,也可以触发自动化动作。
AWS 数据库服务覆盖关系型数据库、NoSQL、数据仓库、缓存等不同需求。
Route 53 提供 DNS 和多种路由策略。
VPC 是 AWS 中自定义虚拟网络的基础。
SQS、SNS 和 Kinesis 分别对应队列、通知和流数据处理。
访问 AWS 可以通过 Console、CLI 和 SDK。
面对一个云应用场景,不要只说“用 AWS”或“用 S3 / EC2”。
https://s3-eu-west-1.amazonaws.com/goudarzi
domain_name/path_to_file_in_bucket
Pending -> Running -> Shutting Down -> Terminated
mgoudarzi.info -> 162.255.119.248
curl http://169.254.169.254/latest/user-data/
curl http://169.254.169.254/latest/meta-data/