安全组总结
在每一个EC2实例创建的过程中,你都会被要求为其指定一个安全组(Security Group)。这个安全组充当了主机的虚拟防火墙作用,能根据协议、端口、源IP地址来过滤EC2实例的入向和出向流量。
除了使用安全组之外,你还可以继续保留系统原生的防火墙(Linux下的iptable和Windows的防火墙)。
安全组是有状态的
- 如果某个流量被入方向的规则放行,那么无论它的出站规则如何,它的出方向响应流量都会被无条件放行
- 如果从主机发出去的出站请求,无论入站规则如何,该请求的响应流量都会被无条件放行
- 你不能使用安全组来禁止某些特定的IP地址访问主机,要达到这个效果需要使用网络访问控制列表(NACL)
- 在安全组内只能设置允许的条目,不能设置拒绝的条目
- 安全组的源IP地址可以选择所有IP地址(0.0.0.0/0),特定的IP地址(比如8.8.8.8/24),或者处于同一个VPC中的其他安全组
- 一个流量只要被安全组的任何一条规则匹配,那么这个流量就会被允许放
- 安全组会关联到EC2实例的ENI(网络接口)上
举个例子,如下图所定义的安全组规则。
- 安全组会跟踪TCP/22的入向和出向流量,因为源IP地址定义的是具体的地址(203.0.113.1/32),而不是所有IP地址(0.0.0.0/0)
- 安全组不会跟踪TCP/80的流量,因为其入向和出向的流量都是针对所有IP地址(0.0.0.0/0)
- 安全组会跟踪ICMP流量,因为无论规则如何,安全组都会跟踪ICMP流量
入站规则 | ||
协议类型 | 端口号 | 源 IP |
TCP | 22 (SSH) | 203.0.113.1/32 |
TCP | 80 (HTTP) | 0.0.0.0/0 |
ICMP | 全部 | 0.0.0.0/0 |
出站规则 | ||
协议类型 | 端口号 | 目的地 IP |
全部 | 全部 | 0.0.0.0/0 |
安全组(Security Group)和网络访问控制列表(Network Access Control List)都扮演了类似的防火墙功能。
EBS
EBS的特点
- 亚马逊EBS卷提供了高可用、可靠、持续性的块存储,EBS可以依附到一个正在运行的EC2实例上
- 如果你的EC2实例需要使用数据库或者文件系统,那么建议使用EBS作为首选的存储设备
- EBS卷的存活可以脱离EC2实例的存活状态。也就是说在终止一个实例的时候,你可以选择保留该实例所绑定的EBS卷
- EBS卷可以依附到同一个可用区(AZ)内的任何实例上
- EBS卷可以被加密,如果进行了加密那么它存有的所有已有数据,传输的数据,以及制造的镜像都会被加密
- EBS卷可以通过快照(Snapshot)来进行(增量)备份,这个快照会保存在S3 (Simple Storage System)上
- 你可以使用任何快照来创建一个基于该快照的EBS卷,并且随时将这个EBS卷应用到该区域的任何实例上
- EBS卷创建的时候已经固定了可用区,并且只能给该可用区的实例使用。如果需要在其他可用区使用该EBS,那么可以创建快照,并且使用该快照创建一个在其他可用区的新的EBS卷
- 快照还可以复制到其他的AWS区域
不同类型的EBS卷

实例存储
- 实例存储为EC2实例提供了短暂的块存储设备
- 实例存储(Instance Store Volumes)又叫做短暂型存储(Ephemeral Storage)
- 实例存储是AWS的宿主机上依附的存储(可以理解为实例存储是真实的物理机上安装的磁盘,如下图;而EBS则是专门的另外的存储设备)
- 实例存储比较适合存放短暂型、变化很快的数据,比方说缓存、爬虫数据和其他短暂的数据
- 实例存储的大小取决于实例的类型
- 实例存储的存活与否与实例的状态有关系
- 实例重启,实例存储的数据将不受影响
- 一旦实例终止,实例存储将永久消失
- 实例存储的实例不能进入停止状态(Stop),只能重启(Reboot)或者终止(Terminate)。
- 另外,需要注意的是,并不是所有的实例类型都支持实例存储。在创建实例的时候,你可以在AWS市场上选择支持实例存储的镜像,然后在下一步你只能选择某些特定的实例类型大小;而对于EBS来说,没有那么多限制,你可以选择任意的实例类型大小。

