使用基礎結構即程式碼在AWS雲端部署和管理無伺服器資料湖 - AWS 方案指引

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

使用基礎結構即程式碼在AWS雲端部署和管理無伺服器資料湖

創建者基蘭庫馬爾錢德拉什卡爾 () 和阿卜杜勒·海迪 () AWS AWS

環境:生產

技術: DataLakes; 分析; 無服務器; DevOps

工作負載:所有其他工作

AWS服務:Amazon S3; AmazonSQS; AWS Glue AWS CloudFormation; Amazon; AWS Lambda CloudWatch; AWS Step Functions; Amazon DynamoDB

Summary

此模式說明如何使用無伺服器運算基礎設施即程式碼 (IaC) 在 Amazon Web Services (AWS) 雲端上實作和管理資料湖。此模式是根據由AWS開發的無伺服器資料湖架構 (SDLF) 研討會為基礎。

SDLF是可重複使用的資源集合,可加速AWS雲端上企業資料湖的交付速度,並協助更快地部署到生產環境。它是用來通過遵循最佳實踐來實現數據湖的基礎結構。

SDLF透過使用AWS CodePipeline、AWS CodeBuild和等AWS服務,在整個程式碼和基礎結構部署中,實作持續整合/持續部署 (CI/CD) 程序。AWS CodeCommit

此病毒碼使用多個AWS無伺服器服務來簡化資料湖管理。其中包括用於儲存的 Amazon 簡單儲存服務 (Amazon S3) 和 Amazon DynamoDB、用於運算的 AWS Lambda 和 AWS Glue,以及 Amazon CloudWatch 活動、亞馬遜簡單佇列服務 (AmazonSQS) 以及用於協調的 AWS Step Functions。

AWS CloudFormation 和AWS程式碼服務充當 IaC 層,提供可重複且快速的部署,並具有輕鬆的操作和管理。

先決條件和限制

先決條件

架構

架構圖說明了事件驅動的過程,其中包含以下步驟。 

在AWS雲端上實作和管理資料湖。
  1. 將檔案新增至原始資料 S3 儲存貯體後,Amazon S3 事件通知會放置在SQS佇列中。每個通知都以JSON檔案形式傳送,其中包含 S3 儲存貯體名稱、物件金鑰或時間戳記等中繼資料。

  2. Lambda 函數會使用此通知,該函數會根據中繼資料將事件路由至正確的擷取、轉換和載入 (ETL) 程序。Lambda 函數也可以使用儲存在 Amazon DynamoDB 表格中的關聯式組態。此步驟可讓資料湖中的多個應用程式進行解耦和擴充。

  3. 事件會路由至ETL程序中的第一個 Lambda 函數,該函數會將資料從原始資料區域轉換並移動到資料湖的暫存區域。第一步是更新綜合目錄。這是一個 DynamoDB 表格,其中包含資料湖的所有檔案中繼資料。此表中的每一列都包含存放在 Amazon S3 中之單一物件的操作中繼資料。對 Lambda 函數進行同步呼叫,該函數在 S3 物件上執行輕度轉換是一種經濟實惠的作業 (例如,將檔案從一種格式轉換為另一種格式)。由於已將新物件新增至暫存 S3 儲存貯體,因此會更新完整型錄,並將訊息傳送至SQS佇列,等待中的下一個階段ETL。

  4. CloudWatch 事件規則每 5 分鐘觸發一個 Lambda 函數。此功能檢查消息是否從上一ETL階段傳遞到SQS隊列。如果已傳遞訊息,Lambda 函數會從ETL程序中的 AWSStep Functions 數開始第二個函數。

  5. 然後在一批文件上應用繁重的轉換。這種繁重的轉型是一項運算成本高昂的作業,例如同步呼叫 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

  • AWSLambda

  • Amazon S3

  • Amazon SQS

  • AWS Step Functions

工具

  • Amazon E CloudWatch vents — CloudWatch 活動提供近乎即時的系統事件串流,用於描述AWS資源變更。

  • AWS CloudFormation— CloudFormation 可預測且重複地協助建立和佈建AWS基礎結構部署。

  • AWS CodeBuild— CodeBuild 是一種完全託管的構建服務,可編譯您的源代碼,運行單元測試並生成可以部署的成品。

  • AWS CodeCommit— CodeCommit 是由託管的版本控制服務AWS,您可以使用它來私人存儲和管理資產(例如源代碼和二進制文件)。

  • AWS CodePipeline— CodePipeline 是一種持續交付服務,您可以使用它來建模,可視化和自動化持續發布軟件更改所需的步驟。

  • Amazon DynamoDB — Dynamo DB 是全受管的無SQL資料庫服務,可提供快速且可預測的效能以及可擴展性。 

  • AWSGlue — AWS Glue 是一項全受管ETL服務,可讓您更輕鬆地準備和載入資料以進行分析。

  • AWSLambda — Lambda 支援執行程式碼,無需佈建或管理伺服器 Lambda 只有在需要時才會執行程式碼,可自動從每天數項請求擴展成每秒數千項請求。 

  • Amazon S3 — 亞馬遜簡單儲存服務 (Amazon S3) 是可高度擴展的物件儲存服務。Amazon S3 可用於各種儲存解決方案,包括網站、行動應用程式、備份和資料湖。

  • AWSStep Functions-AWS Step Functions 是無伺服器函數協調器,可讓您輕鬆將 AWS Lambda 函數和多項AWS服務排序為關鍵業務應用程式。

  • Amazon SQS — Amazon 簡單佇列服務 (AmazonSQS) 是全受管訊息佇列服務,可協助您分離和擴展微型服務、分散式系統和無伺服器應用程式。

  • Deequ — Deequ 是一種工具,可協助您計算大型資料集的資料品質指標、定義和驗證資料品質限制,並隨時掌握資料分佈變更的通知。

代碼存儲庫

的原始程式碼和資源可SDLF在 AWSLabs GitHub 儲存庫中取得。

史诗

任務描述所需技能

設定 CI/CD 管線以管理資料湖的 IaC。

登入AWS管理主控台,並依照研討會「初始設定」區段中的步驟操SDLF作。這會建立初始的 CI/CD 資源,例如為資料湖佈建和 CodePipeline 管理 IaC 的 CodeCommit 儲存庫、 CodeBuild 環境和管道。

DevOps 工程師
任務描述所需技能

複製本機電腦上的 CodeCommit 存放庫。

按照研討會部署基礎部分中的步驟進行操SDLF作。這可協助您將裝載 IaC 的 Git 儲存庫複製到您的本機環境中。 

如需詳細資訊,請參閱 CodeCommit 文件中的連線至 CodeCommit 儲存庫

DevOps 工程師

修改 CloudFormation 範本。

使用本機工作站和程式碼編輯器,根據您的使用案例或需求修改 CloudFormation 範本。將它們提交到本地克隆的 Git 存儲庫。 

如需詳細資訊,請參閱使用AWS CloudFormation 文件中的AWS CloudFormation 範本

DevOps 工程師

將更改推送到存 CodeCommit 儲庫。

您的基礎結構代碼現在受到版本控制,並跟踪對代碼庫的修改。當您將變更推送至 CodeCommit 儲存庫時, CodePipeline 會自動將其套用至您的基礎結構,並將其傳遞至 CodeBuild。 

重要事項:如果您使用 AWS SAM CLI in CodeBuild,請執行sam packagesam deploy命令。如果您使用 AWSCLI,請執行aws cloudformation packageaws cloudformation deploy指令。

DevOps 工程師

相關資源

設定 CI/CD 管線以佈建 IAC

版本控制 IAC

其他資源