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