使用無伺服器方法將AWS服務串連在一起 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用無伺服器方法將AWS服務串連在一起

由 Aniket Braganza 建立 (AWS)

環境:生產

技術:無伺服器 CloudNative; DevelopmentAndTesting; DevOps;;現代化;基礎設施

AWS 服務:Amazon S3;Amazon SNS;Amazon SQS;AWSLambda

Summary

此模式透過將 Amazon Simple Storage Service (Amazon S3)、Amazon Simple Notification Service (Amazon SNS)、Amazon Simple Queue Service (Amazon SQS) 和 AWS Lambda 鏈結在一起,示範處理上傳檔案的可擴展、無伺服器方法。上傳的檔案範例僅供示範之用。您可以使用無伺服器方法,透過將滿足業務目標所需的AWS服務組合串連在一起來完成其他任務。無伺服器方法採用非同步工作流程,依賴事件驅動的通知、彈性儲存和作為服務 (FaaS運算來處理請求。您可以使用無伺服器方法擴展以滿足需求,同時將成本降至最低。

注意:透過無伺服器方法將AWS服務串連在一起有幾個選項。例如,您可以使用將 Lambda 與 Amazon S3 結合的方法,而不是 Amazon SNS和 Amazon SQS。不過,此模式使用 Amazon SNS和 Amazon,SQS因為此方法可以在事件通知期間將多個整合點新增至 Lambda 調用程序,並擴展實作,以在無伺服器調度中包含多個接聽程式,同時將處理開銷降至最低。

先決條件和限制

先決條件

產品版本

  • AWS CDK 2.x

  • Python 3.9

架構

下圖說明鏈結AWS服務如何讓使用者將檔案上傳到 S3 儲存貯體進行處理。

使用鏈結AWS服務將檔案上傳至 S3 儲存貯體的工作流程。

該圖顯示以下工作流程:

  1. 使用者將檔案上傳至 S3 儲存貯體。

  2. 上傳會啟動將訊息發佈至SNS主題的 S3 事件。訊息包含 S3 事件的詳細資訊。

  3. 發佈至SNS主題的訊息會插入佇列,該SQS佇列會訂閱該主題並接收通知。

  4. Lambda 函數會輪詢SQS佇列 (作為其事件來源),並等待訊息處理。

  5. 當 Lambda 函數從SQS佇列接收訊息時,它會處理它們並確認收到這些訊息。

  6. 如果 Lambda 未處理訊息,則該訊息會傳回佇列SQS,最終會傳輸至SQS無效字母佇列

技術堆疊

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

  • AWS Lambda

工具

AWS 服務

其他工具

  • AWS 雲端開發套件 (AWS CDK) 是與您的AWSCDK應用程式互動的主要工具。它執行您的應用程式、查詢您定義的應用程式模型,以及產生和部署 產生的AWS CloudFormation 範本AWSCDK。

  • AWS Command Line Interface (AWS CLI) 是開放原始碼工具,可協助您透過命令列 Shell 中的命令與 AWS服務互動。

  • Python 是一種高階、解譯的一般用途程式設計語言。

Code

此模式的程式碼可在 GitHub SNS至 Lambda 儲存庫的鏈結 S3 中SQS取得。

史詩

任務描述所需的技能

複製儲存庫。

複製儲存庫並導覽至 python/s3-sns-sqs-lambda-chain 資料夾。

應用程式開發人員

設定虛擬環境。

  1. 在 AWS 中CDK,執行 python3 -m venv .venv命令。

  2. 在 MacOS /Linux 或 Windows .venv\Scripts\activate.bat 上執行 source .venv/bin/activate命令。

應用程式開發人員

安裝依存項目。

執行 pip install -r requirements.txt 命令。

應用程式開發人員
任務描述所需的技能

執行單位測試。

  1. 執行 pip install -r requirements-dev.txt 命令。

  2. (選用) 執行 cdk synth --no-staging > template.yml 命令以產生 CloudFormation 堆疊。重要事項:您可以檢查堆疊,但避免產生暫存資源和成品。

  3. 執行 pytest命令以執行所有單位測試。

  4. (選用) 執行 pytest tests/unit/<test_filename>命令以執行特定檔案的測試。

應用程式開發人員、測試工程師
任務描述所需的技能

設定引導環境。

請遵循AWS文件中 Bootstrapping 中的指示,在要AWSCDK部署 CloudFormation 堆疊的每個AWS區域中引導環境以進行部署。

注意:此步驟需要您擁有具有程式設計存取的憑證。

應用程式開發人員、 DevOps 工程師、資料工程師

部署 CloudFormation 堆疊。

執行 cdk deploy命令,以建置堆疊並將其部署至 AWS帳戶。

應用程式開發人員、 DevOps 工程師、 AWS DevOps
任務描述所需的技能

刪除 CloudFormation 堆疊並移除相關聯的資源。

若要刪除已建立的 CloudFormation 堆疊並移除所有相關資源,請執行run cdk銷毀命令。

應用程式開發人員