Amazon S3 簡介:雲端物件儲存的運作原理

Amazon Simple Storage Service (S3) 是 Amazon Web Services (AWS) 旗下廣受歡迎的雲端儲存服務。Amazon S3 雲端儲存具備高度的可靠性、靈活性、可擴展性及存取便利性。 Amazon S3 中儲存的物件數量與資料量均無上限。S3 雲端儲存對企業極具吸引力,因為您只需為實際使用的資源付費。

然而,相關術語與運作方式可能會讓初次接觸 Amazon S3 的使用者產生誤解或感到困惑。S3 資料儲存於何處?Amazon S3 儲存服務如何運作?這篇部落格文章將說明 Amazon S3 雲端儲存的主要概念與運作原理。

直接備份至 AWS S3 | NAKIVO

直接備份至 AWS S3 | NAKIVO

透過簡單的 Amazon S3 整合及防勒索軟體的不可變性選項,避免單點故障。具備自動備份分層與快速還原特點。

關於 Amazon S3 儲存服務

Amazon S3 是 AWS 推出的首項雲端服務,於 2006 年正式上線。自此之後,這項儲存服務的普及度便持續攀升。如今,Amazon 雖已提供眾多其他雲端服務,但 Amazon S3 雲端儲存仍是其中使用最廣泛的一項。除了 Amazon S3 儲存服務外,AWS 還提供適用於 Amazon EC2 的 Amazon EBS 儲存卷以及 Amazon Drive。不過,這三項服務的用途與目標各有不同。

EBS (Elastic Block Storage) EC2(彈性運算雲)執行個體的儲存卷,是位於 Amazon 雲端中的虛擬機器所使用的虛擬磁碟。從 EBS 的名稱即可理解,這是一種雲端區塊儲存,相當於實體電腦中的硬碟。作業系統可以安裝在已掛載至 EC2 例如。

Amazon Drive (前身為 Amazon 雲 Drive)是 Google Drive 的對應服務, Microsoft OneDrive. Amazon Drive 的特點比 Amazon S3 更為有限。Amazon Drive 定位為一項雲端儲存服務,用於備份照片及其他使用者資料。

Amazon S3 雲端儲存是一種基於物件的儲存服務。當您使用 Amazon S3 儲存時,無法安裝作業系統,因為無法以作業系統的需求而進行區塊層級存取資料。如果您需要將 Amazon S3 儲存掛載為作業系統的網路磁碟機,請使用使用者空間中的檔案系統。請閱讀關於此主題的部落格文章 掛載 S3 雲端儲存 適用於不同的作業系統。 Google Cloud 是 Amazon S3 雲端儲存的對應服務。

Amazon S3 主要概念

如果您是第一次使用 Amazon S3,其中某些概念對您來說可能有些新穎且不熟悉。在 S3 雲端儲存中儲存資料的方法,與在傳統硬碟、固態硬碟或磁碟陣列中儲存資料的方式有所不同。以下概述了用於在 Amazon S3 雲端儲存中儲存和管理資料的主要概念與技術。

S3 是如何儲存檔案的?

如前所述,Amazon S3 中的資料是以物件形式儲存的。這種方法提供了高度可擴展的雲端儲存空間。物件可以具有不同的位置,位於分散於資料中心各處的不同實體硬碟上。Amazon 資料中心採用特殊的硬體、軟體及分散式檔案系統,以提供高度的可擴展性。冗餘與版本控制是透過區塊儲存方法實現的特點。 當檔案以物件形式儲存於 Amazon S3 時,預設情況下會同時儲存於多個位置(例如磁碟、資料中心或可用區域)。Amazon S3 服務會透過檢查控制雜湊值來定期驗證資料一致性。若偵測到資料損毀,系統將利用冗餘資料來復原該物件。物件儲存於 Amazon S3 儲存桶中。預設情況下,可透過網頁介面存取及管理 Amazon S3 儲存中的物件。

什麼是 S3 物件儲存?

物件儲存是一種將資料以物件而非區塊形式儲存的儲存類型。此概念對於資料而言相當實用 備份、歸檔功能,以及適用於高負載環境的擴展性。

Objects 是 Amazon S3 儲存桶中資料儲存的基本實體。 每個物件主要由三個部分組成:物件內容(儲存於物件中的資料,例如檔案或目錄)、唯一的物件識別碼(ID)以及元資料。元資料以鍵值對形式儲存,包含名稱、大小、日期、安全性屬性、內容類型及 URL 等資訊。

