Amazon Simple Storage Service (Amazon S3)
接下来要介绍的是如何将先前的应用程序从 EC2 搬移到更轻量的 Container 里,但在介绍 Container 之前先介绍 Amazon Simple Storage Service (Amazon S3) ,做为应用程序的储存空间。
Amazon S3 简介
Amazon S3 是 AWS 所推出的托管云储存解决方案,具有无缝扩展和提供 99.999999999% 的持久性。所谓的无缝扩展指的是当存取的流量增加时,维运人员必须要考虑如何扩展基础建设好让使用者可以正常的存取,而 Amazon S3 可以提供自动扩展的功能,不需维运人员的介入;99.999999999% 的持久性,通常我们简称为 11 个 9 的持久性,在此可能要先说明一下在使用云端服务时,常见的三个名词:
- 可靠性 (Reliability):一个系统(设备)在约定条件下完成既定功能的概率。衡量可靠性的指标有故障率 (Failure Rate, FR)、平均故障间隔 (Mean Time Between Failures, MTBF)、平均失效前时间(Mean Time to Failure, MTTF)、平均修复时间 (Mean Time to Recovery, MTTR)等。下图说明了何谓故障间隔以及修复时间,而在发生系统无法使用之前,有些数据的写入可能就已经损毁或失效,所以在修复时我们也需要修复这些数据,而到当机前所能修复的数据时间点,我们称之为修复点(Recovery Point, RP), AWS 就容错能力、可恢复性以及可扩展性这三个构面来提供高可靠度。
图 01. 系统可靠性评估
-
可用性 (Availability):在软件和硬件系统中都会使用,可用性是从可靠性推导出来的。可用性是指系统无故障运行的时间占比,计算公式:Availability = MTBF/(MTBF + MTTR)
-
持久性 (Durability):与可用性最大的差别是在持久性并不表示它是可用的,但是这些数据是存在的,比方说系统已经无法提供服务,这时就算是无可用姓,但是它的数据依据存在,所以持久性这部分还是有效的。这就是为何我们看到 Amazon S3 会宣称它有 99.999999999% 持久性和 99.99% 可用性。
Amazon S3 的特色如下:
- 储存任意数量的对象 (Object),对象限制为 5TB ,可将对象视为档案。
- 储存桶 (Bucket) 名称在 Amazon S3 的所有现有储存桶名称中必须具有唯一性,所谓的所有现有储存桶名称包含其他账号的储存桶,可将储存桶视为文件夹。
- Amazon S3 不能用作可启动驱动器。
- 数据以冗余方式存储。
- 通过 AWS 管理控制台、某个软件开发工具包 (SDK) 或第三方解决方案访问 Amazon S3。
- 对象上传或删除可以触发通知、工作流程,甚至触发脚本。
- 可自动对传输中数据和静态数据进行加密。
Amazon S3 操作
接下来我们操作如何将 Amazon EC2 上的档案上传到 Amazon S3
步骤 1: 安装 FileZilla Client
步骤 2: 透过 FileZilla Client 连上 EC2
开启 FileZilla Client 后,选择左上角的开启站台管理员,设定如下:
站台名称: EC2
设定协议: SFTP
主机网址: Amazon EC2 的公有 IPv4 地址
登入形式: 密钥档案
使用者: ec2_user
密钥档案: ithome.ppk 的所在目录
图 02. 设定FileZilla连接 Amazon EC2
顺利连上网站后,接着切换 Apache 网页的默认目录 /var/www/html ,并下载所需要的档案 index.php
图 03. 进入远程站台的网页目录
步骤 3: 新增 S3 储存贮体
到 Amazon S3 控制台,选择左边选单中的 储存贮体,并在右边按下 建立储存贮体,可以发现在 Amazon S3是属于全局的,虽然在建立贮体时还是需要指定区域,但概念上是属于全局的,主要是因为容错机制,会让它将对象会以冗余方式储存在不同可用区及区域。
图 04. 建立 S3 储存贮体
设定 S3 储存贮体名称以及所在区域
图 05. 设定 S3 储存贮体
设定 S3 所有公有存取权,预设为封锁,但因为要提供 Auto Scaling Group 中的 EC2 存取,所以把权限打开,如要增加这一部分的安全性可以透过角色 (Role)来设定。
图 06. 设定 S3 访问权限
步骤 4: 在 S3 储存贮体中新增对象
到 Amazon S3 控制台,选择左边选单中的 储存贮体,并在右边按下刚刚新增的储存贮体,选择上传,接下来就要新增对象,就相当于我们的上传档案,需要经过四个步骤:选取档案、设定许可、设定属性、检阅,其中需注意的是_设定许可_时要将管理公开许可打开。
图 07. 打开对象的管理公开许可
步骤 5: 在 EC2 中下载文件
首先先检视档案的对象 URL,因为这是对外的存取点。
图 08. 检视档案的对象 URL
透过 Putty 连接到 EC2,并下达以下指令
# 下载物件
wget https://bucket-key.s3-regionname.amazonaws.com/object-name
#检视对象内容
more object-name
- 1
- 2
- 3
- 4
图 09. 在 EC2 中下载并检视内容
References
- 可靠性、可用性、持久性等三个概念,http://www.brofive.org/?p=3666
- MTTR, MTBF, or MTTF? – A Simple Guide To Failure Metrics, https://limblecmms.com/blog/mttr-mtbf-mttf-guide-to-failure-metrics/
- 设备管理中MTBF-MTTR-MTTF三个指标的区别,https://kknews.cc/career/r3o8b6v.html
de-to-failure-metrics/ - 设备管理中MTBF-MTTR-MTTF三个指标的区别,https://kknews.cc/career/r3o8b6v.html