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