每個物件皆具備存取控制清單(ACL),用以設定允許誰存取該物件。 Amazon S3 物件儲存服務可讓您在尖峰時段(當存儲於 S3 雲端儲存中的物件流量顯著增加時)避免網路瓶頸。Amazon 提供靈活的網路頻寬,但會針對存取儲存物件的網路流量收取費用。當大量客戶端必須存取資料(高讀取頻率)時,物件儲存是理想選擇。在物件儲存模型中,透過元資料進行搜尋的速度更快。

另請參閱 Amazon S3 加密 這有助於您保護儲存於 Amazon S3 雲端儲存中的資料,並提升安全性。Amazon S3 storage

水桶

A bucket 是 Amazon S3 儲存服務中用於存放資料的基本邏輯容器。您可以在一個儲存桶中存放無限量的資料,並儲存不限數量的物件。每個 S3 物件皆儲存於儲存桶中。單一物件在儲存桶中的大小上限為 5 TB。儲存桶用於在最高層級組織命名空間,並用於存取控制。

關鍵字

一個物件具有一個 unique key 上傳至儲存桶後。此金鑰是一個模擬目錄層級結構的字串。只要知道此金鑰,即可存取儲存桶中的物件。儲存桶、金鑰和版本 ID 共同唯一地識別一個物件。例如,若儲存桶名稱是 blog-bucket01, 資料中心儲存您資料的位置位於 s3-eu-west-1 而物件名稱是 test1.txt (一個文字檔),儲存於儲存桶中作為物件的所需檔案的 URL 為:

https://blog-bucket01.s3-eu-west-1.amazonaws.com/test1.txt

若要與其他使用者分享物件,必須透過編輯物件屬性來設定權限。同樣地,您可以建立一個 文字檔案 資料夾,並將該文字檔儲存至該資料夾中:

https://blog-bucket01.s3-eu-west-1.amazonaws.com/TextFiles/test1.txt

可使用的 URL 有兩種類型:

  • bucketname.s3.amazonaws.com/objectname
  • s3.amazon.aws.com/儲存桶名稱/物件名稱

AWS 區域

Amazon 在全球各地設有資料中心,包括美國、愛爾蘭、南非、印度、日本、中國、韓國、加拿大、德國、義大利及英國。您在建立儲存桶時,可選擇所需的區域。建議您選擇離您或您的客戶最近的區域,以提供更低的網路連線延遲,或將成本降至最低(因為各區域的資料儲存價格有所不同)。 儲存於特定 AWS 區域的資料,除非您手動遷移,否則絕不會離開該區域的資料中心。AWS 各區域之間相互隔離,以提供容錯能力與穩定性。

每個區域包含多個可用區域,這些是位於 AWS 區域內的獨立位置。每個區域至少設有三個可用區域,以防止因火災、颱風、颶風、洪水等災害所造成的故障。

資料一致性模型

針對儲存於 Amazon S3 儲存空間中的物件,系統會執行"寫後讀"一致性檢查。Amazon S3 會在選定的區域內,於各伺服器及資料中心之間複製資料,以實現高可用性。在 PUT 請求成功執行後,變更後的資料必須複製到各台伺服器上。此過程可能需要一些時間。 在此情況下,使用者可能會取得舊資料或已更新資料,但不會取得損壞的資料。此原則同樣適用於已刪除的物件及儲存桶。當新物件傳送至 S3 儲存桶時,系統不會執行物件鎖定。若同時執行多個 PUT 請求,則以最新的 PUT 請求為準。您可以自行開發具備鎖定機制的應用程式,以配合儲存於 Amazon S3 儲存空間中的物件運作。

Amazon S3 特點

物件導向儲存的概念,讓 Amazon 能夠在 Amazon S3 的資料儲存與管理方面,提供實用的特點與高度的靈活性。讓我們來回顧這些特點。

版本控制

物件版本控制特點可讓您在單一儲存桶中儲存物件的多個版本。此特點能保護儲存於 Amazon S3 儲存空間中的物件,避免遭到意外編輯、覆寫或刪除。在變更或刪除物件後,您可以還原該物件的其中一個先前版本。版本控制特點是基於物件儲存架構而實現的。 您可以將版本控制用於歸檔目的。版本控制預設為停用狀態。

即使未啟用版本控制,每個 S3 物件仍會被指派一個版本 ID(在此情況下,版本 ID 值會設定為 null)。 若啟用版本控制,在寫入變更後,系統會為物件的新版本指派新的版本 ID 值。版本控制可在儲存桶層級啟用。物件首個版本的版本 ID 值將保持不變。當您從 S3 儲存桶(已啟用版本控制)中刪除物件時,刪除標記將套用至該物件的最新版本。

