用 S3 + Lambda 完成無伺服器化的全受管 AWS 架構

情境

某家公司有一個可讓使用者上傳短影片的網路應用程式。

影片目前儲存在 Amazon EBS 磁碟上,並由客製化的辨識軟體進行分類分析。

網站包含靜態內容,流量有季節性尖峰。整體架構使用 Amazon EC2 Auto Scaling 群組作為前端 Web Application,以及另一組 EC2 Auto Scaling 群組處理 SQS 佇列中的影片分析工作。

公司希望重新打造架構以降低維運負擔,盡可能改採 AWS 受管服務,並移除對第三方軟體的依賴。

知識點

  1. Amazon S3 作為靜態網站或檔案儲存服務
  2. Amazon S3 Event Notifications → SQS / SNS 事件觸發
  3. AWS Lambda 的無伺服器運算
  4. Amazon Rekognition 的影像/影片分類能力
  5. SQS 佇列與 Lambda 的整合
  6. 降低維運負擔的架構設計原則(Serverless / Managed Services)

Amazon S3 靜態網站託管

Amazon S3 靜態網站代管功能允許您將僅包含靜態內容(HTML、CSS、JavaScript、影像等)的網站檔案直接存放在 S3 儲存貯體中,並透過專門的 S3 網站端點 (Website Endpoint) 提供服務。

靜態網站的特點是網頁內容在用戶請求時不會改變,所有處理都在用戶的瀏覽器(客戶端)進行,無需依賴伺服器端的應用程式(如 PHP、Python 或 Java)或資料庫。

Amazon S3 Event Notifications

Amazon S3 事件通知允許您在 S3 儲存貯體中發生特定事件時,接收即時通知。這項功能使您無需持續對儲存貯體進行輪詢(polling),即可自動觸發下游應用程式、服務或工作流程來響應資料變更,從而提高效率、降低延遲並減少營運成本。

事件通知是通過在儲存貯體上配置一個通知配置 (notification configuration) 來設定的,該配置指定了要監控的事件類型和訊息的發送目的地。

Amazon SQS

Amazon SQS 是一種安全、持久且高度可用的代管訊息佇列 (hosted queue) 服務。它的主要目的是解耦 (decouple) 分佈式軟體系統及其元件,使它們能夠獨立運行和擴展。

在一個分佈式訊息系統中,主要有三個部分:

  1. 生產者 (Producers):將訊息發送到佇列的元件。
  2. 佇列 (Queue):由 Amazon SQS 伺服器冗餘存儲訊息。
  3. 消費者 (Consumers):從佇列接收和處理訊息的元件。

SQS 透過將元件之間的資料傳輸和處理任務非同步化,從而提高系統的可靠性 (Reliability)彈性 (Scalability)可用性 (Availability)

AWS Lambda

AWS Lambda 是一種運算服務 (compute service),它允許您執行程式碼而無需管理伺服器。您的程式碼以 Lambda 函數 (Lambda functions) 的形式運行,AWS 會負責所有運算資源的管理,包括伺服器和作業系統維護、容量佈建、自動擴展和日誌記錄。

Lambda 的核心特性是事件驅動 (event-driven)。這意味著您的函數會被事件源和 AWS 服務所觸發,例如:

  • 上傳檔案到 Amazon S3 時。
  • 資料流 (Data Stream) 發生變化時(如 Amazon Kinesis)。
  • 收到 Amazon API Gateway 的 HTTP 請求時。

您只需專注於編寫您的業務邏輯程式碼,Lambda 會根據需求自動且精準地擴展或縮減。

Amazon Rekognition 文字偵測簡介與功能

Amazon Rekognition 的文字偵測功能能夠在圖像和影片中識別出文字,並將其轉換為機器可讀 (machine-readable) 的格式。這使得您可以利用圖像和影片中的視覺資訊來增強應用程式的功能。

該服務採用深度學習技術,支援大多數字體,包括高度風格化的字體,並且能夠處理影像中旋轉或扭曲的文字。

使用到的AWS服務

  1. Amazon S3(靜態網站託管、影片儲存)
  2. Amazon SQS(影片處理佇列)
  3. AWS Lambda(無伺服器影片分析)
  4. Amazon Rekognition(影片分析)

結論

S3 託管 Web App + S3 儲存影片 + Event 通知 → SQS → Lambda → Rekognition

完全符合需求:

  • S3 靜態網站不需維運伺服器
  • S3 儲存影片是雲端原生最佳做法
  • Event + SQS + Lambda 是 Serverless pipeline
  • Lambda 呼叫 Rekognition 移除第三方軟體
  • 幾乎零維運負擔

參考連結

S3 → Lambda → Rekognition 範例
https://docs.aws.amazon.com/rekognition/latest/dg/text-detection.html

如果想知道更多雲端新知,加入我們LINE@官方號

感謝您的填寫,將有專人與您聯繫