三层应用:web、app、DB。在任何情况下,DB 都必须无法从互联网访问。
Web 层使用公共子网 (ALB)。App 层和 DB 层使用私有子网。DB 安全组只允许来自 App 层安全组的流量(而非来自 CIDR 范围)。
原因: 子网路由表强制执行可达性;安全组到安全组的引用在 SG 层实现最小权限,并能在 IP 更改后保持有效。
AWS Certified Solutions Architect Associate
最后审核:2026年5月
SAA-C03 考试涉及的架构模式快速参考。从头到尾阅读,或跳转到任意章节。
三层应用:web、app、DB。在任何情况下,DB 都必须无法从互联网访问。
Web 层使用公共子网 (ALB)。App 层和 DB 层使用私有子网。DB 安全组只允许来自 App 层安全组的流量(而非来自 CIDR 范围)。
原因: 子网路由表强制执行可达性;安全组到安全组的引用在 SG 层实现最小权限,并能在 IP 更改后保持有效。
EC2 实例需要访问 S3。避免嵌入凭证。
通过实例配置文件附加 IAM 角色。SDK 从 IMDSv2 获取临时凭证。
原因: 实例上长期存在的访问密钥是凭证泄露的首要原因。角色会自动轮换,永不持久化。
阻止尝试读取 EC2 实例元数据的 SSRF 攻击。
在实例启动时强制使用 IMDSv2 (`HttpTokens=required`)。拒绝 IMDSv1 未经身份验证的请求。
原因: IMDSv2 要求在元数据端点响应之前,通过 PUT 获取会话令牌;只执行 GET 请求的 SSRF 攻击会被阻止。
账户 A 中的服务 A 调用账户 B 中的 Lambda。最小权限。
在目标 Lambda 上配置基于资源的策略,授予账户 A 的角色主体 `lambda:InvokeFunction` 权限。调用方承担自己的角色并直接调用——无需角色链。
原因: 资源策略是服务前端资源(Lambda、S3、SNS、SQS、KMS)最简单的跨账户模式。
其他 AWS 账户需要上传到中心 S3 存储桶。
存储桶策略授予外部账户主体 `s3:PutObject` 权限。添加 `bucket-owner-full-control` ACL 要求,以确保存储桶所有者保留对对象的控制权。
原因: 如果没有 `bucket-owner-full-control`(或 `BucketOwnerEnforced` 对象所有权),上传的对象将由写入方账户拥有。
防止组织中任何 S3 存储桶被设置为公开。
在账户级别启用 S3 Block Public Access(并通过 SCP 在组织范围内启用)。这将覆盖存储桶级别的 ACL 和策略。
原因: 账户级别设置优先于每个存储桶的设置——防御意外错误配置。
开发人员必须自行创建 IAM 角色,但不能授予超出定义的最高权限集。
在开发人员主体上设置权限边界。有效权限 = 身份策略 ∩ 边界。
原因: SCP 适用于账户/OU 级别;边界适用于单个主体。将边界用于委派管理模式。
将某个 OU 限制在特定区域,以遵守数据驻留合规性。
在 Organizations 中配置服务控制策略 (SCP),拒绝 `aws:RequestedRegion` 不在允许列表中的任何操作。
原因: SCP 是唯一能够拒绝账户本身允许的操作的机制。IAM 无法拒绝账户根用户可以授予的权限。
跨多个 AWS 账户的企业员工单点登录;与企业 IdP 集成。
AWS IAM Identity Center(以前称为 AWS SSO)与企业 IdP 通过 SAML/OIDC 联合。权限集映射到成员账户中的角色。
原因: Identity Center 是规范的多账户企业员工身份解决方案。Cognito 适用于应用程序最终用户,而非员工。
选择 Cognito 用户池 vs 身份池。
用户池 = 应用程序用户的注册/登录/JWT 颁发。身份池 = 交换令牌以获取临时 AWS 凭证。大多数应用程序同时使用两者:用户池进行身份验证,身份池授权 AWS 访问。
为 Cognito 登录添加自定义验证步骤(例如,允许列表电子邮件域)。
Lambda 触发器:预注册、预认证、定义/创建/验证认证挑战。在 Lambda 中进行验证或拒绝。
需要完全控制密钥轮换、删除和每个密钥的审计跟踪。
客户管理的 KMS 密钥 (CMK)。AWS 管理的密钥 (`aws/<service>`) 更简单,但不提供密钥策略控制或单个密钥使用情况的可见性。
原因: CMK 允许您在 CloudTrail 中按密钥范围控制访问,为跨账户使用设置密钥策略,以及禁用/安排删除。
账户 B 需要解密使用账户 A 的 CMK 加密的 S3 对象。
CMK 上的密钥策略授予账户 B 主体 `kms:Decrypt` 权限。账户 B 的 IAM 也需要对密钥 ARN 的 `kms:Decrypt` 权限。两者都必须具备。
原因: KMS 跨账户要求密钥策略和调用方 IAM 身份都明确允许(与大多数资源策略不同)。
在 `us-east-1` 中加密数据;复制后在 `us-west-2` 中解密,无需重新加密。
KMS 多区域密钥。一个区域是主密钥,另一个区域是副本密钥,两者具有相同的密钥材料和 ID。
原因: 避免了跨区域故障转移或灾难恢复时密文重新封装的繁琐操作。
加密大对象,避免每个对象的 KMS API 调用成本过高。
信封加密。KMS 生成一个数据密钥(一次 API 调用);使用数据密钥在本地加密负载;将加密数据密钥与密文一起存储。
原因: KMS 有速率限制,并按请求收费。信封模式是加密大于几 KB 数据的标准方式。
选择 Secrets Manager vs SSM Parameter Store SecureString。
具有自动轮换、跨账户共享、大型秘密的数据库凭证 → Secrets Manager。配置标志、应用程序设置、简单秘密、最低成本 → SSM Parameter Store。
原因: Secrets Manager 为 RDS/Aurora/DocumentDB/Redshift 内置了轮换 Lambda;Parameter Store 没有原生轮换功能,但标准层是免费的。
每 30 天自动轮换 RDS 密码。
Secrets Manager 具有托管轮换功能。内置 Lambda 模板处理针对 RDS 端点的单用户轮换。应用程序在连接时获取秘密(已缓存)——无需重新部署应用程序。
在不阻止合法流量高峰的情况下,缓解七层 HTTP 洪水攻击。
在 ALB 或 CloudFront 上使用 AWS WAF 基于速率的规则(例如,每个 IP 5 分钟内 2000 个请求)。结合托管规则组,用于已知的恶意 IP。
原因: WAF 速率规则跟踪每个源 IP;超过阈值时自动阻止;在窗口期结束后释放。
任务关键型应用程序需要 DDoS 成本保护和 24×7 SRT 支持。
在 CloudFront / ALB / NLB / Global Accelerator 上启用 AWS Shield Advanced。包括成本保护(攻击期间扩展支出的退款)+ Shield 响应团队访问权限。
原因: Shield Standard 是自动且免费的;Advanced 增加了保护和 SLA。CloudFront 始终是推荐的前门。
选择安全组 vs NACL。
有状态、附加到 ENI、仅允许 → 安全组(默认)。无状态、子网级别、允许 + 显式拒绝 → NACL。NACL 用于全面拒绝规则(阻止 IP 范围);安全组用于其他所有情况。
原因: NACL 分别评估入站和出站流量。安全组自动允许返回流量。
私有子网中的 EC2 必须访问 S3/DynamoDB,且无 NAT 出站费用。
S3 和 DynamoDB 的 VPC 网关端点。免费,路由表条目,无需 NAT。
原因: 网关端点仅适用于 S3/DynamoDB。节省 NAT 数据处理费用并将流量保留在 AWS 骨干网络上。
私有子网必须私密地访问 AWS 服务 API(KMS、Secrets Manager、ECR 等)。
每个服务的 VPC 接口端点 (PrivateLink)。ENI 在您的 VPC 中,按小时 + 每 GB 收费。
原因: 接口端点适用于几乎所有 AWS 服务。用于消除服务调用的 NAT 出站。
SaaS 提供商将其 VPC 内的服务私密地暴露给客户账户,无需 VPC 对等连接或维护客户路由。
由 NLB 支持的 AWS PrivateLink 端点服务。客户创建接口端点来消费。
原因: 没有 CIDR 重叠问题,没有对等连接网格,单向暴露(提供商看不到客户流量)。
在中心辐射型拓扑中连接跨账户和本地的 30 多个 VPC。
AWS Transit Gateway。每个 VPC 单个附件;路由表分段流量。
原因: 全网状对等连接需要 N×(N-1)/2 个连接。TGW 线性扩展,并通过 RAM 支持跨账户。
需要可预测带宽、低延迟和加密的混合连接。
通过 DX(MACsec 或 IPsec)的 Site-to-Site VPN 的 Direct Connect。仅 DX 是未加密的;通过 DX 的 VPN 是私有的 + 加密的 + 低抖动。
原因: 通过互联网的普通 VPN 便宜但延迟可变。仅 DX 快速但链路层是明文。
跨 VPC Flow Logs、DNS、CloudTrail、EKS 审计、S3 数据事件的持续威胁检测。
Amazon GuardDuty。通过 Organizations 委派管理员在组织范围内启用。
原因: 托管式威胁检测。调查结果汇入 Security Hub 或 EventBridge 以实现响应自动化。
在 S3 存储桶中发现和分类 PII / PHI。
Amazon Macie。基于机器学习的敏感数据发现,S3 范围,与 Security Hub 集成。
EC2、ECR 镜像、Lambda 函数的持续 CVE 扫描。
Amazon Inspector v2。通过 Systems Manager Agent 自动发现资源,扫描已发布的 CVE。
将 GuardDuty、Inspector、Macie、IAM Access Analyzer 的发现结果聚合到一个仪表板中。
AWS Security Hub。符合 AWS 基础安全最佳实践和 CIS 标准的 CSPM。
强制所有 EBS 卷都加密;自动修复不合规的资源。
AWS Config 规则(托管 `encrypted-volumes`)+ Systems Manager Automation runbook 用于修复,通过 Config 修复操作触发。
组织中所有账户的单一防篡改审计日志。
启用日志文件验证的组织跟踪,写入到一个具有拒绝删除策略的中心 S3 存储桶。
原因: 组织跟踪会自动在所有成员账户(当前和未来)中启用。验证哈希证明日志未被修改。
多个部门需要对共享 S3 存储桶中不同前缀的限定访问。
S3 访问点——每个部门一个,每个都有自己的访问策略和(可选的)VPC 限制。
原因: 比庞大的存储桶策略更简洁;访问点有自己的 ARN 和 DNS 名称。
PCI DSS 工作负载——与非 PCI 账户严格隔离。
Organizations OU 内的专用 AWS 账户,配置 SCP 限制服务/区域访问。独立的 VPC、KMS 密钥、IAM 角色。使用 Network Firewall 或 GWLB 进行出站检查。
原因: 账户边界是 AWS 中最强的爆炸半径隔离。
ALB 和 CloudFront 上 `*.example.com` 的公共 TLS 证书。自动续订。
AWS Certificate Manager (ACM) 公共证书,通过 Route 53 进行 DNS 验证。在到期前 60 天自动续订。
原因: 与 AWS 集成服务免费使用。电子邮件验证可行,但 DNS 验证更适合自动化。
具有亚分钟级故障转移的生产 RDS 数据库。
RDS Multi-AZ 部署(或 Multi-AZ DB 集群)。同步复制到备用实例;通过 DNS 端点切换自动故障转移。
原因: Multi-AZ 用于高可用性,而非读扩展。读副本用于扩展读取(且异步;可能存在延迟)。
为新的 MySQL/PostgreSQL 工作负载选择 Aurora vs RDS。
Aurora 用于更高吞吐量、更快故障转移、最多 15 个读副本、Global Database、Serverless v2。RDS 用于旧引擎(MariaDB、Oracle、SQL Server)或更简单/更便宜的部署。
原因: Aurora 存储在副本之间共享(无存储带来的副本延迟)。故障转移通常 < 30 秒。
RPO < 1 秒、RTO < 1 分钟的活跃-被动多区域数据库。
Aurora Global Database。存储级别复制到最多 5 个辅助区域;灾难时将辅助区域提升为主区域。
原因: 复制使用专用基础设施;跨区域延迟通常 < 1 秒。远程区域中的读副本用于低延迟本地读取。
具有空闲期的可变/不可预测的数据库负载。
Aurora Serverless v2。以 0.5 ACU 增量扩展;亚秒级扩展事件;没有完全暂停,但最低成本非常低。
原因: v2 在扩展事件期间保持连接打开(与 v1 不同)。按 ACU-秒计费。
在 3 个以上区域实现个位数毫秒级的读写,并采用“最后写入者胜”复制。
DynamoDB Global Tables。多活跃复制,采用“最后写入者胜”冲突解决。
原因: 每个区域都是活跃-活跃的;没有领导者。当应用程序级别的冲突容忍度可接受时使用。
意外删除后,将 DynamoDB 表恢复到过去 35 天内的特定时间点。
启用时间点恢复 (PITR)。恢复会在选定的秒数创建一个新表。
将流量路由到主区域;在健康检查失败时故障转移到辅助区域。
Route 53 故障转移路由策略。主端点上的主动健康检查;当主端点不健康时,辅助记录提供服务。
原因: 应用程序层健康检查(HTTP 路径)可捕获 TCP 探测遗漏的部分故障。
将每个用户发送到延迟最低且健康的区域。
Route 53 基于延迟的路由。对每个端点进行健康检查;Route 53 为每个查询返回延迟最低且健康的答案。
金丝雀发布:10% 流量到 v2,90% 流量到 v1。
Route 53 加权路由。两个相同名称的记录,指向不同目标,权重分别为 10 和 90。
EC2 实例初始化需要 3 分钟;在流量高峰期,横向扩展速度太慢。
Auto Scaling 预热池。预初始化实例保持停止状态(更便宜),可在几秒内启动。
原因: 冷启动 + 引导是瓶颈。预热池将该工作移出关键路径。
在缩容时,在实例终止前排空正在进行的任务并持久化日志。
Auto Scaling 生命周期挂钩在 `Terminating:Wait` 阶段。挂钩发布到 SNS/EventBridge;处理程序完成排空并调用 `complete-lifecycle-action`。
降低容忍中断的非关键集群的计算成本。
ASG 采用混合实例策略:基本容量使用 On-Demand,额外容量使用 Spot,多个实例类型和可用区进行多样化。
原因: 与单一池相比,在不同实例类型之间进行多样化可以降低 Spot 中断风险。
选择 ALB vs NLB。
HTTP/HTTPS、路径/主机路由、WAF 集成、OIDC 认证 → ALB。极限规模的 TCP/UDP/TLS、每个可用区的静态 IP、最低延迟、保留客户端源 IP → NLB。
在线插入第三方安全设备集群,用于跨 VPC 的流量检查。
Gateway Load Balancer (GWLB),以设备集群作为目标。通过 GENEVE 封装流量;通过路由实现透明插入。
“毒丸消息”导致处理程序持续失败并重新排队。
SQS Dead-Letter Queue。在源队列上配置 `maxReceiveCount`;超过此计数的邮件将移至 DLQ 以供检查。
每个消息组严格排序和恰好一次处理。
SQS FIFO 队列,具有基于内容的去重或显式 `MessageDeduplicationId`。使用 `MessageGroupId` 实现并行有序组。
原因: 标准 SQS 是至少一次(at-least-once)且不保证顺序。FIFO 吞吐量较低,除非使用高吞吐量模式。
异步 Lambda 在下游超时时失败——捕获失败事件以供重放。
Lambda Destinations:将失败目标配置为 SQS / SNS / EventBridge / 另一个 Lambda。也支持成功目标。
原因: 比函数上的 DLQ 更简洁:目标获取完整的事件 + 响应负载;DLQ 只获取触发事件。
多步骤工作流需要每个任务的重试,并带有指数退避和错误捕获。
AWS Step Functions 标准工作流。`Retry` 块包含 `IntervalSeconds`、`MaxAttempts`、`BackoffRate`。`Catch` 块将特定错误路由到恢复状态。
CloudFront 源(S3 或 ALB)失败——无需 DNS 更改即可回退到辅助源。
CloudFront 源组,包含主源 + 辅助源。配置故障转移标准(4xx/5xx 代码)。CloudFront 将针对辅助源重试。
通过一个保留策略,集中备份 EBS、RDS、DynamoDB、EFS、FSx。
AWS Backup,包含备份计划 + 通过标签选择资源。支持跨账户/跨区域复制。Vault Lock 用于合规性不可变性。
防勒索软件备份:即使管理员也无法在保留期结束前删除。
AWS Backup Vault Lock 处于合规模式。WORM(一次写入多次读取)强制执行;即使是根用户也无法缩短保留期。
根据 RPO/RTO 要求选择灾难恢复模式。
备份与恢复 (Backup & Restore):RPO 数小时,RTO 数小时,最便宜。试点灯 (Pilot Light):RPO 数分钟,RTO 数十分钟。暖备用 (Warm Standby):RPO 数秒,RTO 数分钟。多站点活跃-活跃 (Multi-Site Active-Active):RPO 接近零,RTO 数秒,最昂贵。
通过 S3 复制时间控制 (RTC),将关键存储桶跨区域复制以实现 RPO 小于 15 分钟的灾难恢复。
S3 Cross-Region Replication (CRR) with S3 Replication Time Control (RTC)。99.99% 的对象在 15 分钟内完成。
原因: 标准 CRR 是尽力而为的。RTC 增加了 SLA + CloudWatch 中的复制指标。
保护 S3 对象免受意外删除和勒索软件覆盖。
在关键存储桶上启用 S3 版本控制 + MFA 删除 + 对象锁定(治理或合规模式)。
原因: 版本控制保留覆盖/删除;对象锁定在保留期结束前阻止删除;MFA 删除为永久移除增加了第二个因子。
全球应用程序需要跨两个区域的零 RTO 故障转移。
跨区域活跃-活跃:入口使用 Global Accelerator 或 Route 53 延迟路由;数据使用 DynamoDB Global Tables / Aurora Global Database;对象存储使用跨区域复制。
具有低抖动的 TCP/UDP 流量路由到最近的健康区域;静态任播 IP。
AWS Global Accelerator。两个任播 IP;通过 AWS 骨干网络路由到最近的端点。
原因: 对于非 HTTP 流量,优于 Route 53 延迟。更快的故障转移(任播)+ 静态 IP 允许列表。
Lambda 处理来自 SQS 的订单——消息可能会被传递两次。
幂等性:在 DynamoDB 中存储请求哈希并设置 TTL;每次重试时执行 PUT-IfNotExists。或者使用带有去重功能的 FIFO 队列。
自愿的 Pod 驱逐(节点排空、集群自动扩缩器)导致部署的所有副本宕机。
Kubernetes PodDisruptionBudget 指定 `minAvailable` 或 `maxUnavailable`。集群在自愿中断期间会遵守它。
选择 S3 存储类。
频繁访问 → Standard。未知访问模式 → Intelligent-Tiering。30 天以上不频繁 → Standard-IA。可接受单可用区,不频繁 → One Zone-IA。归档,毫秒级检索 → Glacier Instant。归档,分钟级检索 → Glacier Flexible。归档,小时级检索,最便宜 → Glacier Deep Archive。
具有不可预测访问模式的混合访问存储桶;自动优化成本。
S3 Intelligent-Tiering。监控访问;自动在各个层级(频繁访问 / 不频繁访问 / 归档即时访问 / 归档 / 深度归档)之间移动对象。无检索费用。
原因: 每个对象的监控费用很小,但比错误猜测更便宜。未知模式的默认选择。
通过互联网可靠且快速地上传大对象(> 100 MB)。
S3 分段上传 (Multipart Upload)(并行分段)+ S3 Transfer Acceleration (CloudFront 边缘摄取)。
原因: 并行分段可以充分利用带宽;Transfer Acceleration 将广域网跳过卸载到 AWS 骨干网。
选择 EBS 卷类型。
通用型,默认 → gp3(基准 3000 IOPS,125 MB/s;可调)。高 IOPS 数据库 → io2 Block Express。大数据顺序吞吐量 → st1。冷归档 → sc1。启动卷 → gp3。
原因: gp3 将 IOPS/吞吐量与大小解耦;在同等性能下比 gp2 更便宜。
多个 EC2 实例必须读写同一个块存储卷。
io2 / io1 上的 EBS Multi-Attach(仅限 Nitro 实例)。在同一可用区中最多可同时附加到 16 个实例。
原因: 应用程序必须协调写入(集群文件系统)。EFS 是共享文件访问的默认选择;Multi-Attach 适用于需要块存储的集群数据库。
选择共享文件系统。
POSIX 兼容的 Linux NFS,多可用区,自动扩缩 → EFS。Windows SMB / AD 集成 → FSx for Windows。HPC, Lustre, S3 链接 → FSx for Lustre。NetApp ONTAP 功能(快照、NetApp 工具)→ FSx for ONTAP。ZFS → FSx for OpenZFS。
EFS — 选择吞吐量模式。
可变工作负载,随大小扩展 → Bursting。可预测的高吞吐量 → Provisioned。对突发敏感但希望弹性支出 → Elastic(新文件系统的默认选项,自动扩展)。
与 S3 / Glacier 集成的本地文件/块/磁带备份。
AWS Storage Gateway:File Gateway (NFS/SMB → S3),Volume Gateway (iSCSI → S3 + EBS 快照),Tape Gateway (VTL → Glacier)。
具有全球用户的静态资产 + API 响应;减少源站负载。
CloudFront 结合适当的缓存策略。静态内容使用长 TTL;缓存键仅包含必要的头部/查询字符串。高基数源站使用 Origin Shield。
原因: 缓存命中率决定性能和成本。错误的缓存键(例如,包含所有头部)会破坏命中率。
在边缘操作请求/响应。
轻量级、查看器端、亚毫秒级(头部重写、重定向、A/B 测试)→ CloudFront Functions。更重、Node.js / Python、更长计算时间、网络访问 → Lambda@Edge。
选择 ElastiCache Redis vs Memcached。
复制、持久性、发布/订阅、有序集、Multi-AZ 故障转移 → Redis。多线程、简单键/值、仅支持水平分片 → Memcached。
Redis 会话存储需要跨 AZ 的高可用性和自动故障转移。
ElastiCache for Redis 复制组,启用 Multi-AZ + 自动故障转移。主节点在一个 AZ,副本在其他 AZ。
DynamoDB 读取延迟从微秒级;无需应用程序更改即可缓存。
DynamoDB Accelerator (DAX)。VPC 内托管缓存;相同的 DynamoDB SDK;透明的读写穿透。
原因: ElastiCache 需要应用程序级别的缓存逻辑。DAX 对 DynamoDB 而言是即插即用的。
选择缓存策略。
惰性加载(缓存未命中 → 获取 + 填充):简单,只缓存请求的内容。写入穿透(更新时写入缓存 + 数据库):缓存始终最新,但有额外写入。TTL:限制两种模式下的数据陈旧性。
选择计算平台。
亚 15 分钟事件驱动、亚秒级扩缩、无基础设施 → Lambda。长时间运行容器、无节点管理 → Fargate。自定义内核、GPU、持久状态、最便宜的持续运行 → EC2。
Lambda Java 冷启动影响 p99 延迟。
Lambda SnapStart(Java、Python、.NET)。调用时恢复已初始化运行时的快照;冷启动速度提高多达 10 倍。
可预测的突发负载;冷启动不可接受。
预置并发。预热环境,随时可以以任何吞吐量调用。结合 Application Auto Scaling 进行计划性扩缩。
原因: 成本高于按需付费,但消除了冷启动。对于预置并发利用率自然保持较高水平的稳定流量则不需要。
选择 API Gateway 类型。
全功能集(请求验证、转换、API 密钥、使用计划)→ REST API。更低成本、更低延迟、原生 JWT/OIDC、更简单 → HTTP API。实时双向 → WebSocket API。
移动/Web 应用程序需要 GraphQL,并由 DynamoDB / Lambda 提供支持的实时订阅。
AWS AppSync。托管式 GraphQL、WebSocket 订阅、通过 Cognito / IAM / Lambda 授权器进行细粒度授权。
选择 Kinesis Data Streams vs Firehose vs Managed Service for Apache Flink vs MSK。
自定义消费者、毫秒级延迟、重放、多消费者扇出 → Data Streams。仅交付到 S3/Redshift/OpenSearch 并缓冲 → Firehose。流处理(窗口、连接)→ Managed Service for Apache Flink。Kafka 兼容 → MSK。
Athena 查询扫描数 TB 数据;成本/时间过高。
按查询谓词(日期、区域)对数据进行分区。转换为 Parquet/ORC 列式格式。使用分区投影以避免目录往返。
原因: Athena 按扫描的 TB 收费。列式 + 分区通常可将成本降低 10-100 倍。
无需将数据加载到 Redshift,直接从 Redshift 查询 S3 中的数据。
Redshift Spectrum。基于 Glue Data Catalog 的外部模式;Spectrum 节点扫描 S3 并将结果流回集群。
选择 DynamoDB 容量模式。
不可预测 / 峰值 / 新工作负载 → 按需模式 (On-demand)。稳定、可预测、热点——且对成本敏感 → 预置模式 (Provisioned) 并带自动扩缩。每 24 小时最多切换一次模式。
按非分区键的属性查询 DynamoDB。
全局二级索引 (GSI) 用于对不同分区键的查询。局部二级索引 (LSI) 用于相同分区键上的备用排序键(LSI 必须在表创建时创建)。
DynamoDB 会话表无限增长;会话在 24 小时后过期。
DynamoDB TTL 在数字纪元属性上。DynamoDB 异步删除过期项目,不收取写入容量费用。
HPC 工作负载需要尽可能低的节点间延迟。
集群置放群组 (Cluster placement group):同一可用区中同一物理机架上的实例。单流可达 10 Gbps。
原因: Spread placement → 最大隔离(高可用性);Partition → 大数据(Hadoop, Cassandra);Cluster → 最低延迟。
为稳定的 24×7 实例群选择 EC2 购买选项。
Compute Savings Plan(1 年或 3 年)——比标价便宜 66%,灵活适用于实例系列、大小、操作系统、租约、区域。只有在需要容量预留时才使用 RI。
原因: 对于大多数仅考虑成本的用例,Savings Plans 优于 RI(更灵活,折扣相同)。
选择计算节省计划 (Compute Savings Plan) vs EC2 实例节省计划 (EC2 Instance Savings Plan) vs SageMaker 节省计划 (SageMaker Savings Plan)。
计算 SP:最大灵活性(涵盖 EC2、Fargate、Lambda)——最佳默认。EC2 实例 SP:锁定实例系列,折扣更深。SageMaker SP:仅限 SageMaker。
为容错型工作负载使用 Spot 实例以节省成本。
通过 ASG 混合实例策略使用 Spot 实例,采用容量优化分配策略 + 多种实例类型。通过实例元数据处理 2 分钟中断通知。
原因: 容量优化选择最不可能被回收的池。多种类型分散了池风险。
迁移后有未使用的预留实例。
在预留实例市场 (Reserved Instance Marketplace) 上出售(仅限标准 RI)。或通过可转换 RI 转换为不同的系列。
原因: 可转换 RI 以略低的折扣换取了交换的权利。
无需重写架构即可降低计算成本。
迁移到 Graviton (ARM64) 实例。许多工作负载的成本降低约 20%,性价比提高约 40%。需要多架构容器镜像或重新编译二进制文件。
运行时支持 ARM 的 Lambda 函数。
将架构设置为 `arm64` (Graviton)。每毫秒比 x86 便宜 20%,通常更快。需要架构兼容的本地依赖项。
Lambda 成本过高;运行时受 CPU 限制。
增加内存(这会按比例扩缩 CPU 和网络)。使用 Lambda Power Tuning (Step Functions 工具) 找到最佳点——通常更高的内存更快且更便宜。
日志和旧对象在 S3 Standard 中累积。
S3 生命周期规则:30 天后转换为 IA,90 天后转换为 Glacier Flexible,180 天后转换为 Deep Archive,超过保留期后过期。与 Intelligent-Tiering 结合用于未知模式。
可视化跨账户的 S3 支出;找到优化候选对象。
S3 Storage Lens。组织范围的仪表板,包含使用情况、活动和成本节约建议。高级指标层用于前缀级别细分。
NAT Gateway 数据处理费用在账单中占主导地位。
用 VPC 端点替换 AWS 服务流量(S3/DynamoDB 的网关端点;其他所有服务的接口端点)。仅在必要时将需要互联网出站的工作负载移到公共子网。
原因: NAT Gateway 对每处理的 GB 收费,即使是 AWS 服务流量。端点消除了该路径。
降低数据传输成本。
同一可用区、同一 VPC = 免费。跨可用区 = 每 GB 双向 $0.01。跨区域 = 昂贵。出站到互联网 = 最昂贵,但对于可缓存内容通过 CloudFront 免费。尽可能通过 CloudFront 出站。
CloudWatch Logs 成本飙升。
设置明确的保留期(默认为“永不过期”)。将旧日志导出到 S3 + Glacier。仅在温数据上使用 Logs Insights。在代理处过滤(不要在生产环境中发送调试日志)。
查找 EC2、Auto Scaling 组、EBS、Lambda 的适当规模候选。
AWS Compute Optimizer。读取 CloudWatch 指标 + 机器学习,推荐缩减或切换实例系列。组织范围选择加入后免费。
主动检测意外的支出高峰。
AWS Cost Anomaly Detection(在 Cost Explorer 内)。基于机器学习监控每个服务/链接账户/成本类别。通过 SNS/电子邮件发出警报。
阻止沙盒账户中的失控支出。
AWS Budgets 带有行动:在 80% 阈值时,运行 SNS 通知;在 100% 时,通过 Budgets Action 附加拒绝 SCP / IAM 策略。
无需单独账户即可按团队或产品进行费用分摊。
成本分配标签。在计费控制台中激活用户定义的标签;在 Cost Explorer + CUR 中显示。与 `aws:CreatedBy` 结合使用以进行身份归属。
开发/测试 EC2 实例 24×7 运行——但只在朝九晚五使用。
AWS Instance Scheduler(通过 CloudFormation 部署的 Lambda)。使用计划名称标记实例;运行类似 cron 的启动/停止。或者只在开发 ASG 上使用 `aws:autoscaling:scheduledActions`。
原因: 关闭非工作时间段的开发计算支出可减少约 70%。
开发 RDS 实例在夜间/周末闲置。
停止 RDS 实例(单可用区;最长 7 天,然后自动启动)。或者使用 Aurora Serverless v2 并将最小 ACU 设置为 0.5(不完全停止,但空闲时成本极低)。
容器集群成本优化。
稳定、高利用率 → EC2 上的 ECS(使用 Spot/Savings Plans)——最便宜。峰值 / 短暂 / 无节点管理 → Fargate。Fargate Spot 对于容错型工作负载比 Fargate 便宜 70%。
降低 S3 / EC2 到互联网的出站流量成本。
前端使用 CloudFront。源站 → 边缘传输免费;边缘 → 用户比直接的 EC2/S3 大规模出站更便宜。启用压缩 + 适当的 TTL。
将 100 TB 数据从本地 NFS 迁移到 S3。
本地部署 AWS DataSync 代理;计划传输到 S3。加密、完整性检查、限速。对于 100 TB+ 或低带宽,使用 Snowball Edge。
将 > 1 PB 数据从本地移动到 AWS;带宽太慢无法在线传输。
AWS Snow Family。Snowball Edge Storage Optimized(80 TB)用于典型情况;多个设备并行用于数百 TB。Snowmobile 已停用——对于 PB 级规模,请使用多台 Snowball。
生产 RDS / ElastiCache / OpenSearch / Redshift 24×7 运行。
托管数据库的预留实例(这些服务没有 Savings Plan 等效项)。1 年或 3 年;部分预付通常是最佳净现值。
在账户中快速实现低投入的成本节约。
AWS Trusted Advisor 成本检查:空闲负载均衡器、低利用率 EC2、未附加 EBS、未充分利用的 RDS、空闲 Redshift。免费层级功能有限;业务/企业支持提供完整功能。