- EC2
- EBS
- EFS
- CloudFormation
- Elastic Beanstalk
- ELB(Elastic Load Balancer)
- AWS Global Accelerator
- Storage Gateway
- SQS 队列
- SNS
- Kinesis
- MQ
- ECS(Elastic Container Service)
- ECR(Elastic Container Registry)
- EKS(Elastic Kubernetes Service)
- Lambda
- DynamoDB
- API Gateway
- Cognito
- 如何选择合适的数据库?
- 灾难恢复
- CloudWatch
- EventBrige
- CloudTrail
- Config
- 如何区分使用 CloudWatch,CloudTrail 和 Config
- STS(Security Token Service)
- Directory Services
- Organizations
- IAM
- KMS
- SSM Parameter Store
- Secrets Manager
- CloudHSM
- Shield
- WAF(Web Application Firewall)
- GuardDuty
- Inspector
- Macie
- VPC
- Route 53
EC2
- 弹性云服务器,云虚拟机,按需付费
- EC2 User Data:首次启动时自动执行的脚本
- 非常多的实例类型:如免费的
t2.micro
,存储优化,内存优化 - 安全组:EC2 上的防火墙
- 通过指定 IP 控制进出 EC2 的流量
- 安全组可以相互引用
- 常用 IAM Role 赋予 EC2 执行某件事的权限
- 定价类型:
- 按需实例:按运行时间收费,以分钟为单位
- Reserved 预留实例:至少使用一年
- 普通预留
- 可转换的预留实例
- 计划预留实例 Schedule Reserved Instance
- 竞价实例 Spot Instance:价格超低,有可能被中断,适合可以随时中断随时重启的批处理作业。
- 专用主机
- 弹性 IP :从公有 IP 池里取出来的,可以动态绑定到 EC2
- 放置组 Placement Groups:
- 集群 Cluster :集中放在单可用区里,低延迟
- 分散 Spread:分布在不同的硬件上
- 分区 Partition : 分布服务器机架的不同分区上
- 一个集群置放群组不能跨过多个可用区!!
- Elastic Network Interface(ENI):弹性网络接口,用于和其他网络通信,绑定私有 IP
- Hibernate:类似电脑从休眠状态重新启动,帮助 EC2 更快地启动
EC2 Nitro:下一代 EC2 实例类型,性能网络等各方面都更强
EBS
块存储,类似于移动硬盘,一对一挂载在 EC2 上扩充存储容量。
- 按需调整,修改大小和类型。
- 卷类型:
- SSD:固态硬盘, I/O 优化,管理属性是 IOPS
- 通用型 SSD(gp2,gp3):最大IOPS=16000,最大吞吐量=250 MB/s,适用于虚拟桌面,系统根卷
- 预配置 IOPS(io1,io2) :最大IOPS=64000,最大吞吐量=1000 MB/s,适用于数据库,和 EC2 Nitro 配合可达到最大性能
- HDD:普通硬盘,吞吐量优化,管理属性是 MB/s,不能作为系统根卷!!
- 吞吐量优化型(st1):最大IOPS=500,最大吞吐量=500 MB/s,适用于大数据,日志处理
- Cold HDD(sc1): 最大IOPS=250,最大吞吐量=250 MB/s。适用于冷存储
- SSD:固态硬盘, I/O 优化,管理属性是 IOPS
-
EFS
CloudFormation
通过模板创建配置云资源。Infrastructure as Code,基础架构即代码。
DeletionPolicy
删除堆栈时,是否保留资源。Retain
保留Snapshot
删除前做快照备份Delete
默认删除
可以在模板里调用 Lambda 补充设置 CloudFormation 还不支持的 AWS 资源或本地的自定义资源。
Elastic Beanstalk
云代码平台,帮助快速部署管理应用程序,类似于 Heroku
- 支持 Java、.NET、PHP、Node.js、Python、Ruby、Go 和 Docker Web 应用程序。
不额外收费 ,只需为存储和运行应用程序所需的 AWS 资源付费。
ELB(Elastic Load Balancer)
Classic load Balancer : 上一代产品,不推荐使用
- 支持全部协议
- 不支持侦听器和目标组!
- ALB(Application Load Balancer):推荐,灵活管理
- 只支持 HTTP 和 HTTPS 协议,位于第 7 层,应用层
- 支持基于路径的路由,分发
example.com/image
和example.com/about
到不同的服务器 - 支持调用 Lambda 函数
- NLB(Network Load Balancer):
- 支持 TCP ,UDP,TLS 协议,位于第 4 层,传输层
- 高吞吐,能够处理突发的大量流量,实现极致性能,支持静态 IP 和弹性 IP
- 流哈希算法,轮询
- 侦听器:监听什么协议,什么端口的流量
-
AWS Global Accelerator
利用 AWS 全球网络系统,帮助客户端的请求流量加速到达服务器。
- 走 AWS 私有网络,不走公共互联网
- 实现低延迟,故障转移
-
Storage Gateway
连接本地数据和云端数据,将云端数据挂载到本地,和AD集成用于用户验证
- 必须在本地数据中心安装网关硬件
三种类型:
解耦应用(decouple)
- 无限吞吐量,低延迟
- 消息保留时间:4~14天
- 消息大小不超过 256 KB
- 生产者 VS 消费者(EC2,Lambda)
- 生产者发送消息
- 消费者轮询(poll)消息,处理完以后删除消息。
- 适合与ASG(Auto Scaling Group)一起使用
- 定义 CloudWatch 自定义指标,发送警报,根据队列的大小进行缩放
- 使用场景:处理上传的视频,处理订单
- 安全性:
- 支持加密
- 支持自定义 Access Policy:JSON格式,定义谁可以收发消息(类似于S3)
- 消息可见性
- 处理中的消息不可见!消息处理超时后会回到队列!-> 有可能消息会被重复处理
- 为了避免上述情况,可以调用
ChangeMessageVisiable
API
- 死信队列(Dead Letter Queue)
- 处理多次都无法解决的消息会被放进死信队列,需要自己设置。
- 延迟队列:发送消息后隔一段时间再进入队列
FIFO Queue :First In First Out 先进先出
SQS是一对一,SNS是一对多,生产者发布消息主题,接受者监听主题,订阅消息。
- 消息订阅者可以是SQS,Http,Lambda,Emals,Notification
- 常用使用场景:
- CloudWatch发送警报
- SNS + SQS :Fan Out -> 没有数据丢失
- S3 事件 -> SNS Topic -> 多个 SQS 队列 + Lambda
- 安全性:
- 加密流量
- 自定义 Access Policy
- SNS FIFI Topic:
- 吞吐量有限
- 删除重复数据
- 保证先进先出的顺序
消息过滤:消息接收者可以定义 Filter Policy 过滤消息
Kinesis
实时收集并分析数据流
- 四个组件:
- Kinesis Data Streams : 获取,收集,保存数据
- Stream里面有多个分片(Shard),分片越多,速度越快
- 共享型:所有消费者共享同一个分片的流量
- 增强型:单个消费者独占一个分片的流量 -> 更贵
- 数据保留1~365天
- Kinesis Data Firehose : 加载数据,存入AWS
- 读取数据,调用Lambda转换数据,将数据存储进目标
- 将失败的数据存入S3存储桶
- 只需要为数据付费
- 几乎实时 Real Time
- Kinesis Data Analytics : 使用SQL 或 Apache Flink 分析数据
- 实时分析数据,将结果发送到目的地
- 只需要为数据付费
- Kinesis Video Streams :获取,收集视频数据
- Kinesis Data Streams : 获取,收集,保存数据
使用场景:
将传统的消息服务迁移到AWS,如MQTP,AMQP,STOMP等
-
ECS(Elastic Container Service)
可在 AWS EC2上运行 Docker 容器
- 两种启动类型:
- 先启动EC2,配置 ECS Agent 代理,注册ECS Task任务,运行集群
- Fargate:直接启动,无需管理EC2
- 权限管理
- 方法一:为 ECS Agent 创建 IAM Role ,赋予权限
- 方法二:给 ECS Task 创建 IAM Role,赋予权限
- 容器间共享数据
- EC2 + EFS NFS
- Fargate + EFS
- ECS 可以和 ALB 一起使用
- ECS Task 可以被 Event Brige 或 CloudWatch 调用
- ECS Scaling 可以自动缩放
- 根据 CPU 使用率
- 根据 SQS 队列长度
ECS Rolling Update 滚动更新
弹性容器仓库,存储管理容器镜像。和 DockerHub 类似。
EKS(Elastic Kubernetes Service)
在 AWS 上启动并托管的 Kubernetes 集群
-
Lambda
无需管理服务器,只需要提供函数代码。
- 按需运行,按需收费:为请求调用次数和运行时间收费,非常便宜
- 自动缩放,自动扩展
- 几乎支持所有编程语言
- Lambda 容器镜像,依靠 Lambda Runtime API ,非首选
- 常用来和其他 AWS 服务集成
- 根据 region 地域不同,有相应的限制:
- 内存上限,执行时间上限 15 分钟,环境变量上限 4 KB,并发上限。
- 文件大小上限,压缩上限
Lambda@Edge:Lambda的同步调用类型
NoSQL数据库,非关系型数据库
- 完全托管,高可用性,跨区域复制
- 最大储存对象上限:400 KB
- 两种读写容量模式:
- Provisioned Mode(默认):提前定义好容量,可以添加自动缩放读写单元
- On-Demand Mode:不需要提前规划容量,更加灵活,更贵
高级特性:
创建公开的,可访问的 REST API
- 常用集成:
- 和 Lambda 集成,创建无服务应用
- 和 HTTP 集成,连接 ALB
- 其他 AWS 服务
- 三种部署方式(Endpoint Types):
- 边缘优化(默认):全球部署
- 区域部署
- 私有网关:不公开
安全性,三种用户认证方式:
Cognito User Pools:和 API Gateway 集成,负责身份验证,用户登录
- Cognito Identity Pools:根据用户凭证,发放权限使用 AWS 服务
Cognito Sync :跨设备同步数据到 Cognito,可能被弃用,被 AppSync 取代
如何选择合适的数据库?
分类
关系型数据库,使用SQL查询:RDB,Aurora
- 非关系型数据库,NoSQL:DynamoDB,ElasticCache(键值对),Neptune(用于图像)
- 对象存储:S3,S3 Glacier(用于备份)
- 数据仓库,用于数据分析,BI 商业智能:Redshift,Athena
- 用于查询搜索,非结构化:ElasticSearch
-
RDS
包括开源的(PostgreSQL, MySQL)和非开源的(Oracle,SQL Server)
- 必须依靠 EC2 和 EBS 卷
- 支持只读副本和多可用区,自动缩放
- 安全性:IAM,安全组,KMS 静态加密,SSL 流量加密
- 备份,快照,定时恢复
- 可利用 CloudWatch 监控
-
Aurora
兼容 PostgreSQL 和 MySQL
- 有 6 个副本(全球),跨 3 个可用区
- 自动修复,自动缩放(10 GB ~ 128 TB)
- Aurora Serverless :不可预测的工作负载
- Aurora Multi-Master : 故障转移
-
ElasticCache
用于管理缓存,支持 Redis 和 Memcached (和 RDS 类似,但不能用 SQL)
- 内存数据存储,低延迟,亚秒级
- 支持集群,多可用区,制度副本
- 安全性:IAM,安全组,KMS,Redis Auth
- 备份,快照,定时恢复
键值对存储,适合频繁读取,少量写入的使用场景,用于缓存数据库查询结果,缓存 Session
DynamoDB
AWS 独有的 NoSQL 数据库
- Severless 无服务器,按需使用容量,自动缩放
- 可以代替 ElasticCache 存放 Session 数据,但速度是毫秒级。
- 读写分离,高可用
- 强一致性
- 通过 IAM 做安全认证,KMS,SSL
- DynamoDB Streams 和 Lambda 集成
- 备份,全局表
-
S3
可以存储静态文件,检索对象
- 无限可用的存储空间,最大可存放 5TB 的文件
- 强一致性,分层
- 版本控制,跨域复制
- 加密:SSE-S3,SSE-KMS,SSE-C,SSL
-
Athena
在 S3 上用 SQL 实现查询,分析数据
- 无服务器,轻量级查询
-
Redshift
基于 PostgreSQL,但不用于实时在线查询,而是用于在线分析
- 大数据,PB级别
- 数据仓库,使用 SQL 查询,高性能,按需付费
- 可以和 Quicksight ,Tableau 等 BI 工具集成
- 可以从其他地方加载数据,如 S3 ,RDS
- 通过 Kinesis Data Firehose
- 使用 Copy 命令从 S3 加载数据:走互联网或VPC
- JDBC driver
- Redshift 增强 VPC 路由:通过 VPC 复制加载数据,而不需要通过互联网
- 所有集群都在一个可用区中,不支持多可用区分布
- 用快照实现灾难恢复
Redshift Spectrum:不想加载数据,想获得更高的数据查询处理能力。
Glue
用于数据清洗,转换,加载的 ETL 服务
- 完全托管,无服务器
Glue Data Catalog:数据集的目录,存储元数据
Neptune
完全托管的图形数据库
- 强关联性,如 wiki,朋友圈
- 高可用性,跨 3 个可用区,15 个只读副本
- 持续备份,定时恢复
-
ElasticSearch
一种开源技术,支持搜索所有字段,来补充 DynamoDB 的不足。
-
灾难恢复
RTO:恢复时间目标,多长时间后,系统能恢复服务
- RPO:恢复点目标,容忍丢失的最大数据量,备份数据能恢复到多久之前的状态。
-
CloudWatch
为每项 AWS 服务提供指标,可以创建仪表盘跟踪指标变化
- EC2 每隔5分钟记录一次,想要缩短时间间隔要付费。默认不开启内存监控。
- EC2 必须有IAM权限
- 通过 CloudWatch Log Agent 发送日志
- 免费版可以自定义 10 个指标
- 使用
PutMetricData
自定义指标:内存使用状况,磁盘空间,用户登录数 - 可以定义过去两周到未来两小时的指标!
- CloudWatch Dashboards:全球的,可以包含其他用户其它区域的表
- CloudWatch Logs:
- Log Groups:可以在 EC2 上安装 Logs Agent ,将日志发送到日志组。也可以导入到 S3,用ElasticSearch 集群做搜索分析日志。
- Log stream
- 设置日志过期时间,定时删除,节约容量
- CloudWatch Alarms:触发警报,恢复EC2,触发自动缩放,发送 SNS 通知
CloudWatch Events:拦截 AWS 服务事件,如EC2启动事件,S3上传事件,可以和 CloudTrail 集成
EventBrige
CloudWatch Events 的进化版
- 可以接收其他AWS账户和第三方软件服务商发送过来的事件。
-
CloudTrail
为 AWS 账户提供合规性审计。默认启用。
- 保存你在 AWS 账户中所有的用户行为。检查是谁启动了 EC2,谁删除了S3存储桶里的文件
- CloudTrail Insights:检查账户中的异常行为
CloudTrail Events Retention : 事件行为默认保存 90天,可以保存到S3存档
Config
记录 AWS 资源的活动,进行安全性合规性审查。
- 安全组是否允许任意IP的SSH访问,S3存储桶是否开放访问权限
- 发送SNS警报提醒,只会提醒,并不会阻止不合规的操作!
-
如何区分使用 CloudWatch,CloudTrail 和 Config
CloudWatch 用来监控性能指标
- CloudTrail 记录用户行为
-
STS(Security Token Service)
提供临时凭证,用于对AWS资源的访问权限。
-
Directory Services
可以和 Microsoft Active Directory 相互映射,帮助用户验证?
Organizations
全球服务
- 管理多个 AWS 账户,合并账单付费
- 集中管理日志
- 建立跨账户用户
- SCP:用于用户的权限设置,OU级别大于用户级别,限制对某些服务的访问
-
IAM
Conditions:Access Policy 的条件
arn:aws:s3:::test
存储桶级别的权限arn:aws:s3:::test/*
存储桶内的对象级别权限IAM Roles 和 基于资源的权限策略 的区别:使用 IAM Roles 时放弃了本来的权限
KMS
秘钥加密服务:用于 EBS 加密,S3 加密等等……管理密钥的生命周期和访问权限
- 只能加密 4KB 大小的数据,无法跨区域复制
- 对称秘钥(AES-256 秘钥)
- 创建,轮询,禁用,启用
- 非对称秘钥(RSA & ECC 秘钥对)
- 公钥用于加密,私钥用于解密
- Key Policy :控制谁可以访问密钥,类似 S3 Access Policy
-
SSM Parameter Store
加密配置信息,加密参数:如数据库url,数据库密码等……
- 无服务器,可拓展
- 和 Lambda 集成使用
- 免费版提供 10000 个参数,最大 4 KB ,没有 Paramters Policy
Parameter Policy : 可以配置 TTL 规定参数过期时间
Secrets Manager
比 Parameters Store 更新,更强
- 可以强制密钥轮询
-
CloudHSM
提供专用硬件,单个用户可以完全控制加密秘钥
- 支持对称和非对称秘钥
- 适合用于 S3 的 SSE-C 加密,只支持客户管理的秘钥,导入非对称秘钥
- CloudHSM Client
- 高可用性,跨可用区
-
Shield
阻止 DDos 攻击,保护 EC2,ELB,CloudFront,Global Accelerate , Route 53
-
WAF(Web Application Firewall)
保护应用程序的防火墙,位于第7层HTTP协议
- 只能部署在 ALB ,API Gateway,CloudFront 上面
过滤恶意流量,SQL注入攻击,跨域攻击,地理匹配阻止特定地区的流量,DDos保护
GuardDuty
利用机器学习,通过分析日志来保护 AWS 用户
- 日志包括 CloudTrail Logs,VPC Flow Logs ,DNS Logs
-
Inspector
只适用于EC2
在EC2 上面安装 Inspector Agent,对服务进行安全评估
Macie
利用机器学习发现和保护 AWS 中的敏感信息,如发现 S3 中的个人信息
VPC
所有 AWS 账户都有一个默认的 VPC,默认可以连接互联网
-
子网(Subnets)
一个VPC中可以创建多个子网,公有子网可以跨AZ,但私有子网不能跨ZA
Internet Gateway(IGW)和路由表
帮助 VPC 中的 EC2 访问互联网
-
堡垒机(Bastion Hosts)
私有子网中的 EC2 可以通过公有子网中的堡垒机连接互联网
-
NAT
帮助私有子网中的 EC2 连接互联网
- 重写 IP ,转换网络地址
- NAT 实例:不是高可用的,必须一个一个创建
- NAT 网关:AWS托管,高可用,高带宽,按需付费,不需要配置安全组
-
DNS解析
允许通过 Amazon 维护的DNS 主机解析域名地址
-
安全组 和 NACLs
安全组保护 EC2,NACL 保护子网,类似于子网的防火墙
- 安全组有状态,NACL 是无状态的,每次都会检查进出请求
- 安全组仅支持自定义允许的规则,NACL支持自定义允许和拒绝的规则
- 默认 NACL 接受所有的入站出站请求,自定义的 NACL 默认拒绝所有的入出站流量
- 临时端口用于接受请求结果,随机分配
-
Reachability Analyzer
网络诊断工具,检查网络连接状况,帮助检查网络配置
-
VPC对等连接
连接两个VPC,一对一的关系
- A和B连接,B和C连接,但是A不能和C对话
可以通过 Trasit Gateway 解决多个 VPC 同时连接的问题
PrivateLink
将 VPC 暴露给其他上千个 VPC 使用
-
VPC Endpoints
私有子网中的 EC2 可以通过 Endpoint 而不是通过互联网,连接其他的 AWS 全球服务,如ChoudWatch,S3,DynamoDB等
- 节约流量费,不需要与这些VPC创建VPC对等连接,不需要NAT、互联网网关,也不需要配置路由表
两种类型:
三种级别的日志:VPC Flow Logs,Subnet Flow Logs,ENI Flow Logs
- 帮助监控流量和故障排查
-
Site-to-Site VPN
通过公共互联网,连接 AWS 云和本地的数据中心。走私有的加密通道。
- 注意正确配置路由表
-
Direct Connect(DX)
提供专用的私有网络,从本地数据中心连接到一个或多个 VPC
- 高带宽,更稳定,但是建立工期要 1 个月,联系 AWS 合作伙伴设置,成本比 VPN 更高。
- Direct Connect Gateway:连接到不同 Region 的 VPC
- 连接类型:专有连接,托管连接
- 没有加密,可以结合 VPN 一起使用帮助加密
- 链接聚合组:实现高弹性,通过两个Location建立连接,在每个Location里建立两个连接?
- 默认不是冗余的,专线故障时通信会中断,可以另外再建立一个DX或VPN作为冗余连接。
-
Traffic Mirroring
捕获并复制网络和 VPC 之间的流量,分析流量
-
Route 53
DNS 域名服务:包括域名注册,域名解析,运行状况检查。
- 记录类型:
- A:指向 IPv4
- AAAA:指向 IPv6
- CNAME:指向域名
example.com
- ALIAS:指向其他 AWS 资源,如ELB,CloudFront,S3 等,并且支持在顶级域名上创建别名,如
www.example.com
- TTL:记录DNS解析结果的缓存时间,时间越少,Route 53 收到的流量就越多,更新越快。方便做故障路径迁移。
- 路由策略:
- 简单路由策略:路由到单个资源,无法附加健康检查,无法做自动故障转移。
- 加权路由策略:路由到多个资源,分配流量,可以关联健康检查,方便做软件上线测试。
- 故障转移路由策略:常用,也叫做主动-被动故障转移,主要资源运行不佳时自动切换到备份资源。
- 基于延迟的路由策略:多区域部署时,选择用户延迟最低的区域资源处理请求。
- 地理位置路由策略:根据用户的地理位置来提供资源,适用于提供本地化内容。
- 复杂/嵌套记录策略:低延迟+加权路由
- 多值应答路由策略:一次性返回多个地址,最多8个。
- 可以使用 Route 53 作为内部私有 DNS,但需要将 VPC 的
enableDnsHostnames
和enableDnsSupport
设置为True
- DNSSEC 协议:保护不受劫持,防止中间人攻击
- 可以在第三方机构注册域名,然后更新域名记录指向 Route 53
- Health Check 健康检查:监控资源运行状况,可以和 CloudWatch 指标集成。使用 HTTP 和 HTTPS 协议,只能检查公网资源,不能检查私有子网里的资源!