AMI系统镜像和快照
Amazon Machine Image (AMI) 是亚马逊AWS提供的系统镜像,这个AMI包含了如下的信息:
- 由实例的操作系统、应用程序和应用程序相关的配置组成的模板
- 一个指定的需要在实例启动时附加到实例的卷的信息(比方说定义了使用8 GB的General Purpose SSD卷)
下图所示的是AMI的生命周期,你可以创建并注册一个AMI,并且可以使用这个AMI来创建一个EC2实例。同时你也可以将这个AMI复制到同一个AWS区域或者不同的AWS区域。你同样也可以注销这个AMI镜像。

EBS快照做成的镜像
你可以通过创建一个关于EBS的快照将Amazon EBS卷上的数据备份起来,方便之后基于该快照创建新的EBS卷。快照还有如下特点:
- 备份的快照将会保存在亚马逊S3 (Simple Storage System)上
- EBS快照属于增量备份,即第二次之后的快照只会更新变化了的那一部分数据
- 你可以在EC2实例运行的状态下进行EBS的快照操作,但会给EC2的系统带来一定延迟(CPU,内存利用率会变高)
- 最佳实践是将EC2实例停止,然后将EBS从EC2上卸载下来,进行快照操作
- 你可以基于EBS快照在同一个AWS区域创建新的EBS卷,这个卷可以是任何EBS类型,任何支持的大小
- 你也可以将快照复制到其他AWS区域
- 你可以将快照共享给其他的AWS用户
- 加密的EBS卷在创建快照后,该快照也会被自动加密
- 通过加密快照创建的EBS也是自动加密的
- 在复制未加密的快照时,你可以在复制过程中对其加密
AMI和EBS快照的使用场景
有几个比较常见的场景会需要你使用AMI和EBS快照的功能。
如果你想将一个EC2实例从一个AWS区域迁移到另一个AWS区域,你需要:
- 创建基于这个EC2实例的AMI
- 将这个AMI进行复制,复制到另一个AWS区域
- 通过这个AMI创新创建一个EC2实例
- 充当数据盘的EBS也需要做EBS快照
- 将这个EBS快照进行复制,复制到另一个AWS区域
- 通过这个EBS快照创建EBS卷,并且依附到EC2实例上去
如果你想复制一个EBS卷到该AWS区域的不同可用区,你可以:
- 创建一个EBS快照
- 通过EBS快照创建一个新的EBS卷,并且定义大小、卷类型、是否加密等属性















EBS (Elastic Block Storage)小结
- EBS的不同类型,需要了解不同类型的EBS主要的使用场景
- 通用型SSD – GP2 (高达10,000 IOPS),适用于启动盘,低延迟的应用程序等
- 预配置型SSD – IO1 (超过10,000 IOPS),适用于IO密集型的数据库
- 吞吐量优化型HDD -ST1,适用于数据仓库,日志处理
- HDD Cold – SC1 – 适合较少使用的冷数据
- HDD, Magnetic
- 不能将EBS挂载到多个EC2实例上,一个EBS只能挂载到1个EC2实例上。
- 如果有共享数据盘的需求,请使用EFS (Elastic File System)
- 根EBS卷默认是不能进行加密的,但可以使用第三方的加密工具(例如BitLocker)对其进行加密
- 除了根磁盘外的其他卷是可以加密的
EBS快照(Snapshot)小结
- EBS的快照会被保存到S3(Simple Storage System)上
- 你可以对一个EBS卷创建一个快照,这个快照会被保存到S3上
- 快照实际上是增量备份,只有在上次进行快照之后更改的数据才会被添加的S3上
- 因此第一次快照所花费的时间比较长
- 而第二次以后的快照所花费的时间相对短很多
- 对加密的EBS卷创建快照,创建后的快照也会是加密的
- 从加密的快照恢复的EBS卷也会是加密的
- 你可以分享快照给其他账户或AWS市场,但仅限于这个快照是没有进行过加密的
- 要为一个作为根设备的EBS卷创建快照的话,建议停止这个实例再做快照
实例存储(Instance Store)
- 实例存储也叫做短暂性存储(Ephemeral Storage)
- 实例存储的实例不能被停止(只能重启或终止),如果这个实例出现故障,那么在上面的所有数据将会丢失
- 使用EBS的实例可以被停止,停止后EBS上的数据不会丢失
- 重启使用实例存储的实例或者重启使用EBS的实例都不会导致数据丢失

亚马逊系统镜像(AMI)
- AMI是区域化的,只能使用本区域的AMI来创建实例;但你可以将AMI从一个区域复制到另一个区域