amazon s3
亞馬遜旗下全球存儲區域網路
amazon (S3) 是一個公開的服務,Web 應用程序開發人員可以使用它存儲數字資產,包括圖片、視頻、音樂和文檔。 S3 提供一個 RESTful API 以編程方式實現與該服務的交互。
雲是一個抽象的概念,表示鬆散連接在一起的計算機組,這些計算機共同執行某項任務或者服務,就像是使用一個單獨的實體完成一樣。此概念背後的架構也很抽象:每個雲提供者都可以根據各自情況隨意設計它的產品。軟體即服務(Software as a Service,SaaS)是一個與雲相關的概念,表示雲向用戶提供某種服務。雲模型可以降低用戶成本,因為他們無需購買軟體和硬體也可以運行 — 服務提供者已經為用戶提供了必要的組件。
儘管雲計算這一術語並不新鮮(Amazon 在 2007 年就開始提供它的雲服務),但從 2008 年起它才開始真正成為流行詞,這期間,Google 和 Amazon 的雲服務逐漸獲得了公眾的關注。 Google 的 App Engine 使用戶能夠在 Google 基礎設施上構建和託管 Web 應用程序。連同 S3,Amazon Web Services 還包括 Elastic Cloud Compute (EC2) 計算 Web 服務,該服務可以在 Amazon 的基礎設施上託管應用程序。其他公司也開始蠢蠢欲動,準備與 Amazon 和 Google 一決高下,其中就包括 Microsoft®的 Azure,甚至 Sun Microsystems(其雲計算還沒有正式推向市場)也想分一杯羹。
以 Amazon 的 S3 產品為例。顧名思義,這是一個公開的服務,使 Web 開發人員能夠存儲數字資產(如圖片、視頻、音樂和文檔等),以便在應用程序中使用。使用 S3 時,它就像一個位於 Internet 的機器,有一個包含數字資產的硬碟驅動。實際上,它涉及到許多機器(位於各個地理位置),其中包含數字資產(或者數字資產的某些部分)。 Amazon 還處理所有複雜的服務請求,可以存儲數據並檢索數據。您只需要付少量的費用(大約每月 15 美分 /GB)就可以在 Amazon 的伺服器上存儲數據,1 美元即可通過 Amazon 伺服器傳輸數據。
Amazon 的 S3 服務沒有重複開發,它公開了 RESTful API,使您能夠使用任何支持 HTTP 通信的語言訪問 S3。 JetS3t 項目是一個開源 Java 庫,可以抽象出使用 S3 的 RESTful API 的細節,將 API 公開為常見的 Java 方法和類。編寫的代碼越少越好,難道不是嗎?充分利用其他人的成果也是不錯的。在本文中您將看到,JetS3t 使 S3 和 Java 語言的工作變得更加簡單,從根本上提高了效率。
理論上,S3 是一個全球存儲區域網路 (SAN),它表現為一個超大的硬碟,您可以在其中存儲和檢索數字資產。但是,從技術上講,Amazon 的架構有一些不同。您通過 S3 存儲和檢索的資產被稱為對象。對象存儲在存儲段(bucket)中。您可以用硬碟進行類比:對象就像是文件,存儲段就像是文件夾(或目錄)。與硬碟一樣,對象和存儲段也可以通過統一資源標識符(Uniform Resource Identifier,URI)查找。
例如,在我的硬碟中,我有一個名為 whitepaper.pdf 的文件,它位於主目錄中名為 documents 的文件夾中。相應的,該 pdf 文件的 URI 為 /home/aglover/documents/whitepaper.pdf。在 S3 中,URI 有一點不同。首先,存儲段只能是頂級的 — 無法像嵌套硬碟中的文件夾(或目錄)一樣進行嵌套。其次,存儲段必須遵循 Internet 命名法則;句點旁邊沒有斜杠,名稱不包括下劃線等等。最後,由於存儲段名稱已經是 Amazon 域內的公共 URI 的一部分,存儲段名稱必須在所有 S3 中是惟一的。(好消息是每個帳戶只能包含 100 個存儲段,因此不用擔心別人佔用了所有的好名字)。
亞馬遜S3 bucket和對象可以通過網際網路訪問。AWS安全控制用來保護其他的資源,比如安全群組和網路訪問控制列表,但不保護S3中的數據。但是也有一些方法可以保護S3中的數據的機密性、完整性和可用性。
默認方式下,創建於亞馬遜簡單存儲服務(S3)的對象只能夠為創建它們的人訪問。所有者可以授權其他人以粗粒度和細粒度的方式訪問。比如一位所有者可以讓數據集公開使用,每一個人都可以用這個對象的URL來訪問。
或者所有者可以使用S3策略和身份及訪問管理用戶和群組,允許有限的用戶集訪問。S3策略也可以基於網路連接屬性限制運行。如果你只希望企業網路的用戶訪問S3中的對象,指定所有的連接都從一個可信任的IP地址範圍發出。其他地址嘗試訪問則會被拒絕。
如果你希望確保從S3下載下來的數據是加密的,拒絕訪問任何不適SSL加密的連接。
還有一些方法可以用來在S3中實現加密。如果你使用AWS Key Management Service,就可以使用伺服器端加密,允許亞馬遜Web服務(AWS)管理加密密鑰。為了管理你自己的密鑰,你需要使用伺服器端加密密鑰,並且在企業內部保存。第三種選擇是在將數據發送到AWS之前加密數據。在這種場景中,你要管理加密流程的所有方面。
對於在S3中保護數據而言,審計是一個重要的安全流程。存儲管理員可以配置亞馬遜S3 bucket來記錄所有的請求特定bucket的細節。他們可以在其他的亞馬遜S3 bucket中存儲日誌文件,並且用不同的訪問控制授權來最小化干預。