August 20, 2023

Viiisit [Ruby on Rails] - 由 Active Storage 延伸至 Amazon S3 Bucket!

#ruby on rails

before_action :set_knowledge

最近在專案執行上,碰上需要上傳圖片並且圖片能夠在線上的資料庫做保存,這次藉由 Rails Guide 介紹的 Active Storage 與 Amazon S3 的設置環節來記錄一整個建置的過程!

About Active Storage

Active Storage 是 Ruby on Rails 一個內建庫,專門用於處理各種類型的文件,如圖片、視頻、聲音、文檔的上傳、管理和儲存。

再次複習 Active Storage 主要功能:

  1. 文件上傳和存儲:簡化文件上傳的過程,並提供多個存儲後端的選擇,包括本地、雲存儲服務(如 Amazon S3、Google Cloud Storage)等。

  2. 附件關聯:你可以將文件附件與任何 Active Record 模型進行關聯,ex. 用戶頭像、文章圖片等。

  3. 文件處理:Active Storage 允許定義不同版本的文件,ex. 生成縮略圖、處理不同尺寸或格式的文件等。

  4. 檢視和下載文件:可以輕鬆通過生成文件 URL,讓用戶查看或下載文件。

  5. 安全性和驗證:Active Storage 提供文件類型的驗證,確保上傳的文件符合安全要求。

  6. 簡化的 API:通過簡單的 API,可以執行文件上傳、刪除、獲取 URL 等操作。

About Amazon S3

Amazon S3(Simple Storage Service)是一種可擴展的物件儲存服務。
它被廣泛用於存儲和檢索各種數據,包括圖像、視頻、文檔、數據庫備份等。

Amazon S3 主要功能:

  1. 無限擴展性和耐用性:Amazon S3 使用分佈式架構,可以自動擴展以滿足不同規模的儲存需求。它提供高度耐用性,將數據複製到多個數據中心,以防止故障和數據丟失。

  2. 對象儲存:S3 是一個對象儲存服務,它不僅儲存數據本身,還包括元數據(例如標籤、屬性)和一個唯一的鍵(稱為對象鍵),用於訪問儲存在 S3 中的數據。

  3. 無需容量計劃:S3 不需要事先購買或配置特定的儲存容量,你可以根據實際需求進行擴展或縮減,並且只支付實際使用的儲存容量和數據傳輸。

  4. 安全性:S3 提供了多層次的安全性,包括數據加密(在傳輸和靜態儲存中)、存取控制和身份驗證,以確保只有授權的用戶可以訪問數據。

  5. 數據分類和標籤:你可以使用分類和標籤來組織和管理儲存在 S3 中的數據,以便更有效地管理和檢索數據。

  6. 高性能:Amazon S3 提供了高度可靠和低延遲的數據傳輸,可用於快速存儲和檢索大量的數據。

  7. 生態系統整合:Amazon S3 與其他 AWS 服務無縫集成,例如 Amazon EC2、Amazon Lambda、Amazon Redshift 等,可以實現更多複雜的應用場景。

  8. 成本效益:由於 Amazon S3 的按需定價模型,你只需要支付實際使用的儲存和數據傳輸費用,這有助於降低儲存成本。


接著,將透過建置 AWS S3 的 Bucket,來建立一個對外的儲存庫!

首先,註冊 AWS 會員
接著,要進入 S3 -> Create Bucket
The core features of Active Storage require the following permissions: s3:ListBucket, s3:PutObject, s3:GetObject, and s3:DeleteObject. Public access additionally requires s3:PutObjectAcl.