Versioning in Amazon S3 storage

儲存類別

Amazon S3 儲存類別定義了用於存放資料的儲存空間之用途。儲存類別可在物件層級設定。不過,您也可以在儲存桶層級設定將要建立之物件的預設儲存類別。

S3 Standard 這是預設的儲存類別。此類別屬於熱資料儲存,適合存放經常使用的資料。請使用"標準"儲存類別來託管網站、發佈內容、開發雲端應用程式等。此儲存類別的特點是儲存成本高、還原成本低,且能快速存取資料。

S3 Standard-IA (低頻存取) 可用於儲存比 S3 Standard 存取頻率更低的資料。S3 Standard-IA 針對較長的儲存期間進行了優化。從 S3 Standard-IA 儲存類別中擷取資料需支付費用。此外,在兩者中 S3 Standard 以及 S3 Standard-IA 您必須為資料請求(PUT、COPY、POST、LIST、GET、SELECT)付費。

S3 One Zone-IA 此服務專為不常存取的資料而設計。資料僅儲存於一個可用區域(相較之下,S3 Standard 會將資料儲存於三個可用區域),因此提供的冗餘與韌性較低。 其宣稱的可用性水準為 99.5%,低於其他兩種儲存類別。S3 One Zone-IA 的儲存成本較低,但還原成本較高,且您必須按每 GB 計費支付資料檢索費用。您可以考慮將此儲存類別作為經濟實惠的儲存方案來存放 備份複製 或透過 Amazon S3 跨區域複製所建立的資料副本。

S3 Glacier 與其他儲存類別不同,S3 Glacier 無法提供對儲存資料的即時存取。S3 Glacier 可用於以低成本進行長期歸檔儲存。系統無法保證運作不中斷。 您需要等待數分鐘至數小時才能檢索資料。您可以透過 S3 生命週期政策,將舊資料從較高階的儲存類別(例如 S3 Standard)移轉至 S3 Glacier,藉此降低儲存成本。

S3 Glacier Deep Archive 其運作方式類似於 S3 Glacier,但資料擷取所需的時間約為 12 小時至 48 小時。價格則低於 S3 Glacier。S3 Glacier Deep Archive 儲存類別可用於儲存需遵循資料歸檔需求(如金融、醫療保健)之企業的備份與歸檔資料。這是磁帶盒的絕佳替代方案。

S3 Intelligent-Tiering 是一種會使用其他儲存類別的特殊儲存類別。S3 分層旨在當您無法確定需要存取資料的頻率時,自動選擇更合適的儲存類別來儲存資料。在使用 S3 分層時,Amazon S3 會監控資料存取模式,並將物件儲存於兩個預先選定的儲存類別之一(其中一個用於頻繁存取的資料,另一個則用於罕見存取的資料)。 此方法可在不犧牲效能的前提下,為您提供最佳的成本效益。

例如,若您存取儲存於"不常存取資料"儲存類別中的物件,該物件將自動移至"常存取資料"儲存類別;反之,若物件長時間未被存取,則會移至"不常使用資料"儲存類別。物件可位於同一個儲存桶中,且儲存類別的變更是在 S3 物件層級進行。

Storage classes in Amazon S3 cloud storage

存取控制清單

存取控制清單 (ACL) 是存取權限管理及控制的特點。存取控制清單是基於資源的政策,會附加至每個儲存桶和物件,用以定義具有存取該儲存桶和物件權限的使用者和群組。預設情況下,資源擁有者在建立資源後,將擁有對該儲存桶或物件的完整存取權限。儲存桶存取權限定義了誰可以存取儲存桶中的物件。 物件存取權限則定義了哪些使用者被允許存取物件,以及存取類型。例如,您可以為一位使用者設定唯讀權限,同時為另一位使用者設定讀寫權限。

具有權限的使用者完整清單(擁有權限的使用者稱為受權人):

Owner – 建立儲存桶/物件的使用者。

Authenticated Users – 任何擁有 AWS 帳戶的用戶。

All Users – 所有使用者,包括匿名使用者(沒有 AWS 帳戶的使用者)。

User by Email/Id – 具有 AWS 帳戶的指定使用者。必須指定使用者的 email 地址或 AWS ID,才能授予該使用者存取權限。

可用權限類型:

Full Control – 此權限類型提供"讀取"、"寫入"、"讀取 (ACP)"及"寫入 ACP"權限。

