AWS S3
业务场景
挑战
- Web服务器传输大型文件可能引起网络延迟
- 用户生成的内容需要分配到所有的web服务器中
解决方案
- 静态资产存放在S3中
- S3中的对象设置为公开,用户可以直接访问
S3的好处
- 通过API或者HTTP进行访问
- S3是以冗余方式将对象存储,至少在三个可用区存放副本
- S3使用校验和来验证数据的完整性
- 提供完善的版本控制使用户能够保存、检索和还原每个对象的各个版本
- 多副本的数据一致性
S3 属性
存储桶 Buckets
- 存储S3的容器
- Bucket 名 最多包含63个字符,且在全球AWS都必须是唯一的
- 最佳实践是包含并符合DNS域名规范来对Bucket命名
- 在靠近用户的区域创建Bucket以优化性能
- 每用户最多可创建100个存储桶
- 存储桶需要指定区域,但是不能指定可用区
对象 Object
- 每一个存储在S3的实体或文件都是对象
- 最大支持单个对象5TB
- 对象由文件本身和元数据组成
- 文件本身在S3看来只是一串字节流
- 元数据包含了对象的名称和键值,系统元数据包括了MD5,上次修改日期等系统信息,用户元数据是用户的可选项
-
获取对象使用的Request包头
- x-amz-meta-
- x-amz-storage-class
- Content-MD5
- Content-Length
-
数据结构
- 键(Key):可以认为是数据的名字
- 值(Value):表示数据本身
- 版本号(Version ID):对于启用了版本控制的存储桶来说很重要
- 元数据(Metadata):关于数据的描述,比如说数据的创建时间,更改时间,文件类型,文件大小等信息
- 访问控制信息:能管理对Bucket内文件的访问权限
-
Key
- 每个对象的标识,在存储桶内唯一
- 最大支持1024字节的UTF-8字符,可以包含斜杠等
- 存储桶名+Key 组成S3对象的唯一标识
- 最佳命名实践是利用/进行命名对对象进行逻辑组织,但记住这并不代表文件是被层次组织的,S3对象始终处于一个平面而不是一个真正的File System
- S3对象可以基于其唯一标识通过Internet直接寻址访问,URL就是其唯一标识
- 对象标签
- 每个对象添加最多10个标签
- 用标签标记后可以用于IAM策略管理
S3 特性
S3 操作
- 基于REST API接口进行操作,将HTTP动词映射到CRUD操作
- 实际使用更高级的接口(如编程语言,SDK,CLI和控制台)来调用REST API
可用性和持久性
-
S3采用高度持久和可用的存储基础架构
- 持久性 = 11个9
- 可用性 = 4 个 9
- 建议采用版本控制、跨域区复制、MFA删除等方式来防止用户意外造成的逻辑错误
一致性
- S3会自动在区域内对数据进行自动复制
- S3是一个最终一致性系统,保证所有的获取都是一致的
- 为新对象PUTS 提供 先写后读一致性
- 为 Overwrite PUTS和DELETE提供最终一致性
S3 定价策略
- 存储容量
- 读取操作
- 数据传输
S3高级功能
存储级别
-
S3-Standard
- 提供高耐用、高可用、低延迟和高性能的存储对象
-
S3-Standard-IA
- 提供较低的高可用标准但仍然是多可用区部署的,但设计用于长期存取和访问频率较低的数据,
- 利用规模效应对存储超过30天以上的提供更低成本的选项,最小收费粒度128KB,最短使用30天。
-
S3-ONEZONE-IA
- 类似于Standard-IA,但是仅部署在一个可用区内提供高可用
- 用于非关键性和易重现数据,用于替代RRS
-
INTELLIGENT_TIERING
- 自动分层的数据,类似于IA的持久性和可用性
- 能够提供标准的读写性能但不是一致的,取决于读写请求频率
- 有额外的监控和自动分层的成本,最短使用30天,小于128K的对象没有资格进行自动分层但仍收费。
-
S3减少冗余存储 RRS
- 适用于非关键数据或易于重现的派生数据,支持低延迟访问,不支持高可用的(4个9持久性)
- 目前已经不再推荐,使用S3-ONEZONE-IA替代
- Glacier
- 成本极低的归档数据存储,不需要实时数据访问
存储类 | 设计专门针对 | 持久性(设计目标) | 可用性(设计目标) | 可用区 | 最小持续时间 | 最小可计费对象大小 | 其他考虑因素 | 每GB费用 |
---|---|---|---|---|---|---|---|---|
STANDARD | 经常访问的数据 | 99.999999999% | 99.99% | >=3 | 无 | 无 | 无 | 0.022 USD |
STANDARD_IA | 长时间存在,不经常访问的数据 | 99.999999999% | 99.99% | >=3 | 30天 | 128KB | 按每 GB 收取检索费用。 | 0.0125 USD |
INTELLIGENT_TIERING | 访问模式发生变化或未知的长时间存在的数据 | 99.999999999% | 99.9% | >=3 | 30天 | 无 | 按对象收取监控和自动化费用。无检索费用。 | |
ONEZONE_IA | 长时间存在的、不经常访问的、非关键数据 | 99.999999999% | 99.5% | 1 | 30天 | 128KB | 按每 GB 收取检索费用。无法灵活地应对可用区丢失的情况。 | 0.01 USD |
GLACIER | 检索时间从数分钟到数小时不等的长期数据存档 | 99.999999999% | 99.99%(在您还原对象之后) | >=3 | 90天 | 无 | 按每 GB 收取检索费用。您必须先还原存档对象,然后才可以访问它们。 | 0.004 USD |
DEEP_ARCHIVE | 存档很少访问的数据,默认检索时间为 12 小时 | 99.999999999% | 99.99%(在您还原对象之后) | >=3 | 180天 | 无 | 按每 GB 收取检索费用。您必须先还原存档对象,然后才可以访问它们。 | 0.00099 USD |
RRS(不推荐) | 经常访问的非关键数据 | 99.99% | 99.99% | >=3 | 无 | 无 | 无 |
对象生命周期管理
- 类似于自动存储分层的解决方案
-
S3可以利用生命周期配置规则,将数据从一个存储级别向另一个存储级别转换,指导最终自动删除
- Transition :转换存储类别
- Expiration:指定对象过期时间
- 如: 最初在S3 Standard,30天后 S3 Standard IA, 90天后 Glacier, 3年后自动删除
数据访问
-
桶策略
- 默认只有存储桶和对象所有者才能访问他们创建的S3资源
- 利用IAM可以修改和管理用户访问S3资源的权限
- 存储桶策略可以对全部或部分S3对象的访问进行授权管理
-
S3 ACL
- 使用S3 ACL可以为S3的对象提供其他AWS对其的访问权限管理
数据传输及其加速
-
S3传输加速 (Amazon S3 Transfer Acceleration),可以利用AWS CloudFront CDN网络的边缘节点(Edge Locations)加速传输的过程。可以将数据上传到离我们最近的边缘节点,然后再通过AWS内部网络(更高速,更稳定)传输到目标区域的S3存储桶。
- 您位于全球各地的客户需要上传到集中式存储桶
- 您定期跨大洲传输数 GB 至数 TB 数据
- 您在上传到 Amazon S3 时未充分利用 Internet 上的可用带宽
- 上传需要指定专用的两个S3双堆栈加速节点
- S3支持客户端加密和服务器端加密两种方式传输数据
- 服务器端加密使用SSE AES-256 加密
- S3对通过互联网传入传出流量收费,但对区域内部存储桶之间或者AWS服务之间的传输不收费
版本管理
- S3允许每个对象的多个版本保存在存储桶中,在数据被意外或者恶意删除时,可以利用对象的唯一标识+版本ID进行恢复
- 版本控制是一个存储桶级别的可选项,一旦打开只能暂停而不能关闭
- 开启版本管理后,删除一个对象实际是新增了一个删除标记使得对象不可见,在版本控制中删除这个删除标记即可恢复对象
- 只有存储桶所有者才能永久删除版本,也可以设置生命周期规则来进行版本管理
MFA删除
- 支持需要额外验证来永久删除对象版本或者更改存储桶版本控制状态
- 仅能采用Root 用户执行该操作,且一般采用额外的硬件生成验证码
预先签名的网址
- 默认S3对象是私有的,但是可以通过预先签名授权其他用户采用安全凭证授予有时间限制的访问
- 安全凭证必须制定存储桶名称、对象Key、HTTP方法和过期时间等
静态网站托管
- S3可以直接将Html对象作为静态网站的托管
- 不能做PHP、ASP.net、JSP等服务器端处理
- 可以通过客户端脚本完成动态和交互,如嵌入静态HTML网页的JavaScript
- 创建一个与网站同名的存储桶,并指定一个索引和错误文档,
-
需要单独打开静态托管功能,并指定index.html 和 error.html
- 普通的S3 URL:https://s3.ap-northeast-2.amazonaws.com/abc-com/index.html
- S3托管的静态网站URL:http://abc-com.s3-website-ap-northeast-2.amazonaws.com
分段上传 API
- 主要用于大型对象的上传,100MB以上建议使用,5GB以上必须采用
- 被拆分之后的零件可以以任意顺序上传,在全部传输完成后再进行组装
- 可以通过设置对象生命周期,在指定天数后终止不完整的分段上传
- 好处
- 提高吞吐量 – 您可以并行上传分段以提高吞吐量。
- 从任何网络问题中快速恢复 - 较小的分段大小可以将由于网络错误而需重启失败的上传所产生的影响降至最低。
- 暂停和恢复对象上传 – 您可以在一段时间内逐步上传对象分段。启动分段上传后,不存在过期期限;您必须显式地完成或中止分段上传。
- 在您知道对象的最终大小前开始上传 – 您可以在创建对象时将其上传。
Range GET
- 在S3或者Glacier 中仅下载对象的一部分内容,主要用于更高效的处理大型对象
- 最小可以到1个字节的范围
随时查询
- Amazon S3 允许客户对存储数据运行复杂的查询,无需将数据移动到独立的分析平台。
-
S3 Select
- 利用简单的 SQL 语句检索对象内较小且具有针对性的数据集。
- 您可以将 S3 Select 与 AWS Lambda 搭配使用,来构建无服务器应用程序,此类应用程序可使用 S3 Select 有效且轻松地检索 Amazon S3 中的数据,而不是检索和处理整个对象。
-
Amazon Athena
- Amazon Athena 是一项交互式查询服务,让您能够轻松使用标准 SQL 查询分析 Amazon S3 中的数据。
- Athena 是无服务器式服务,因此您无需设置或管理基础设施即可马上开始分析数据。您甚至无需将数据加载到 Athena 中,因为它可以直接处理所有 S3 存储类中存储的数据。
-
Amazon Redshift Spectrum
- Amazon Redshift Spectrum 是 Amazon Redshift 的一项功能,借助这项功能,您可以对 Amazon S3 中的 EB 级的数据运行查询,而无需进行加载或 ETL 操作。
- 当您发布查询时,查询会进入 Amazon Redshift SQL 终端节点,该终端节点会生成查询方案并对其进行优化。
跨区域复制(CRR)
- S3的一个可选项,可以把AWS区域中的源存储桶中的新对象异步复制到另一个区域中的目标存储桶
- 与对象关联的元数据和ACL也会被复制
- 源和目标存储桶都必须启用版本控制
- 支持分别为源目标创建生命周期规则,也可以无视规则直接将数据复制到跨区域的Glacier中
- 功能启动后,只有新对象会被跨区域复制,现有对象必须手工通过单独的命令复制过去
- 支持跨账户CCR
- 删除操作(包括文件删除和版本删除)都不会被同步到目标区域
存储类分析
- 借助存储类分析,您可以分析存储访问模式并将相应数据传输给正确的存储类。这一新的 S3 功能可自动识别不频繁访问模式,从而帮助您将存储转换为 S3 标准 – IA。
- 您可以配置存储类分析策略来监视整个存储桶、前缀或对象标签。
- 最后在控制台上可视化,也可以导出至S3以便用Amazon QuickSight 商业智能分析工具。
对象锁定
- 可以在客户定义的保留期内阻止删除对象版本,让您能够通过实施保留策略来进一步保护数据或满足监管要求。
- 在对象级别或存储桶级别配置 S3 对象锁定,防止在预定义的保留到期日期或依法保留日期之前删除对象版本。无论对象在哪个存储类中,S3 对象锁定保护都将保留,并且会在存储类之间的整个 S3 生命周期转换期间保留。
S3 清单
- 为S3同步列表提供的预定替代方案
- 通过S3清单,提供每日,每周的对象元数据进行输入,以加快业务工作流和大数据作业的查询。
检测数据损坏
- 是利用Content MD5 以及 CRC来检测数据损坏
- 在空闲时对数据执行检测,并使用冗余数据修复任何损坏
记录日志
- 跟踪对S3存储桶的访问日志,默认关闭
- 日志记录采用尽力而为方式记录,会稍有延迟
- 日志包含 请求者账户和IP、存储桶名称、请求时间、请求操作和错误代码
事件通知
- 在S3反应操作或上载等事件时,启用通知执行工作流,发送警报或执行其他操作来响应该事件
- 通知消息结合SNS、SQS、Lambda函数进行响应触发
跨源资源共享 CORS
- 现代浏览器默认使用了同源策略阻止JavaScript或HTML5加载其他站点的内容以确保不会有恶意内容被加载
- S3可以配置明确启用跨源请求,实现外部网页、样式表、H5等程序安全的引用S3的资源
S3实践和场景
S3使用实践
- 选择离用户较近的区域,距离对性能影响非常大
- 与计算资源和其他AWS资源位于同一位置会影响性能
- 使用全球唯一的字符串(3-63字符)来命名对象,是存储桶提供一致的性能
S3应用场景
- 本地或云数据的备份和归档
- 媒体和软件存储和分发
- 大数据分析
- 静态网站托管
- 云原生移动互联网应用程序托管
- 作为批量数据的Blob存储,同时在另一数据库中保留数据索引实现快速搜索和复杂查询
- 静态网站托管
S3请求处理性能优化
- 当S3存储桶中的对象超过1000个时,存储桶会进行分区
- 如果顺序命名这些对象,可能导致每次对多个邻近对象的读取都在一个分区里而影响性能
- 通过在对象名前缀添加hash值得方式,使得对象随机的分布在不同分区里,则可以提升处理性能
- 以前存储桶常规可以支持 每秒 100个以上的PUT/LIST/DELETE 以及 300 个以上的GET,
- 2018年后,提升到3500个PUT 和 5500个GET,一般情况下不再需要对处理性能进行优化
- 为了更有效的检索,还建议保留二级索引并存储在数据库中,如DynamoDB
S3 安全性
访问控制
-
Identity and Access Management (IAM) 策略
- IAM 让拥有多名员工的组织能够使用一个 AWS 账户创建和管理多个用户。使用 IAM 策略,公司可向 IAM 用户授予对 Amazon S3 存储桶或对象的精细控制权,同时保留对用户执行的所有操作的完全控制。
-
存储桶策略
- 用存储桶策略,客户可以定义广泛适用于其 Amazon S3 资源的所有请求的规则,例如为 Amazon S3 资源的子集授予写入权限。客户还可以基于请求的某种特征(例如 HTTP 引用站点和 IP 地址)来限制访问。
- 可以利用存储桶策略配合IAM策略,以及查询字符串认证来实现细粒度访问控制 (推荐)
-
访问控制列表 (ACL)
- 使通过 ACL,客户可为特定用户授予对单个存储桶或数据对象的特定权限,例如读取、写入、完全控制。
这是一种粗粒度的访问控制。
- 使通过 ACL,客户可为特定用户授予对单个存储桶或数据对象的特定权限,例如读取、写入、完全控制。
-
查询字符串身份验证
- 借助查询字符串身份验证,客户可以为 Amazon S3 对象创建一个仅在有限时间内有效的 URL。
S3的数据加密
- 数据加密是可选项
- 默认情况下,S3是私有数据,需要AWS凭证才能访问
- 但是可以通过预签名URL分享对象,通过HTTP和HTTPS访问
- S3提供日志功能审核所有对象的访问
- S3支持为每个存储桶、前缀和对象设置访问控制列表和策略
- 最佳实践是对所有敏感数据加密
- 传输中的数据使用SSL API,确保所有数据都采用HTTPS传输
-
服务器端加密:
- 数据在S3中存储是被加密,采用SSE的不同组合解决方案
- 如果是授权的访问,访问加密数据和非加密数据的过程实际上是没有区别的
- AWS加密密钥可以通过轮换密钥来进一步加密
-
SSE-S3
- 使用256位AES-256加密标准进行加密,并且主密钥会定期轮换
- 提供了一种集成式解决方案,Amazon 通过其使用多个安全层处理密钥管理和密钥保护问题。如果您希望 Amazon 管理您的密钥,您应该选择 SSE-S3。
-
SSE-C
- 客户来提供和管理加密密钥,S3负责加密和解密
- 让您能利用 Amazon S3 对对象执行加密和解密操作,同时保持对加密对象所用密钥的控制权。借助 SSE-C,您无需实施或使用客户端库来对 Amazon S3 中储存的对象执行加密和解密,但是需要对您发送到 Amazon S3 中执行对象加密和解密操作的密钥进行管理。如果您希望保留自己的加密密钥而不想实施或使用客户端加密库时,请使用 SSE-C。
-
SSE-KMS
- 使用AWS提供的密钥管理系统,有更多的密钥管理能力
- 可让您使用 AWS Key Management Service (AWS KMS) 来管理您的加密密钥。使用 AWS KMS 管理您的密钥有几项额外的好处。利用 AWS KMS,会设置几个单独的主密钥使用权限,从而提供额外的控制层并防止 Amazon S3 中存储的对象遭到未授权访问。AWS KMS 提供审计跟踪,因此您能看到谁使用了您的密钥在何时访问了哪些对象,还能查看用户在没有解密数据的权限下所作的访问数据失败尝试次数。同时,AWS KMS 还提供额外的安全控制,从而支持客户努力符合 PCI-DSS、HIPAA/HITECH 和 FedRAMP 行业要求。
- 客户端加密
- 使用 Amazon S3 加密客户端之类的加密客户端库,
- 您可以保持对密钥的控制并使用您选择的加密库完成对象客户端侧的加密和解密。一些客户倾向于对加密和解密对象拥有端到端的控制权;这样一来,只有经过加密的对象才会通过互联网传输到 Amazon S3。如果您想掌握对加密密钥的控制权,应该使用客户端库,这样便可实施或使用客户端加密库,同时在将对象传输到 Amazon S3 进行储存之前需要对其进行加密。
- 数据在存入S3前已经被客户应用程序加密,除了用户自己进行完全管理外,也可以选择使用AWS KMS进行密钥管理
- 是嵌入AWS开发工具包中的一组开源API取×××源的加密工具,客户端将从KMI中提供一个密钥,作为S3调用的一部分用于加密或解密
- 通过AWS EMR 数据写入 S3时,可以使用S3DistCp请求服务器端加密,也可以在写入前进行客户端加密,需要将S3DistCP复制到EMR集群里
数据访问审计
- 可以选择为存储桶配置创建访问日志记录
- 也可以利用CloudTrail监控访问日志。
Amazon Macie
- Amazon Macie 是一种支持 AI 技术的安全服务,可以帮助您通过自动发现、分类和保护存储在 Amazon S3 中的敏感数据来防止数据丢失。
- Amazon Macie 使用机器学习来识别敏感数据(例如,个人身份信息 [PII] 或知识产权),分配业务价值,提供此数据的存储位置信息及其在组织中的使用方式信息
- Amazon Macie 为您提供一种自动化和低接触的方式来发现和分类业务数据。Amazon Macie 识别客户在其 S3 存储桶中的对象,并将对象内容流式传输到内存中进行分析。当需要对复杂文件格式进行更深入的分析时,Amazon Macie 将下载对象的完整副本,并在短时间内保存,直到完成对象的全面分析。
- Amazon Macie 可持续监控数据访问活动异常,并在检测到未经授权的访问或意外数据泄漏风险时发出警报。通过模板化的 Lambda 函数进行控制,可在发现可疑行为或对实体或第三方应用程序进行未经授权的数据访问时撤销访问或触发密码重置策略。发出警报时,您可以使用 Amazon Macie 进行事件响应,并使用 Amazon CloudWatch Events 迅速采取行动,保护您的数据。
AWS S3 Glacier
概述
- 成本极低的归档服务
- 不支持实时读取,通常需要3-5个小时完成检索,但可以使用加急检索(1-5分钟)
- 支持传统磁带的TAR归档和ZIP文件归档
- 每个AWS账号支持1000个存档库,每个存档库可以无限量支持存档文件,每个存档文件1KB-40TB,每个文件需要额外32K+8K用于索引和元数据。
- 达到11个9的数据持久性
- Glacier数据是默认加密
- 按照存储容量和检索容量收费
- 最少存储90天,否则需要收取提前删除费
属性
Archives 档案
- 每个档案最大支持40TB数据
- 每个档案有唯一档案ID,但不支持用户友好的存档名称
- 归档创建完成后,无法被修改
Vaults保管库
- 存放归档的容器,每个账户最多拥有1000个Vault
- 基于Vault可以实现访问策略控制,支持IAM策略
Vaults Locks 保管库锁
- 强制执行各个Vaults的合规性策略,包括一次写入多次读取控件
- 一旦锁定,策略将不可改变
数据检索
- 每月可以免费检索10GB的归档数据
-
需要使用Amazon S3 API 或 S3 控制台来对Glacier 进行检索和操作
- 标准检索 3-5个小时
- 批量检索 5-12小时
- 加急检索 1-5分钟,通过预置容量保证每5分钟执行3次加急检索
- 建议使用策略来限制检索数据大小以确保经济性
- 读取Glacier 数据会在S3-IA中创建一个临时副本
- 检索部分存档时,只要提取的范围和整个文档的哈希树对齐就能验证文档的完整性
- 只可以维护一份Glacier的数据索引来列出所有存档清单,一天更新一次
数据传输和访问
- 所有到Glacier的数据传输都是SSL加密的,不管是对内还是对外
- 通过文件库访问策略在资源级别设计权限
- 使用IAM在用户权限级别设计权限
- 仅允许自身的AWS账户及授权的IAM用户可以对Glacier 进行访问,但可以供IAM Role授予跨账户只读权限
Glacier Select
- Amazon S3 Glacier Select 是一项功能,可让您对存储在 Amazon S3 Glacier 中的数据运行查询,而不需要将整个对象恢复到 Amazon S3 等较热的层。
- 借助 Amazon S3 Glacier Select,您现在可以使用 SQL 子集直接对 Amazon S3 Glacier 中的数据进行筛选和基本查询。
- 您提供 SQL 查询和 Amazon S3 Glacier 对象列表,Amazon S3 Glacier Select 将就地运行查询,并将输出结果写入您在 Amazon S3 中指定的存储桶
AWS上存储的文件生命周期策略
Elastic Block Store (EBS)
概述
- EBS仅在单个可用区有效
- 每个EBS块会在可用区内自动复制,以提供高持久和高可用。
- EBS卷可以挂载到EC2,一次只能将EBS连接到一个EC2
- 要共享磁盘卷,需要使用EFS
EBS类型
-
磁性卷(Megnetic Volume)
- 最低的性能和最经济的存储
- EBS磁盘大小从1GB - 1TB 不等,不管实际存储大小,均按预配置存储收费
- 平均支持100 IOPS,但最大可突破到数百IOPS,吞吐量 40-90MB
- 适用于 不常访问数据的工作负载,连续读取需要低成本存储的情况
-
通用SSD (gp2)
- 经济高效的存储,适合各种工作负载
- 容量范围从1GB到16TB
- 每GB提供3个IOPS基准性能,上限为10000IOPS,吞吐量160MB
- 1TB以下可以支持突破3000IOPS,如当有500G硬盘标准IO为1500IOPS,在不使用磁盘时做IO信用积累,用于在大量IO是采用爆裂行为至3000IOPS
- 无论实际使用多少容量,都按照预配置容量收费
- 支持挂载多个卷条带化实现更高性能
- 适用于:系统启动卷,中小型数据库,开发和测试环境
-
预置IOPS SSD卷 (lo1)
- 适合于对存储性能、随机IO一致性非常敏感的应用,即IO密集型工作负载,如大型数据库
- 容量范围从4GB 到 16TB
- IOPS上限为容量的30倍或32000IOPS, 吞吐量 320MB
- 可以通过RAID0进行卷分割
- 支持挂载多个卷条带化实现高性能,最大75000IOPS
- 用户需要对预置的磁盘大小和IOPS进行付费
-
吞吐量优化HDD (st1)
- 适用于频繁访问、吞吐量密集型的工作负载的高性能低成本HDD
- 容量范围 500GB - 16GB
- 最大IOPS 500, 最大吞吐量 500MB/s
-
冷硬盘 (sc1)
- 容量范围 500GB - 16GB
- 较少访问的工作负载,IOPS 250 , 最大吞吐量250MB
-
EBS优化实例
- 使用任何标准EBS之外的数据卷挂载,都建议使用基于EBS优化的实例。
- EBS优化实例需要为每小时租用支付额外一小笔费用
保护数据
-
数据快照
- 无论任何类型的卷,都可以采用EBS快照进行备份,并存储在S3中
- 快照是增量备份, 但每个快照文件利用快照链接是独立的可恢复的
- 快照本身免费,仅需为快照数据存储付费
- 快照完成后可继续操作数据库,但快照文件在传输完成之前将无法进行下一次快照
- 快照存储虽然采用和S3相同技术,但是并不能像S3一样访问和管理,必须采用专门的快照管理功能
-
数据恢复
- 快照恢复只能在当前区域操作,如果要跨区域恢复快照,需要先跨区域拷贝快照
- 快照恢复会首先创建卷,然后在逐块恢复数据,优先访问的块会被优先恢复
- 数据第一次从快照恢复的时候,其读取速率会较慢
- 数据快照可以用来作为当前EBS卷的扩容操作,即先做快照,再往新大小的卷上恢复快照
- 当数据卷从当前实例中被分离后,即可挂载到新的实例,快照恢复卷本身就是个分离卷
-
加密选项
- ESS挂载前需要被指定加密选项
- EBS卷加密通常使用KMS来管理密钥
- 数据通常会在未访问时被自动加密,所以读取非加密数据和加密数据的各方面性能是一致的
- 从加密卷获取的快照会被自动加密,加密快照文件本身也会被加密存储
- 不能对已存在的卷进行加密,需要对其快照进行加密恢复成一个新的卷, 也可以将一个未加密快照拷贝成一个加密快照
- EBS根卷默认不能加密,需要使用第三方软件加密
- 除根卷之外的其他卷是可以加密的
EBS Volume 属性
- EBS Root Volume必须在关机状态下进行挂载和卸载,但是Addtional Volume可以进行在线挂载删除
- EBS数据是是持久性的,但是默认删除EC2会自动删除EBS的数据,可手工选择保留
- EC2关机后 EBS数据存储会持续计费
EBS 安全性
- EBS 卷的访问权限仅限于创建它的AWS账户以及授权的IAM账户
- EBS快照可以有限制的分享给其他账户,但需要谨慎
- EBS卷建立时是未格式化设备,所有数据都被擦除
- EBS卷可以支持用户定制化的擦除数据
- 建议对EBS数据用AES-256进行加密及其快照
提升EBS性能
-
确保选择了可以支持EBS优化的实例
- C3,R3,M3会产生额外成本
- M4,C4,C5和D2是免费支持的
- 关闭EBS的RAID0提高吞吐量
- 尽可能减少或者进行有计划的Snapshot,特别对于HDD
实例存储
概述
- 只有部分EC2实例支持实例存储
- 挂载在EC2下面的临时块级存储
- 主要用于临时存储频繁修改的信息: 缓冲区、缓存、临时数据和其他临时内容
- EC2可挂载的存储大小取决于实例类型,最大可挂载24个2TB的实例存储,也有HDD和SSD可选,这都是与实例本身绑定的,无需另行付费
- 实例终止或停止,底层磁盘失效都会导致实例存储数据丢失
- 实例存储允许重启,但不允许停止
- 支持用户自定义配置RAID0/1/5等
- 虽然可以通过RAID或HDFS等方式支持冗余,但是对于持久性数据仍然建议使用更持久的解决方案如S3或EBS
EFS (Elastic File System)
概述
- 支持GB-PB的自动扩展的数据容量
- 提供延迟低每秒多GB并行的性能,并且支持预置吞吐量
- 实现实例间的数据共享
- 支持Network File System vesion 4 (NFSv4) 协议
- EFS自动分配全局唯一ID,所以命名无需唯一
- 使用挂载方式+文件系统的DNS连接到EC2
- EC2和EFS必须在同一个安全组里面才能挂载
- 只为使用的EFS份额付费
- 可以同时间支持成千上万的NFS连接
- 支持一个到上千个EC2挂载同一个EFS
- EFS的数据会保存在一个区域内的多个可用区
- EFS除了能够挂载到EC2,还支持挂载到本地的服务器(ClassicLink)
-
数据从本地移动到EFS
- 可以使用Direct Connect
- 使用DataSync 使用专用协议来加速和保护通过 Internet 或 AWS Direct Connect 传输的数据,速度比开源工具快 10 倍。使用 DataSync,您可以执行一次性数据迁移,传输本地数据以进行及时的云端分析,并自动复制到 AWS 以进行数据保护和恢复
- 区域级服务,在不同可用区之间进行冗余复制(可手工选择)
- 可以利用AWS Backup来安排自动增量式备份
- 读写一致性(Read After Write Consistency)
- 支持使用IAM来控制和管理文件系统
- 支持使用KMS进行静态数据加密