實驗室概觀
此實驗室會說明如何使用 Amazon Simple Storage Service (Amazon S3) 做為儲存空間、以 Amazon DynamoDB 做為資料庫,並將 Web 應用程式託管於 Amazon Elastic Compute Cloud (Amazon EC2),成功部署相片分享網站。
在此實驗室中,您會建立系統的核心架構,提供瀏覽和上傳內容等基本功能。針對這個實驗室的目的,雖然媒體內容僅限影像,但本文所涵蓋的概念也能應用至其他類型的媒體,例如文件 (PDF、RTF、簡報等項目)、音樂、影片等等。此外,該系統也會提供 Web 界面,供使用者瀏覽及儲存影像。
目標
此實驗室結束後,您將能夠:
- 建立新的 Amazon S3 儲存貯體來儲存媒體檔案
- 建立 DynamoDB 資料表來儲存您的媒體檔案中繼資料
- 啟動新的 EC2 執行個體,以執行您的 Web 伺服器
- 測試部署
實驗室先決條件
若要成功完成此實驗室,您應該熟悉 AWS 管理主控台的基本瀏覽方式,並了解如何使用文字編輯器來編輯指令碼。
持續時間
此實驗室需要大約 60 分鐘的時間來完成。
圖示圖例
此實驗室使用各種圖示提醒您注意不同類型的指示和注意事項。下列清單說明各圖示的用途:
- 注意:提示、秘訣或重要指引
解決方案概觀
媒體儲存
影像可儲存於 Amazon Elastic Block Store 磁碟區,不過您需提前佈建容量,並透過新增磁碟區,妥善管理擴充儲存層的相關作業。此外,這些磁碟區需要與 EC2 執行個體連接,才能透過 HTTP 提供內容。要是資料未複寫至其他執行個體,由其他執行個體接手提供資料,就會在系統中發生單點故障問題。
比較理想的作法,是將 Amazon S3 作為媒體檔案的儲存庫使用。Amazon S3 能體現優異的資料耐用性,並透過 HTTP 提供內容。Amazon S3 儲存貯體所能存放的物件數量沒有上限,無論您使用幾個儲存貯體,都能享有穩定一致的效能。您可以將所有物件存放在單一儲存貯體,也能分門別類儲存到多個不同的儲存貯體。
在這個實驗室中,您將建置下列解決方案:
使用者上傳影像後,Web 伺服器會在接收到檔案後建立影像縮圖。接著,伺服器會將影像和縮圖上傳至 S3 儲存貯體,並將影像的中繼資料插入 DynamoDB 資料表。
儘管 Amazon S3 和 DynamoDB 都是具備擴展和容錯能力的系統,但只要您的 Web 伺服器是在單一 EC2 執行個體上運作,顯然就可能發生單點故障 (如果 Web 應用程式故障,系統就無法存取及復原) 和瓶頸 (如果傳入的請求涉及重要負載,系統甚至可能無法正常提供服務)。
以下是在實驗室案例中使用的每個服務的簡介。
注意:如果您很熟悉這些 AWS 服務,可以略過服務簡介,並且直接跳至 Start lab (開始實驗室) 區段。
Amazon EC2
Amazon Elastic Compute Cloud (Amazon EC2) 是一種 Web 服務,可在雲端提供可調整大小的運算容量。其設計可讓開發人員更容易執行 Web 規模的運算。 Amazon EC2 的簡易 Web 服務界面讓您可以輕鬆獲取和配置容量。透過此服務,您可以完全控制運算資源,並在經過驗證的 Amazon 運算環境中執行。Amazon EC2 能將您取得及啟動新伺服器執行個體所需的時間縮短至幾分鐘,如此一來,當您的運算需求發生變化時,您就能快速擴展及縮減運算容量。Amazon EC2 讓您只需為您實際使用的容量付費,從而改變了運算的經濟成本。
有了 Amazon EC2,您可以在幾分鐘內增減容量,不必耗上幾小時甚至幾天。您可以同時管理一個、數百個或甚至數千個伺服器執行個體。當然,由於這項工作是完全透過 Web 服務 API 來控制,因此您的應用程式可根據其自身需求自動調整規模。
您可以完全控制您的執行個體。您擁有每個執行個體的根使用者存取權,可以像使用其他任何機器一樣,與這些執行個體互動。您可以停止任何執行個體,同時將資料保留在開機分區,之後再使用 Web 服務 API 重新啟動同一個執行個體。執行個體可以由 Web 服務 API 從遠端重新啟動。此外,您也擁有執行個體主控台輸出內容的存取權限。
您可以選擇多種執行個體類型、作業系統和軟體套件。Amazon EC2 可讓您針對作業系統和應用程式,選擇最適合的記憶體、CPU、執行個體儲存體和開機分區大小設定。例如,包含眾多 Linux 版本和 Microsoft Windows Server 在內,都是您可選擇的作業系統。
如需 Amazon EC2 的詳細資訊,請參閱:https://aws.amazon.com/ec2/
DynamoDB
DynamoDB 是一種全受管的高速 NoSQL 資料庫服務,無論儲存及擷取任何數量的資料,都能在經濟實惠的前提下輕鬆完成,可滿足任何規模的請求流量。此服務保證提供特定水準的輸送量,而且延遲時間低於 10 毫秒,極其適合遊戲、廣告技術、行動裝置及其他多種應用方式。
DynamoDB 透過 API 和容易使用的管理主控台提供順暢的輸送量及儲存空間擴充功能,讓您能輕鬆調整規模以滿足您的需求。只要按一下按鈕,就能在幾分鐘內建立 DynamoDB 部署作業,每年處理上兆個資料庫請求,目前已有許多客戶親身體驗這項優勢。
DynamoDB 表格沒有固定的結構描述,每個項目都可以有不同數量的屬性。多種資料類型使資料模型更加豐富。次要索引能為您可執行的查詢作業增添彈性,同時又不影響效能。
配備 SSD 儲存空間和自動三向複寫功能,提供渾然天成的效能、可靠性及安全。Amazon DynamoDB 採用經過實證的加密方法,能在安全無虞的情況下驗證使用者身分,防止未經授權的資料存取活動。
如需 Amazon DynamoDB 的詳細資訊,請參閱:https://aws.amazon.com/dynamodb/
Amazon S3
Amazon S3 是專為網際網路所提供的儲存服務,其設計可讓開發人員更容易執行 Web 規模的運算。
Amazon S3 提供簡單的 Web 服務界面,可供使用者從 Web 上的任何位置隨時存放及擷取任意數量的資料。所有開發人員都能存取可高度擴展、安全可靠、快速且低成本的基礎設施,Amazon 本身的全球網站網路就是在此基礎設施上運作。該服務旨在盡可能增加擴展規模的效益,並將這些效益回饋給開發人員。
Amazon S3 的設計初衷根基於一個概念,亦即以網際網路為基礎的優質儲存空間應該垂手可得。如此一來,開發人員不再需要煩惱資料應採取哪種儲存方式、資料是否安全,或儲存空間是否足夠。此外,他們不必在設置自有的儲存解決方案時,預先支付龐大費用,也不需持續負擔維護及擴充儲存伺服器的相關開銷。Amazon S3 的功能簡單而強大:以經濟實惠又安全的方式儲存任何數量的資料,同時確保您在需要的時候,可以隨時輕鬆取得所需資料。Amazon S3 可讓開發人員專注於利用資料實現創新之舉,而非將心力浪費在尋找理想的儲存方式。
如需 Amazon S3 的詳細資訊,請參閱:http://aws.amazon.com/s3/。