本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用基礎設施作為程式碼,在 AWS Cloud 上部署和管理無伺服器資料湖
由 Kirankumar Chandrashekar (AWS) 和 Abdel Jaidi (AWS) 建立
環境:生產 | 技術:分析;無伺服器; DevOps | 工作負載:所有其他工作負載 |
AWS 服務:Amazon S3;Amazon SQS;AWS CloudFormationWord;AWS Glue;Amazon CloudWatch;AWS Lambda;AWS Step Functions;Amazon DynamoDB |
Summary
請注意: CodeCommit AWS 不再提供給新客戶。AWS CodeCommit Word 的現有客戶可以繼續正常使用服務。進一步了解
此模式說明如何使用無伺服器運算
SDLF 是可重複使用的資源集合,可加速 AWS Cloud 上企業資料湖的交付,並有助於加快生產部署。它用於遵循最佳實務來實作資料湖的基礎結構。
SDLF 使用 Word、 CodePipelineAWS AWS CodeBuild和 WordWord 等 AWS 服務,在整個程式碼和基礎設施部署中實作持續整合/持續部署 (CI/CD) 程序AWS CodeCommit。
此模式使用多個 AWS 無伺服器服務來簡化資料湖管理。其中包括用於儲存的 Amazon Simple Storage Service (Amazon S3) 和 Amazon DynamoDB、用於計算的 AWS Lambda 和 AWS Glue,以及用於協調的 Amazon CloudWatch Events、Amazon Simple Queue Service (Amazon SQS) 和 AWS Step Functions。
AWS CloudFormation Word 和 AWS 程式碼服務作為 IaC 層,以簡單的操作和管理提供可重複且快速的部署。
先決條件和限制
先決條件
作用中的 AWS 帳戶。
已安裝和設定的 Git 用戶端。
SDLF 研討會
,在 Web 瀏覽器視窗中開啟並準備使用。
架構
架構圖說明事件驅動的程序,步驟如下。
將檔案新增至原始資料 S3 儲存貯體後,Amazon S3 事件通知會放置在 SQS 佇列中。每個通知都會以 JSON 檔案傳送,其中包含中繼資料,例如 S3 儲存貯體名稱、物件金鑰或時間戳記。
此通知由 Lambda 函數使用,該函數會根據中繼資料將事件路由至正確的擷取、轉換和載入 (ETL) 程序。Lambda 函數也可以使用存放在 Amazon DynamoDB 資料表中的內容組態。此步驟可解耦和擴展至資料湖中的多個應用程式。
事件會路由至 ETL 程序中的第一個 Lambda 函數,該函數會將資料從原始資料區域轉換和移動到資料湖的暫存區域。第一步是更新全面型錄。這是 DynamoDB 資料表,其中包含資料湖的所有檔案中繼資料。此資料表中的每個資料列都會保留儲存在 Amazon S3 中單一物件的操作中繼資料。在 S3 物件上,同步呼叫執行輕度轉換的 Lambda 函數,這是運算上不昂貴的操作 (例如將檔案從一種格式轉換為另一種格式)。由於已將新物件新增至預備 S3 儲存貯體,因此會更新完整型錄,並將訊息傳送至 SQS 佇列,等待 ETL 中的下一個階段。
A CloudWatch Events 規則每 5 分鐘觸發一次 Lambda 函數。此函數會檢查訊息是否已從上一個 SQS 階段傳遞到 ETL 佇列。如果訊息已傳遞,Lambda 函數會從 AWS 程序中的 Word Step Functions 開始第二個函數。 ETL
然後,大量轉換會套用至一批檔案。這種繁重的轉換是一種運算昂貴的操作,例如同步呼叫 AWS Glue 任務、AWS Fargate 任務、Amazon EMR 步驟或 Amazon SageMaker 筆記本。資料表中繼資料是使用 AWS Glue 爬蟲程式從輸出檔案中擷取,該爬蟲程式會更新 AWS Glue 目錄。檔案中繼資料也會新增至 DynamoDB 中的綜合型錄資料表。最後,也會執行利用 Deequ
的資料品質步驟。
技術堆疊
Amazon CloudWatch 事件
AWS CloudFormation
AWS CodePipeline
AWS CodeBuild
AWS CodeCommit
Amazon DynamoDB
AWS Glue
AWS Lambda
Amazon S3
Amazon SQS
AWS Step Functions
工具
Amazon CloudWatch Events – CloudWatch Events 提供近乎即時的系統事件串流,描述 AWS 資源的變更。
CloudFormationAWS – CloudFormation 有助於可預測且重複地建立和佈建 AWS 基礎設施部署。
CodeBuildAWS – CodeBuild 是完全受管的建置服務,可編譯原始程式碼、執行單位測試,並產生準備好部署的成品。
CodeCommitAWS – CodeCommit 是由 AWS 託管的版本控制服務,可用於私下存放和管理資產 (例如原始程式碼和二進位檔案)。
CodePipelineAWS – CodePipeline 是一種持續交付服務,您可以用來建立模型、視覺化和自動化持續發行軟體變更所需的步驟。
Amazon DynamoDB – DynamoDB 是完全受管的 NoSQL 資料庫服務,可提供快速且可預測的效能和可擴展性。
AWS Glue – AWS Glue 是完全受管的 ETL 服務,可讓您更輕鬆地準備和載入資料以供分析。
AWS Lambda – Lambda 支援執行程式碼,無需佈建或管理伺服器。Lambda 只有在需要時才會執行程式碼,可自動從每天數項請求擴展成每秒數千項請求。
Amazon S3 – Amazon Simple Storage Service (Amazon S3) 是一種高度可擴展的物件儲存服務。Amazon S3 可用於各種儲存解決方案,包括網站、行動應用程式、備份和資料湖。
AWS Step Functions - AWS Step Functions 是無伺服器函數協調工具,可讓您輕鬆將 AWS Lambda 函數和多個 AWS 服務排序到業務關鍵應用程式中。
Amazon SQS – Amazon Simple Queue Service (Amazon SQS) 是全受管訊息佇列服務,可協助您解耦和擴展微服務、分散式系統和無伺服器應用程式。
Deequ
– Deequ 是一項工具,可協助您運算大型資料集的資料品質指標、定義和驗證資料品質限制,並隨時掌握資料分佈中的變化。
程式碼儲存庫
SDLF Labs GitHub 儲存庫中提供 AWS
Epics
任務 | 描述 | 所需的技能 |
---|---|---|
設定 CI/CD 管道來管理資料湖的 IaC。 | 登入 AWS 管理主控台,並遵循 SDLF 研討會初始設定 | DevOps 工程師 |
任務 | 描述 | 所需的技能 |
---|---|---|
在本機電腦上複製 CodeCommit 儲存庫。 | 請遵循 SDLF 研討會部署基礎 如需詳細資訊,請參閱從 CodeCommit 文件連線至 Word 儲存庫。 CodeCommit | DevOps 工程師 |
修改 CloudFormation 範本。 | 使用本機工作站和程式碼編輯器,根據您的使用案例或需求修改 CloudFormation 範本。將它們遞交至本機複製的 Git 儲存庫。 如需詳細資訊,請參閱 AWS CloudFormation Word 文件中的使用 AWS CloudFormation Word 範本。 | DevOps 工程師 |
將變更推送至 CodeCommit 儲存庫。 | 您的基礎設施程式碼現在受到版本控制,並會追蹤對程式碼基礎的修改。當您將變更推送至 CodeCommit 儲存庫時, CodePipeline 會自動將其套用至您的基礎設施,並將其交付至 CodeBuild。 重要:如果您使用 AWS SAM CLI in CodeBuild,請執行 | DevOps 工程師 |
相關資源
設定 CI/CD 管道以佈建 IaC
版本控制 IaC
其他資源