本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用無伺服器方法將 AWS 服務鏈結在一起
創建者阿尼克特·布拉幹薩 (AWS)
環境:生產 | 技術:無伺服器;; CloudNative;現代化 DevelopmentAndTesting DevOps;基礎架構 | AWS 服務:Amazon S3;Amazon SNS;Amazon SQS;AWS Lambda |
Summary
此模式展示了一種可擴展的無伺服器方法,方法是將亞馬遜簡單儲存服務 (Amazon S3)、亞馬遜簡單通知服務 (Amazon SNS)、亞馬遜簡單 Amazon Simple Queue Service (Amazon SQS) 和 AWS Lambda 鏈接在一起,以處理上傳檔案。上傳的文件示例用於演示目的。您可以使用無伺服器方法將符合業務目標所需的 AWS 服務組合鏈結在一起,以完成其他任務。無伺服器方法採用非同步工作流程,該工作流程仰賴事件驅動的通知、彈性儲存裝置,以及運算即服務 (FAA) 來處理要求。您可以使用無伺服器方法擴充以滿足需求,同時將成本降至最低。
注意:透過無伺服器方法將 AWS 服務鏈結在一起,有幾個選項。例如,您可以使用將 Lambda 與 Amazon S3 相結合的方法,而不是使用 Amazon SNS 和 Amazon SQS。但是,此模式使用 Amazon SNS 和 Amazon SQS,因為這種方法可讓您在事件通知期間將多個整合點新增至 Lambda 叫用程序,並擴展實作以在無伺服器協調中包含多個偵聽程式,同時將處理額外負荷降至最低。
先決條件和限制
先決條件
有效的 AWS 帳戶
以程式設計方式存取 AWS 帳戶。如需詳細資訊,請參閱:
產品版本
AWS CDK 2.x
Python 3.9
架構
下圖說明鏈結的 AWS 服務如何讓使用者將檔案上傳到 S3 儲存貯體進行處理。
![使用鏈結的 AWS 服務將檔案上傳到 S3 儲存貯體的工作流程。](images/pattern-img/8b298cfc-509a-4502-97b2-f1af09914b99/images/f3ca9202-96eb-40cf-85cd-4bb569fcd083.png)
該圖顯示以下工作流程:
使用者將檔案上傳到 S3 儲存貯體。
上傳會啟動 S3 事件,將訊息發佈到 SNS 主題。訊息包含 S3 事件的詳細資訊。
發佈至 SNS 主題的訊息會插入 SQS 佇列,該佇列已訂閱並接收該主題的通知。
Lambda 函數會輪詢 SQS 佇列 (做為其事件來源),並等待訊息處理。
Lambda 函數從 SQS 佇列接收訊息時,會處理這些訊息並確認收到這些訊息。
如果 Lambda 未處理訊息,則該訊息會傳回至 SQS 佇列,最後會傳輸至 SQS 無效字母佇列。
技術, 堆
Amazon S3
Amazon SNS
Amazon SQS
AWS Lambda
工具
AWS 服務
Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。
Amazon Simple Notification Service (Amazon SNS) 可協助您協調和管理發佈者和客戶之間的訊息交換,包括 Web 伺服器和電子郵件地址。
Amazon Simple Queue Service (Amazon SQS) 提供安全、耐用且可用的託管佇列,可協助您整合和分離分散式軟體系統和元件。
AWS Lambda 是一種運算服務,可協助您執行程式碼,而不需要佈建或管理伺服器。它只會在需要時執行程式碼並自動調整規模,因此您只需為使用的運算時間付費。
其他工具
AWS Cloud Development Kit (AWS CDK) 是與 AWS CDK 應用程式互動的主要工具。它會執行您的應用程式、詢問您定義的應用程式模型,以及產生和部署 AWS CDK 產生的 AWS CloudFormation 範本。
AWS Command Line Interface (AWS CLI) (AWS CLI) 是一種開放原始碼工具,可協助您透過命令列殼層中的命令與 AWS 服務互動。
Python
是一種高級別的,解釋的通用編程語言。
Code
此模式的程式碼可在將 S3 與 SNS GitHub 鏈結到 SQS 到 Lambda 儲存庫中使
史诗
任務 | 描述 | 所需技能 |
---|---|---|
複製儲存庫。 | 複製存放庫 | 應用程式開發人員 |
設定虛擬環境。 |
| 應用程式開發人員 |
安裝依存項目。 | 執行 | 應用程式開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
運行單元測試。 |
| 應用開發人員,測試工程 |
任務 | 描述 | 所需技能 |
---|---|---|
設置啟動程序環境。 | 遵循 AWS 文件中啟動載入中的指示,在將部署 CloudFormation 堆疊的每個 AWS 區域中啟動 AWS CDK 部署環境。 附註:此步驟要求您擁有具有程式設計存取權的認證。 | App 開發人員、 DevOps 工程師、資料工程師 |
部署 CloudFormation 堆疊。 | 執行命 | AWS 應用程式開發人員、 DevOps 工程師 DevOps |
任務 | 描述 | 所需技能 |
---|---|---|
刪除 CloudFormation 堆疊並移除關聯的資源。 | 若要刪除已建立的 CloudFormation 堆疊並移除所有關聯的資源,請執行 | 應用程式開發人員 |