Read – 若套用至儲存桶層級,可列出儲存桶內容;若套用至物件層級,則可讀取物件的資料與元資料。

Write – 僅可套用至儲存桶層級,並允許建立、刪除及覆寫儲存桶中的任何物件。

Read Permissions (READ ACP) – 使用者對指定物件或儲存桶具有讀取權限。

Write Permissions (WRITE ACP) – 使用者可以覆寫指定物件或儲存桶的權限。為使用者啟用此權限類型,等同於設定"完全控制"權限,因為該使用者可以為其帳戶設定任何權限。此權限預設提供給儲存桶擁有者。

S3 storage AWS - permissions and access control lists

儲存桶政策

儲存桶政策是基於資源的 AWS 身分與存取管理政策,用於建立條件規則,以授予 AWS 帳戶和使用者存取儲存桶及其中物件的權限。您可以使用儲存桶政策為儲存桶中的多個物件定義安全性規則。

儲存桶政策以 JSON 檔案形式定義。儲存桶政策的配置內容必須符合 JSON 格式需求,方為有效。 儲存桶政策僅能附加於儲存桶層級,並會繼承至儲存桶中的所有物件。您可以授予從指定 IP 位址連線的使用者、指定 AWS 帳戶的使用者等存取權限。

以下是一個政策範例,該政策授予某個帳戶的所有使用者完全存取權限,並授予另一個帳戶的所有使用者唯讀存取權限。

{

  "Statement": [

    {

      "Effect": "Allow",

      "Principal": {

        "SGWS": "95381782731015222837"

      },

      "Action": "s3:*",

      "Resource": [

        "urn:sgws:s3:::blog-bucket01",

        "urn:sgws:s3:::blog-bucket01/*"

      ]

    },

    {

      "Effect": "Allow",

      "Principal": {

        "SGWS": "30284200178239526177"

      },

      "Action": "s3:GetObject",

      "Resource": "urn:sgws:s3:::blog-bucket01/shared/*"

    },

    {

      "Effect": "Allow",

      "Principal": {

        "SGWS": "30284200178239526177"

      },

      "Action": "s3:ListBucket",

      "Resource": "urn:sgws:s3:::blog-bucket01",

      "Condition": {

        "StringLike": {

          "s3:prefix": "shared/*"

        }

      }

    } 

  ]

}

使用者可透過存取金鑰(存取金鑰 ID 和秘密存取金鑰)存取 Amazon S3 儲存空間,無需輸入使用者名稱和密碼。此方法有助於提升安全性,並常用於開發透過 API 存取 Amazon S3 雲端儲存空間的應用程式。

Amazon S3 的 API

Amazon 提供應用程式介面 (API),讓使用者能存取 S3 功能性,並開發需與 Amazon S3 儲存服務配合運作的自有應用程式。Amazon 提供 REST 和 SOAP 兩種介面。REST 介面使用標準 HTTP 請求來操作儲存桶和物件,並採用標準 HTTP 標頭。SOAP 介面則是另一種可用的介面。雖然透過 HTTP 使用 SOAP 已被視為過時,但您仍可透過 HTTPS 使用 SOAP。

付費模式

Amazon S3 採用"按用量付費"的模式。無需支付最低費用——您無需為預先設定的儲存空間和網路流量付費。您只需針對以下使用類別進行付款:

Storage. 您需為儲存於 Amazon S3 的物件支付費用。應付金額取決於使用的儲存空間、物件在 Amazon S3 儲存空間中的存放時間(當月內),以及儲存物件所使用的儲存類別。

Requests and data retrieval. 您必須為從 Amazon S3 雲端儲存中擷取資料的請求支付費用。

Data transfer. 您必須支付所有已使用的頻寬費用(包括上行與下行流量),但以下情況除外:來自網際網路的傳入資料;傳輸至與來源 S3 儲存桶位於同一 AWS 區域的 Amazon EC2 執行個體的下行資料;以及從 S3 儲存桶傳輸至 CloudFront 的下行資料。

Management and replication. 您必須為使用儲存管理特點(例如分析與物件標籤)付費。Amazon 會針對跨區域複製和同區域複製收取費用。

使用 Amazon S3 計算機 以估算您的還款金額。

試試看 NAKIVO Backup & Replication

試試看 NAKIVO Backup & Replication

立即申請免費試用,全面體驗本解決方案的所有資料保護特點。15 天免費試用。無功能或容量限制。無需提供信用卡資訊。

People also read