接下來要介紹的是如何將先前的應用程式從 EC2 搬移到更輕量的 Container 裡,但在介紹 Container 之前先介紹 Amazon Simple Storage Service (Amazon S3) ,做為應用程式的儲存空間。
Amazon S3 是 AWS 所推出的託管雲儲存解決方案,具有無縫擴展和提供 99.999999999% 的持久性。所謂的無縫擴展指的是當存取的流量增加時,維運人員必須要考慮如何擴展基礎建設好讓使用者可以正常的存取,而 Amazon S3 可以提供自動擴展的功能,不需維運人員的介入;99.999999999% 的持久性,通常我們簡稱為 11 個 9 的持久性,在此可能要先說明一下在使用雲端服務時,常見的三個名詞:
圖 01、系統可靠性評估
可用性 (Availability):在軟體和硬體系統中都會使用,可用性是從可靠性推導出來的。可用性是指系統無故障運行的時間占比,計算公式:Availability = MTBF/(MTBF + MTTR)
持久性 (Durability):與可用性最大的差別是在持久性並不表示它是可用的,但是這些資料是存在的,比方說系統已經無法提供服務,這時就算是無可用姓,但是它的資料依據存在,所以持久性這部分還是有效的。這就是為何我們看到 Amazon S3 會宣稱它有 99.999999999% 持久性和 99.99% 可用性。
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
圖 09、在 EC2 中下載並檢視內容
References